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