def gen_lib_module()

in uberpoet/cpprojectgen.py [0:0]


    def gen_lib_module(self, module_index, module_node, loc_per_unit, language):
        # Make Podspec Text
        deps = self.make_dep_list([i.name for i in module_node.deps])
        pod_text = self.pod_lib_template.format(module_node.name, deps, self.wmo_state)
        # We now return a topologically sorted list of the graph which means that we will already have the
        # deps of a module inside the module index before we process this one.  This allows us to reach into
        # the generated sources for the dependencies in order to create an instance of their class and
        # invoke their functions.
        deps_from_index = [{n.name: module_index[n.name]} for n in module_node.deps]

        # Make Text
        if language == Language.SWIFT:
            file_count = (
                max(self.swift_file_size_loc, loc_per_unit) * module_node.code_units) / self.swift_file_size_loc
            if file_count < 1:
                raise ValueError(
                    "Lines of code count is too small for the module {} to fit one file, increase it.".format(
                        module_node.name))
            files = {
                "File{}.swift".format(i): self.swift_gen.gen_file(3, 3, deps_from_index) for i in xrange(file_count)
            }
        elif language == Language.OBJC:
            file_count = (max(self.objc_file_size_loc, loc_per_unit) * module_node.code_units) / self.objc_file_size_loc
            if file_count < 1:
                raise ValueError(
                    "Lines of code count is too small for the module {} to fit one file, increase it.".format(
                        module_node.name))
            files = {}
            for i in xrange(file_count):
                objc_source_file = self.objc_source_gen.gen_file(
                    3, 3, import_list=deps_from_index + ['File{}.h'.format(i)])
                files["File{}.m".format(i)] = objc_source_file
                files["File{}.h".format(i)] = self.objc_header_gen.gen_file(objc_source_file)

        # Make Module Directories
        module_dir_path = join(self.app_root, module_node.name)
        files_dir_path = join(module_dir_path, "Sources")
        makedir(module_dir_path)
        makedir(files_dir_path)

        # Write podspec File
        pod_path = join(module_dir_path, "{0}.podspec".format(module_node.name))
        self.write_file(pod_path, pod_text)

        # Write Swift Files
        for file_name, file_obj in files.iteritems():
            file_path = join(files_dir_path, file_name)
            self.write_file(file_path, file_obj.text)
            file_obj.text = ""  # Save memory after write

        module_node.extra_info = files

        return files