Esempio n. 1
0
 def initializationexpr(self, decoration=''):
     yield '{'
     if needs_gcheader(self.T):
         for i, thing in enumerate(self.db.gcpolicy.array_gcheader_initdata(self)):
             lines = generic_initializationexpr(self.db, thing,
                                                'gcheader%d'%i,
                                                '%sgcheader%d' % (decoration, i))
             for line in lines:
                 yield line
     if self.T.OF is Void or len(self.obj.items) == 0:
         yield '\t%d' % len(self.obj.items)
         yield '}'
     elif self.T.OF == Char:
         yield '\t%d, %s' % (len(self.obj.items),
                             c_char_array_constant(''.join(self.obj.items)))
         yield '}'
     else:
         yield '\t%d, {' % len(self.obj.items)
         for j in range(len(self.obj.items)):
             value = self.obj.items[j]
             lines = generic_initializationexpr(self.db, value,
                                             '%s.items[%d]' % (self.name, j),
                                             '%s%d' % (decoration, j))
             for line in lines:
                 yield '\t' + line
         yield '} }'
Esempio n. 2
0
File: node.py Progetto: njues/Sypy
 def initializationexpr(self, decoration=''):
     T = self.getTYPE()
     defnode = self.db.gettypedefnode(T)
     yield '{'
     if needs_gcheader(T):
         gc_init = self.db.gcpolicy.array_gcheader_initdata(self)
         lines = generic_initializationexpr(self.db, gc_init, 'gcheader',
                                            '%sgcheader' % (decoration, ))
         for line in lines:
             yield line
     if T._hints.get('nolength', False):
         length = ''
     else:
         length = '%d, ' % len(self.obj.items)
     if T.OF is Void or len(self.obj.items) == 0:
         yield '\t%s' % length.rstrip(', ')
         yield '}'
     elif T.OF == Char:
         if len(self.obj.items) and self.obj.items[0] is None:
             s = ''.join(
                 [self.obj.getitem(i) for i in range(len(self.obj.items))])
         else:
             s = ''.join(self.obj.items)
         array_constant = c_char_array_constant(s)
         if array_constant.startswith('{') and barebonearray(T):
             assert array_constant.endswith('}')
             array_constant = array_constant[1:-1].strip()
         yield '\t%s%s' % (length, array_constant)
         yield '}'
     else:
         barebone = barebonearray(T)
         if not barebone:
             yield '\t%s{' % length
         for j in range(len(self.obj.items)):
             value = self.obj.items[j]
             lines = generic_initializationexpr(
                 self.db, value, '%s.items[%d]' % (self.name, j),
                 '%s%d' % (decoration, j))
             for line in lines:
                 yield '\t' + line
         if not barebone:
             yield '} }'
         else:
             yield '}'
Esempio n. 3
0
File: node.py Progetto: ieure/pypy
 def initializationexpr(self, decoration=''):
     T = self.getTYPE()
     defnode = self.db.gettypedefnode(T)
     yield '{'
     if needs_gcheader(T):
         gc_init = self.db.gcpolicy.array_gcheader_initdata(self)
         lines = generic_initializationexpr(self.db, gc_init, 'gcheader',
                                            '%sgcheader' % (decoration,))
         for line in lines:
             yield line
     if T._hints.get('nolength', False):
         length = ''
     else:
         length = '%d, ' % len(self.obj.items)
     if T.OF is Void or len(self.obj.items) == 0:
         yield '\t%s' % length.rstrip(', ')
         yield '}'
     elif T.OF == Char:
         if len(self.obj.items) and self.obj.items[0] is None:
             s = ''.join([self.obj.getitem(i) for i in range(len(self.obj.items))])
         else:
             s = ''.join(self.obj.items)
         array_constant = c_char_array_constant(s)
         if array_constant.startswith('{') and barebonearray(T):
             assert array_constant.endswith('}')
             array_constant = array_constant[1:-1].strip()
         yield '\t%s%s' % (length, array_constant)
         yield '}'
     else:
         barebone = barebonearray(T)
         if not barebone:
             yield '\t%s{' % length
         for j in range(len(self.obj.items)):
             value = self.obj.items[j]
             lines = generic_initializationexpr(self.db, value,
                                             '%s.items[%d]' % (self.name, j),
                                             '%s%d' % (decoration, j))
             for line in lines:
                 yield '\t' + line
         if not barebone:
             yield '} }'
         else:
             yield '}'
Esempio n. 4
0
 def initializationexpr(self, decoration=""):
     T = self.getTYPE()
     defnode = self.db.gettypedefnode(T)
     yield "{"
     if needs_gcheader(T):
         gc_init = self.db.gcpolicy.array_gcheader_initdata(self)
         lines = generic_initializationexpr(self.db, gc_init, "gcheader", "%sgcheader" % (decoration,))
         for line in lines:
             yield line
     if T._hints.get("nolength", False):
         length = ""
     else:
         length = "%d, " % len(self.obj.items)
     if T.OF is Void or len(self.obj.items) == 0:
         yield "\t%s" % length.rstrip(", ")
         yield "}"
     elif T.OF == Char:
         if len(self.obj.items) and self.obj.items[0] is None:
             s = "".join([self.obj.getitem(i) for i in range(len(self.obj.items))])
         else:
             s = "".join(self.obj.items)
         array_constant = c_char_array_constant(s)
         if array_constant.startswith("{") and barebonearray(T):
             assert array_constant.endswith("}")
             array_constant = array_constant[1:-1].strip()
         yield "\t%s%s" % (length, array_constant)
         yield "}"
     else:
         barebone = barebonearray(T)
         if not barebone:
             yield "\t%s{" % length
         for j in range(len(self.obj.items)):
             value = self.obj.items[j]
             lines = generic_initializationexpr(
                 self.db, value, "%s.items[%d]" % (self.name, j), "%s%d" % (decoration, j)
             )
             for line in lines:
                 yield "\t" + line
         if not barebone:
             yield "} }"
         else:
             yield "}"
Esempio n. 5
0
 def initializationexpr(self, decoration=''):
     defnode = self.db.gettypedefnode(self.T)
     yield '{'
     if needs_gcheader(self.T):
         for i, thing in enumerate(self.db.gcpolicy.array_gcheader_initdata(self)):
             lines = generic_initializationexpr(self.db, thing,
                                                'gcheader%d'%i,
                                                '%sgcheader%d' % (decoration, i))
             for line in lines:
                 yield line
     if self.T._hints.get('nolength', False):
         length = ''
     else:
         length = '%d, ' % len(self.obj.items)
     if self.T.OF is Void or len(self.obj.items) == 0:
         yield '\t%s' % length.rstrip(', ')
         yield '}'
     elif self.T.OF == Char:
         if len(self.obj.items) and self.obj.items[0] is None:
             s = ''.join([self.obj.getitem(i) for i in range(len(self.obj.items))])
         else:
             s = ''.join(self.obj.items)
         yield '\t%s%s' % (length, c_char_array_constant(s))
         yield '}'
     else:
         barebone = barebonearray(self.T)
         if not barebone:
             yield '\t%s{' % length
         for j in range(len(self.obj.items)):
             value = self.obj.items[j]
             lines = generic_initializationexpr(self.db, value,
                                             '%s.items[%d]' % (self.name, j),
                                             '%s%d' % (decoration, j))
             for line in lines:
                 yield '\t' + line
         if not barebone:
             yield '} }'
         else:
             yield '}'
Esempio n. 6
0
 def initializationexpr(self, decoration=""):
     defnode = self.db.gettypedefnode(self.T)
     yield "{"
     if needs_gcheader(self.T):
         for i, thing in enumerate(self.db.gcpolicy.array_gcheader_initdata(self)):
             lines = generic_initializationexpr(self.db, thing, "gcheader%d" % i, "%sgcheader%d" % (decoration, i))
             for line in lines:
                 yield line
     if self.T._hints.get("nolength", False):
         length = ""
     else:
         length = "%d, " % len(self.obj.items)
     if self.T.OF is Void or len(self.obj.items) == 0:
         yield "\t%s" % length.rstrip(", ")
         yield "}"
     elif self.T.OF == Char:
         if len(self.obj.items) and self.obj.items[0] is None:
             s = "".join([self.obj.getitem(i) for i in range(len(self.obj.items))])
         else:
             s = "".join(self.obj.items)
         yield "\t%s%s" % (length, c_char_array_constant(s))
         yield "}"
     else:
         barebone = barebonearray(self.T)
         if not barebone:
             yield "\t%s{" % length
         for j in range(len(self.obj.items)):
             value = self.obj.items[j]
             lines = generic_initializationexpr(
                 self.db, value, "%s.items[%d]" % (self.name, j), "%s%d" % (decoration, j)
             )
             for line in lines:
                 yield "\t" + line
         if not barebone:
             yield "} }"
         else:
             yield "}"