示例#1
0
 def _add_presence_parent_stmt(self, clazz):
     """Add presence container's parent pointer for C++ tests.
     In Python side, parent assignment is taken care of by glue code.
     """
     parent = self._get_element_path(clazz.owner)
     name = get_obj_name(clazz)
     path = self.path_sep.join([name, 'parent'])
     self.stmts.add_presence_parent(path, parent)
示例#2
0
 def _add_presence_parent_stmt(self, clazz):
     """Add presence container's parent pointer for C++ tests.
     In Python side, parent assignment is taken care of by glue code.
     """
     parent = self._get_element_path(clazz.owner)
     name = get_obj_name(clazz)
     path = self.path_sep.join([name, 'parent'])
     self.stmts.add_presence_parent(path, parent)
示例#3
0
 def _add_assignment_stmt(self, element):
     """Add assignment statements."""
     ptype = self._get_element_ptype(element)
     path = self._get_element_path(element)
     if path not in self.stmts.declaration_stmts:
         obj_name = get_obj_name(ptype)
         if is_class_element(ptype):
             obj_name = obj_name
         self.stmts.add_assignment(path, obj_name)
示例#4
0
 def _add_assignment_stmt(self, element):
     """Add assignment statements."""
     ptype = self._get_element_ptype(element)
     path = self._get_element_path(element)
     if path not in self.stmts.declaration_stmts:
         obj_name = get_obj_name(ptype)
         if is_class_element(ptype):
             obj_name = obj_name
         self.stmts.add_assignment(path, obj_name)
示例#5
0
    def _add_declaration_stmt(self, element):
        """Add declaration statements."""
        obj_name = get_obj_name(element)

        if isinstance(element, (atypes.Bits, atypes.Class)):
            value = get_qn(self.lang, element)
            self.stmts.add_declaration(obj_name, value)
        else:
            # add dec stmt for bits value
            value = self._get_value(element)
            self.stmts.add_assignment(obj_name, value)
            if isinstance(value, BitsValue):
                value = value.type_spec
                self.stmts.add_declaration(obj_name, value)
示例#6
0
    def _add_declaration_stmt(self, element):
        """Add declaration statements."""
        obj_name = get_obj_name(element)

        if isinstance(element, (atypes.Bits, atypes.Class)):
            value = get_qn(self.lang, element)
            self.stmts.add_declaration(obj_name, value)
        else:
            # add dec stmt for bits value
            value = self._get_value(element)
            self.stmts.add_assignment(obj_name, value)
            if isinstance(value, BitsValue):
                value = value.type_spec
                self.stmts.add_declaration(obj_name, value)
示例#7
0
    def _print_crud_read_stmts(self, top_class):
        top_obj_name = get_obj_name(top_class)
        read_obj_name = '{}_read'.format(top_obj_name)
        filter_obj_name = '{}_filter'.format(top_obj_name)
        qn = get_qn(self.lang, top_class)
        self._print_logging('Reading {}...'.format(top_obj_name))
        self._write_end(self.declaration_fmt.format(filter_obj_name, qn))

        fmt = self._get_crud_fmt('read')
        stmt = fmt.format(filter_obj_name)
        fmt = self.read_ret_fmt
        if self.lang == 'py':
            self._write_end(fmt.format(read_obj_name, stmt))
        elif self.lang == 'cpp':
            self._write_end('auto read_unique_ptr = {}'.format(stmt))
            self._write_end('CHECK( read_unique_ptr != nullptr)')
            self._write_end(fmt.format(read_obj_name, qn, 'read_unique_ptr'))
示例#8
0
    def _print_crud_read_stmts(self, top_class):
        top_obj_name = get_obj_name(top_class)
        read_obj_name = '{}_read'.format(top_obj_name)
        filter_obj_name = '{}_filter'.format(top_obj_name)
        qn = get_qn(self.lang, top_class)
        self._print_logging('Reading {}...'.format(top_obj_name))
        self._write_end(self.declaration_fmt.format(filter_obj_name, qn))

        fmt = self._get_crud_fmt('read')
        stmt = fmt.format(filter_obj_name)
        fmt = self.read_ret_fmt
        if self.lang == 'py':
            self._write_end(fmt.format(read_obj_name, stmt))
        elif self.lang == 'cpp':
            self._write_end('auto read_shared_ptr = {}'.format(stmt))
            self._write_end('CHECK( read_shared_ptr != nullptr)')
            self._write_end(fmt.format(read_obj_name, qn, 'read_shared_ptr'))
示例#9
0
 def _add_append_stmt(self, element):
     """Add list append statements."""
     path = self._get_element_path(element)
     obj_name = get_obj_name(element)
     self.stmts.add_append(path, obj_name)
示例#10
0
 def _print_crud_delete_stmts(self, clazz):
     top_class = get_top_class(clazz)
     top_obj_name = get_obj_name(top_class)
     fmt = self._get_crud_fmt('delete')
     self._print_logging('Deleting {}...'.format(top_obj_name))
     self._write_end(fmt.format(top_obj_name))
示例#11
0
 def _print_crud_create_stmts(self, top_class):
     top_obj_name = get_obj_name(top_class)
     self._print_logging('Creating {}...'.format(top_obj_name))
     fmt = self._get_crud_fmt('create')
     self._write_end(fmt.format(top_obj_name))
示例#12
0
 def _add_append_stmt(self, element):
     """Add list append statements."""
     path = self._get_element_path(element)
     obj_name = get_obj_name(element)
     self.stmts.add_append(path, obj_name)
示例#13
0
 def _print_crud_delete_stmts(self, clazz):
     top_class = get_top_class(clazz)
     top_obj_name = get_obj_name(top_class)
     fmt = self._get_crud_fmt('delete')
     self._print_logging('Deleting {}...'.format(top_obj_name))
     self._write_end(fmt.format(top_obj_name))
示例#14
0
 def _print_crud_create_stmts(self, top_class):
     top_obj_name = get_obj_name(top_class)
     self._print_logging('Creating {}...'.format(top_obj_name))
     fmt = self._get_crud_fmt('create')
     self._write_end(fmt.format(top_obj_name))