Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
 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))
Exemplo n.º 3
0
 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))
Exemplo n.º 4
0
 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
     ))
Exemplo n.º 5
0
 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,
     })
Exemplo n.º 6
0
 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,
         })
Exemplo n.º 7
0
 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)
     ))
Exemplo n.º 8
0
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
Exemplo n.º 9
0
 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),
     })
Exemplo n.º 10
0
 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),
         })
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
 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))
Exemplo n.º 13
0
 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))
Exemplo n.º 14
0
 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 + ';')
Exemplo n.º 15
0
 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))
Exemplo n.º 16
0
 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 + ';')
Exemplo n.º 17
0
 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 + ');')
Exemplo n.º 18
0
 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 + ');')