]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/declarations/DDataAst.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / declarations / DDataAst.java
1 package org.simantics.scl.compiler.internal.parsing.declarations;\r
2 \r
3 import java.util.Collections;\r
4 import java.util.List;\r
5 \r
6 import org.simantics.scl.compiler.internal.codegen.types.StandardTypeConstructor;\r
7 import org.simantics.scl.compiler.types.kinds.Kind;\r
8 \r
9 \r
10 \r
11 public class DDataAst extends DeclarationAst {\r
12     public final String name;\r
13     public final String[] parameters;\r
14     public final ConstructorAst[] constructors;\r
15     public final String[] deriving;\r
16     \r
17     private List<DAnnotationAst> annotations = Collections.emptyList();\r
18     \r
19     // Analyzed data\r
20     public Kind[] parameterKinds;\r
21     //public String javaName;\r
22     public StandardTypeConstructor typeConstructor;\r
23     \r
24     public DDataAst(String name, String[] parameters, ConstructorAst[] constructors, String[] deriving) {\r
25         this.name = name;\r
26         this.parameters = parameters;\r
27         this.constructors = constructors == null ? ConstructorAst.EMPTY_ARRAY : constructors;\r
28         this.deriving = deriving;\r
29     }\r
30     \r
31     public void setAnnotations(List<DAnnotationAst> annotations) {\r
32         this.annotations = annotations;\r
33     }\r
34     \r
35     public List<DAnnotationAst> getAnnotations() {\r
36         return annotations;\r
37     }\r
38     \r
39     @Override\r
40     public void toString(int indentation, StringBuilder b) {\r
41         for(int i=0;i<indentation;++i) b.append("    ");\r
42         b.append("data ");\r
43         b.append(name);\r
44         for(String parameter : parameters) {\r
45             b.append(' ');\r
46             b.append(parameter);\r
47         }\r
48         if(constructors.length > 0) {\r
49             b.append(" = ");        \r
50             for(int i=0;i<constructors.length;++i) {\r
51                 if(i > 0)\r
52                     b.append(" | ");\r
53                 constructors[i].toString(b);\r
54             }\r
55         }\r
56     }\r
57 }\r