Exemple #1
0
    def __merge_user_code(self):
        for code in self.module_code_tail:
            self.code_creator.adopt_creator(code_creators.custom_text_t(code))

        for code in self.module_code_head:
            self.code_creator.adopt_creator(code_creators.custom_text_t(code),
                                            0)
Exemple #2
0
    def __merge_user_code(self):
        for code in self.__declarations_code_tail:
            self.code_creator.add_declaration_code(code, -1)

        for code in self.__declarations_code_head:
            self.code_creator.add_declaration_code(code, 0)

        body = self.code_creator.body

        for code in self.__registrations_code_tail:
            body.adopt_creator(code_creators.custom_text_t(code), -1)

        for code in self.__registrations_code_head:
            body.adopt_creator(code_creators.custom_text_t(code), 0)
Exemple #3
0
    def __merge_user_code( self ):
        for code in self.__declarations_code_tail:
            self.code_creator.add_declaration_code( code, -1 )

        for code in self.__declarations_code_head:
            self.code_creator.add_declaration_code( code, 0 )

        body = self.code_creator.body

        for code in self.__registrations_code_tail:
            body.adopt_creator( code_creators.custom_text_t( code ), -1 )

        for code in self.__registrations_code_head:
            body.adopt_creator( code_creators.custom_text_t( code ), 0 )
Exemple #4
0
    def split_creators( self, creators, pattern, function_name, registrator_pos ):
        """Write non-class creators into a particular .h/.cpp file.

        :param creators: The code creators that should be written
        :type creators: list of :class:`code_creators.code_creator_t`

        :param pattern: Name pattern that is used for constructing the final output file name
        :type pattern: str

        :param function_name: "register" function name
        :type function_name: str

        :param registrator_pos: The position of the code creator that creates the code to invoke the "register" function.
        :type registrator_pos: int
        """
        if not creators:
            return
        file_pattern = self.extmodule.body.name + pattern
        file_path = os.path.join( self.directory_path, file_pattern )
        header_name = file_path + self.HEADER_EXT
        self.write_file( header_name
                         , self.create_header( file_pattern, self.create_function_code( function_name ) ) )
        self.write_file( file_path + self.SOURCE_EXT
                         , self.create_source( file_pattern, function_name, creators ))

        for creator in creators:
            creator.create = lambda: ''
        self.extmodule.body.adopt_creator(
            code_creators.custom_text_t( function_name + '();' )
            , registrator_pos)
        self.include_creators.append( code_creators.include_t( header_name ) )
        self.split_header_names.append(header_name)
        self.split_method_names.append(function_name)
Exemple #5
0
    def split_creators(self, creators, pattern, function_name,
                       registrator_pos):
        """Write non-class creators into a particular .h/.cpp file.

        :param creators: The code creators that should be written
        :type creators: list of :class:`code_creators.code_creator_t`

        :param pattern: Name pattern that is used for constructing the final output file name
        :type pattern: str

        :param function_name: "register" function name
        :type function_name: str

        :param registrator_pos: The position of the code creator that creates the code to invoke the "register" function.
        :type registrator_pos: int
        """
        if not creators:
            return
        file_pattern = self.extmodule.body.name + pattern
        file_path = os.path.join(self.directory_path, file_pattern)
        header_name = file_path + self.HEADER_EXT
        self.write_file(
            header_name,
            self.create_header(file_pattern,
                               self.create_function_code(function_name)))
        self.write_file(
            file_path + self.SOURCE_EXT,
            self.create_source(file_pattern, function_name, creators))

        for creator in creators:
            creator.create = lambda: ''
        self.extmodule.body.adopt_creator(
            code_creators.custom_text_t(function_name + '();'),
            registrator_pos)
        self.include_creators.append(code_creators.include_t(header_name))
        self.split_header_names.append(header_name)
        self.split_method_names.append(function_name)
Exemple #6
0
 def create_explanation(cls):
     msg = '//WARNING: the next line of code will not compile, because "%s" does not have operator== !'
     msg = msg % cls.indexing_suite.element_type.decl_string
     return code_creators.custom_text_t(msg, False)
Exemple #7
0
 def create_explanation(cls):
     msg = '//WARNING: the next line of code will not compile, because "%s" does not have operator== !'
     msg = msg % cls.indexing_suite.element_type.decl_string
     return code_creators.custom_text_t( msg, False )
Exemple #8
0
    def __merge_user_code( self ):
        for code in self.module_code_tail:
            self.code_creator.adopt_creator( code_creators.custom_text_t( code ) )

        for code in self.module_code_head:
            self.code_creator.adopt_creator( code_creators.custom_text_t( code ), 0 )