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)
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)
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)
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'))
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'))
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)
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))
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))