Commit 534c9f50 authored by Yuki Shiino's avatar Yuki Shiino Committed by Commit Bot

bind-gen: Support accumulation of include headers on demands in CodeNode

Bug: 839389
Change-Id: Ibb15a1d8d27474d0b46af42525958758cc4ac85c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1906850
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: default avatarHitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714151}
parent 34e7a6c7
......@@ -144,6 +144,7 @@ class CodeNode(object):
self._template_vars = {}
self._accumulator = None # CodeGenAccumulator
self._accumulate_requests = []
self._renderer = None # MakoRenderer
......@@ -179,6 +180,11 @@ class CodeNode(object):
finally:
self._is_rendering = False
if self._accumulate_requests:
assert self.accumulator
for request in self._accumulate_requests:
request(self.accumulator)
return text
def _render(self, renderer, last_render_state):
......@@ -286,6 +292,14 @@ class CodeNode(object):
assert self._accumulator is None
self._accumulator = accumulator
def accumulate(self, request):
"""
While rendering the code node, |request| will be called with the
argument of self.accumulator.
"""
assert callable(request)
self._accumulate_requests.append(request)
@property
def renderer(self):
# Always use the renderer of the root node in order not to mix renderers
......
......@@ -25,6 +25,10 @@ class CodeGenAccumulator(object):
def add_include_headers(self, headers):
self._include_headers.update(headers)
@staticmethod
def require_include_headers(headers):
return lambda accumulator: accumulator.add_include_headers(headers)
@property
def class_decls(self):
return self._class_decls
......@@ -34,3 +38,7 @@ class CodeGenAccumulator(object):
def add_class_decls(self, class_names):
self._class_decls.update(class_names)
@staticmethod
def require_class_decls(class_names):
return lambda accumulator: accumulator.add_class_decls(class_names)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment