55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
import warnings
|
|
import sys
|
|
import os
|
|
import pybindgen.settings
|
|
from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
|
|
import ns3modulegen_core_customizations
|
|
|
|
class ErrorHandler(pybindgen.settings.ErrorHandler):
|
|
def handle_error(self, wrapper, exception, traceback_):
|
|
warnings.warn("exception %r in wrapper %s" % (exception, wrapper))
|
|
return True
|
|
pybindgen.settings.error_handler = ErrorHandler()
|
|
|
|
|
|
|
|
|
|
def main(argv):
|
|
assert len(argv) == 3
|
|
module_abs_src_path, target = argv[1], argv[2]
|
|
module_name = os.path.basename(module_abs_src_path)
|
|
|
|
sys.path.insert(0, os.path.join(module_abs_src_path, "bindings"))
|
|
try:
|
|
module_apidefs = __import__("modulegen__%s" % target)
|
|
del sys.modules["modulegen__%s" % target]
|
|
try:
|
|
module_customization = __import__("modulegen_local")
|
|
del sys.modules["modulegen_local"]
|
|
except ImportError:
|
|
module_customization = None
|
|
finally:
|
|
sys.path.pop(0)
|
|
|
|
out = FileCodeSink(sys.stdout)
|
|
root_module = module_apidefs.module_init()
|
|
root_module.add_include('"ns3/%s-module.h"' % module_name)
|
|
module_apidefs.register_types(root_module)
|
|
|
|
module_apidefs.register_methods(root_module)
|
|
module_apidefs.register_functions(root_module)
|
|
|
|
ns3modulegen_core_customizations.Object_customizations(root_module)
|
|
ns3modulegen_core_customizations.Attribute_customizations(root_module)
|
|
|
|
if module_customization is not None:
|
|
module_customization.customize(root_module)
|
|
|
|
root_module.generate(out)
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
main(sys.argv)
|
|
|
|
|