Initializers *Initializer::arraySyntaxCopy(Initializers *ai) { Initializers *a = NULL; if (ai) { a = new Initializers(); a->setDim(ai->dim); for (size_t i = 0; i < a->dim; i++) { Initializer *e = (*ai)[i]; e = e->syntaxCopy(); (*a)[i] = e; } } return a; }
Initializer *StructInitializer::syntaxCopy() { StructInitializer *ai = new StructInitializer(loc); assert(field.dim == value.dim); ai->field.setDim(field.dim); ai->value.setDim(value.dim); for (size_t i = 0; i < field.dim; i++) { ai->field[i] = field[i]; Initializer *init = value[i]; init = init->syntaxCopy(); ai->value[i] = init; } return ai; }
Initializer *ArrayInitializer::syntaxCopy() { //printf("ArrayInitializer::syntaxCopy()\n"); ArrayInitializer *ai = new ArrayInitializer(loc); assert(index.dim == value.dim); ai->index.setDim(index.dim); ai->value.setDim(value.dim); for (size_t i = 0; i < ai->value.dim; i++) { Expression *e = index[i]; if (e) e = e->syntaxCopy(); ai->index[i] = e; Initializer *init = value[i]; init = init->syntaxCopy(); ai->value[i] = init; } return ai; }