def pre(self, formatter): args = self._type.get_canonical().get_pointee().argument_types() lambda_args = ', '.join(to_cc(subtype, name='x_lambda_'+str(i)) for i, subtype in enumerate(args)) formatter.write(""" %s = [](%s) { deleteWrappedNode(x_lambda_%s); }; """ % (self.cc_prefix, lambda_args, self._context))
def pre(self, formatter): args = self._type.get_canonical().get_pointee().argument_types() lambda_args = ', '.join(to_cc(subtype, name='x_lambda_'+str(i)) for i, subtype in enumerate(args)) formatter.write(""" {0} = []({1}) {{ WrappedNode::destroy(x_lambda_{2}); }}; """.format(self.cc_prefix, lambda_args, self._context))
def pre(self, formatter): args = self._type.get_canonical().get_pointee().argument_types() lambda_args = ', '.join( to_cc(subtype, name='x_lambda_' + str(i)) for i, subtype in enumerate(args)) formatter.write(""" %s = [](%s) { deleteWrappedNode(x_lambda_%s); }; """ % (self.cc_prefix, lambda_args, self._context))
def pre(self, formatter): formatter.write(""" std::remove_cv<{t}>::type {u}; unbuild(vm, {oz}, {u}); {cc} = &{u}; """.format( t=to_cc(self._type.get_pointee()), u=unique_str(), oz=self.oz_in_name, cc=self.cc_prefix ))
def pre(self, formatter): formatter.write(""" std::remove_cv<%(t)s>::type %(u)s; unbuild(vm, %(oz)s, %(u)s); %(cc)s = &%(u)s; """ % { 't': to_cc(self._type.get_pointee()), 'u': unique_str(), 'cc': self.cc_prefix, 'oz': self.oz_in_name, })
def pre(self, formatter): formatter.write( """ std::remove_cv<%(t)s>::type %(u)s; unbuild(vm, %(oz)s, %(u)s); %(cc)s = &%(u)s; """ % { 't': to_cc(self._type.get_pointee()), 'u': unique_str(), 'cc': self.cc_prefix, 'oz': self.oz_in_name, })
def pre(self, formatter): formatter.write(""" std::vector<std::remove_cv<{t}>::type> {u}; ozListForEach(vm, {oz}, [vm, &{u}](UnstableNode& node) {{ std::remove_cv<{t}>::type content; unbuild(vm, node, content); {u}.push_back(std::move(content)); }}, MOZART_STR("{t}")); {cc} = {u}.data(); auto {l} = {u}.size(); """.format( u=unique_str(), t=to_cc(self._type.get_pointee()), oz=self.oz_in_name, cc=self.cc_prefix, l=cc_name_of(self._context) ))
def _decode_argument(args_dict, arg_name, default, typ, constants): arg_tuple = None try: arg_tuple = args_dict[arg_name] except KeyError: if arg_name == 'return': type_name = to_cc(typ.get_pointee()) arg_tuple = constants.SPECIAL_ARGUMENTS_FOR_RETURN_TYPES.get(type_name) if arg_tuple is None: type_name = to_cc(typ) arg_tuple = constants.SPECIAL_ARGUMENTS_FOR_TYPES.get(type_name, default) if isinstance(arg_tuple, type): inout = arg_tuple context = None else: (inout, context) = arg_tuple arg = inout() arg._context = context arg._name = arg_name arg._type = typ return arg
def pre(self, formatter): formatter.write(""" std::vector<std::remove_cv<%(t)s>::type> %(u)s; ozListForEach(vm, %(oz)s, [vm, &%(u)s](UnstableNode& node) { std::remove_cv<%(t)s>::type content; unbuild(vm, node, content); %(u)s.push_back(std::move(content)); }, MOZART_STR("%(t)s")); %(cc)s = %(u)s.data(); auto %(len)s = %(u)s.size(); """ % { 'u': unique_str(), 't': to_cc(self._type.get_pointee()), 'oz': self.oz_in_name, 'cc': self.cc_prefix, 'len': cc_name_of(self._context), })
def pre(self, formatter): formatter.write( """ std::vector<std::remove_cv<%(t)s>::type> %(u)s; ozListForEach(vm, %(oz)s, [vm, &%(u)s](UnstableNode& node) { std::remove_cv<%(t)s>::type content; unbuild(vm, node, content); %(u)s.push_back(std::move(content)); }, MOZART_STR("%(t)s")); %(cc)s = %(u)s.data(); auto %(len)s = %(u)s.size(); """ % { 'u': unique_str(), 't': to_cc(self._type.get_pointee()), 'oz': self.oz_in_name, 'cc': self.cc_prefix, 'len': cc_name_of(self._context), })
def decode_inout(arg_name, default, typ): inout_tuple = default try: inout_tuple = inouts[arg_name] except KeyError: type_name = to_cc(typ) inout_tuple = SPECIAL_INOUTS_FOR_TYPES.get(type_name, default) if isinstance(inout_tuple, str): inout = inout_tuple context = None else: (inout, context) = inout_tuple creator = getattr(creators, inout + 'StatementsCreator')() creator._context = context creator._name = arg_name creator._type = typ return creator
def pre(self, formatter): formatter.write(""" {0} = reinterpret_cast<{1}>(IntegerValue({2}).intValue(vm)); """.format(self.cc_prefix, to_cc(self._type), self.oz_in_name))
def pre(self, formatter): formatter.write(""" %s = reinterpret_cast<%s>(IntegerValue(%s).intValue(vm)); """ % (self.cc_prefix, to_cc(self._type), self.oz_in_name))
def pre(self, formatter): cc_complete_name = unique_str() cc_decl = to_cc(self._type.get_pointee(), cc_complete_name) formatter.write(cc_decl + ' {};') formatter.write(self.cc_prefix + ' = &' + cc_complete_name + ';')
def pre(self, formatter): if self._with_declaration: formatter.write(to_cc(self._type, self.cc_name) + ';') formatter.write('unbuild(vm, ' + self.oz_in_name + ', ' + self.cc_name + ');')