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 '} }'
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 '}'
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 '}'
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 "}"
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 '}'
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 "}"