Exemple #1
0
 def struct_parser(self, name, shape):
     """
     guts of the XML parser for struct shapes
     """
     children = shape['members']
     self.append('\t\tlet mut obj = ' + name + '::default();')
     if children:
         self.append('\t\tloop {')
         self.append('\t\t\tlet current_name = try!(peek_at_name(stack));')
         for (cname, child) in children.iteritems():
             self.parse_struct_child(cname, child, ParserBase.is_required(shape, cname))
         self.append('\t\t\tbreak;\n\t\t}')
Exemple #2
0
 def struct_parser(self, name, shape):
     """
     guts of the XML parser for struct shapes
     """
     children = shape['members']
     self.append('\t\tlet mut obj = ' + name + '::default();')
     if children:
         self.append('\t\tloop {')
         self.append('\t\t\tlet current_name = try!(peek_at_name(stack));')
         for (cname, child) in children.iteritems():
             self.parse_struct_child(cname, child,
                                     ParserBase.is_required(shape, cname))
         self.append('\t\t\tbreak;\n\t\t}')
Exemple #3
0
    def struct_writer(self, shape):
        self.append('\t\tlet mut prefix = name.to_string();')
        self.append('\t\tif prefix != "" { prefix.push_str("."); }')

        for (name, member) in shape['members'].iteritems():
            location_name = self.get_location_name(name, member)
            if not ParserBase.is_required(shape, name):
                self.append("\t\tif let Some(ref obj) = obj." + ParserBase.c_to_s(name) + " {")
                self.append('\t\t\t' + member[
                    'shape'] + 'Writer::write_params(params, &(prefix.to_string() + "' + location_name + '"), obj);')
                self.append("\t\t}")
            else:
                self.append('\t\t' + member[
                    'shape'] + 'Writer::write_params(params, &(prefix.to_string() + "' + location_name + '"), &obj.' + ParserBase.c_to_s(
                        name) + ');')
Exemple #4
0
    def rust_struct(self, name, shape):
        self.append("#[derive(Debug, Default)]")
        if shape['members']:
            # print "MEMBERS:" + name
            self.append("pub struct " + name + " {")
            for (mname, member) in shape['members'].iteritems():
                if 'documentation' in member:
                    self.generate_documentation(member, "\t")
                rust_type = member['shape']

                if not ParserBase.is_required(shape, mname):
                    rust_type = "Option<" + rust_type + ">"
                self.append("\tpub " + ParserBase.c_to_s(mname) + ": " + rust_type + ",")
            self.append("}\n")
        else:
            self.append("pub struct " + name + ";\n")
Exemple #5
0
    def rust_struct(self, name, shape):
        self.append("#[derive(Debug, Default)]")
        if shape['members']:
            # print "MEMBERS:" + name
            self.append("pub struct " + name + " {")
            for (mname, member) in shape['members'].iteritems():
                if 'documentation' in member:
                    self.generate_documentation(member, "\t")
                rust_type = member['shape']

                if not ParserBase.is_required(shape, mname):
                    rust_type = "Option<" + rust_type + ">"
                self.append("\tpub " + ParserBase.c_to_s(mname) + ": " +
                            rust_type + ",")
            self.append("}\n")
        else:
            self.append("pub struct " + name + ";\n")
Exemple #6
0
    def struct_writer(self, shape):
        self.append('\t\tlet mut prefix = name.to_string();')
        self.append('\t\tif prefix != "" { prefix.push_str("."); }')

        for (name, member) in shape['members'].iteritems():
            location_name = self.get_location_name(name, member)
            if not ParserBase.is_required(shape, name):
                self.append("\t\tif let Some(ref obj) = obj." +
                            ParserBase.c_to_s(name) + " {")
                self.append(
                    '\t\t\t' + member['shape'] +
                    'Writer::write_params(params, &(prefix.to_string() + "' +
                    location_name + '"), obj);')
                self.append("\t\t}")
            else:
                self.append(
                    '\t\t' + member['shape'] +
                    'Writer::write_params(params, &(prefix.to_string() + "' +
                    location_name + '"), &obj.' + ParserBase.c_to_s(name) +
                    ');')