Example #1
0
    def export(self, importer, path):
        self.setup(importer)

        block = SourceBlock('extern "C" {')
        block.add_block(self.export_namespace(importer.root_namespace))
        block.add_line("}")

        with open(path, 'w') as f:
            f.write(block.as_text())
Example #2
0
    def export(self, importer, path):
        self.setup(importer)

        block = SourceBlock()
        includes = self.get_includes()
        if includes:
            block.add_line('%s\n\n' % includes)
        block.add_block(self.export_namespace(importer.root_namespace))

        with open(path, 'w') as f:
            f.write(block.as_text())
Example #3
0
def export_module(mod, base_dir):
    is_pkg = isinstance(mod, Package)
    name = mod.name if not is_pkg else "__init__"

    blocks = []

    block = SourceBlock()
    block.add_line("from __future__ import absolute_import")
    block.add_line("import ctypes")
    block.add_line("import functools")
    block.add_line("import wrappyr.runtime")
    blocks.append(block)

    if mod.libraries:
        block = SourceBlock()
        block.add_line("_libraries = {")
        for lib in mod.libraries.values():
            block.add_line("'%s': ctypes.CDLL('%s')," % (lib.name, lib.path), 1)
        block.add_line("}")
        blocks.append(block)

    classes = sorted(mod.every_class(), key=cmp_to_key(sort_classes))
    for cls in classes:
        blocks.append(export_class(cls))

    functions = mod.every_function()
    for f in functions:
        blocks.append(export_function(f))

    for cls in classes:
        blocks.append(export_class_setup(cls))
    for f in functions:
        blocks.append(export_function_setup(f))

    block = SourceBlock("").join(blocks)
    with open(os.path.join(base_dir, "%s.py" % name), "w") as f:
        f.write(block.as_text())