40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from ScEpTIC.config.base_config import ScEpTICBaseConfig
|
|
|
|
|
|
class ProgramConfig(ScEpTICBaseConfig):
|
|
"""
|
|
Program configuration
|
|
"""
|
|
|
|
_config_domain = {
|
|
'ir_function_prefix': {'class': str, 'mode': 'set'},
|
|
'main_function_name': {'class': str, 'mode': 'set'},
|
|
'file': {'class': str, 'mode': 'set'}
|
|
}
|
|
|
|
def __init__(self, main_config):
|
|
super().__init__(main_config)
|
|
|
|
# LLVM main function name
|
|
self.ir_function_prefix = '@'
|
|
|
|
# Main
|
|
self.main_function_name = f"{self.ir_function_prefix}main"
|
|
|
|
# File name
|
|
self.file = 'source.ll'
|
|
|
|
self._register_config_callback("ir_function_prefix", self._append_prefix_callback)
|
|
self._register_config_callback("main_function_name", self._append_prefix_callback)
|
|
|
|
|
|
def _append_prefix_callback(self, config_name, config_value):
|
|
"""
|
|
Callback to append prefix to function names
|
|
:param config_name: the configuration name
|
|
:param config_value: the configuration value
|
|
"""
|
|
if self.main_function_name[0] != self.ir_function_prefix:
|
|
self.main_function_name = f"{self.ir_function_prefix}{self.main_function_name}"
|
|
|
|
self._main_config.state_retention._append_prefix_callback(config_name, config_value) |