|
|
|
class CompilationCallbackHandler: |
|
def __init__(self): |
|
self.start_callbacks = [] |
|
self.end_callbacks = [] |
|
|
|
def register_start_callback(self, callback): |
|
""" |
|
Register a callback function to be called when the compilation starts. |
|
|
|
Args: |
|
- callback (callable): The callback function to register. |
|
""" |
|
self.start_callbacks.append(callback) |
|
return callback |
|
|
|
def register_end_callback(self, callback): |
|
""" |
|
Register a callback function to be called when the compilation ends. |
|
|
|
Args: |
|
- callback (callable): The callback function to register. |
|
""" |
|
self.end_callbacks.append(callback) |
|
return callback |
|
|
|
def remove_start_callback(self, callback): |
|
""" |
|
Remove a registered start callback function. |
|
|
|
Args: |
|
- callback (callable): The callback function to remove. |
|
""" |
|
self.start_callbacks.remove(callback) |
|
|
|
def remove_end_callback(self, callback): |
|
""" |
|
Remove a registered end callback function. |
|
|
|
Args: |
|
- callback (callable): The callback function to remove. |
|
""" |
|
self.end_callbacks.remove(callback) |
|
|
|
def run_start_callbacks(self): |
|
""" |
|
Execute all registered start callbacks. |
|
""" |
|
for callback in self.start_callbacks: |
|
callback() |
|
|
|
def run_end_callbacks(self): |
|
""" |
|
Execute all registered end callbacks. |
|
""" |
|
for callback in self.end_callbacks: |
|
callback() |
|
|
|
def clear(self): |
|
""" |
|
Clear all registered callbacks. |
|
""" |
|
self.start_callbacks.clear() |
|
self.end_callbacks.clear() |
|
|
|
|
|
callback_handler = CompilationCallbackHandler() |
|
|
|
|
|
def on_compile_start(callback): |
|
""" |
|
Decorator to register a callback function for the start of the compilation. |
|
""" |
|
callback_handler.register_start_callback(callback) |
|
return callback |
|
|
|
|
|
def on_compile_end(callback): |
|
""" |
|
Decorator to register a callback function for the end of the compilation. |
|
""" |
|
callback_handler.register_end_callback(callback) |
|
return callback |
|
|