module hunt.sql.ast.SQLRecordDataType; import hunt.sql.visitor.SQLASTVisitor; import hunt.sql.ast.SQLExpr; import hunt.sql.ast.SQLDataTypeImpl; import hunt.sql.ast.SQLDataType; import hunt.collection; import hunt.sql.ast.statement.SQLColumnDefinition; import hunt.sql.ast.SQLObject; public class SQLRecordDataType : SQLDataTypeImpl/* , SQLDataType */{ private List!SQLColumnDefinition columns; this() { columns = new ArrayList!SQLColumnDefinition(); } public List!SQLColumnDefinition getColumns() { return columns; } public void addColumn(SQLColumnDefinition column) { column.setParent(this); this.columns.add(column); } public override SQLRecordDataType clone() { SQLRecordDataType x = new SQLRecordDataType(); cloneTo(x); foreach (SQLColumnDefinition c ; columns) { SQLColumnDefinition c2 = c.clone(); c2.setParent(x); x.columns.add(c2); } return x; } protected override void accept0(SQLASTVisitor visitor) { if (visitor.visit(this)) { acceptChild!SQLColumnDefinition(visitor, this.columns); } visitor.endVisit(this); } }