]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/declarations/DClassAst.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / declarations / DClassAst.java
1 package org.simantics.scl.compiler.internal.parsing.declarations;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import org.simantics.scl.compiler.internal.parsing.types.TypeAst;
8
9
10 public class DClassAst extends DeclarationAst {
11     public final TypeAst[] context;
12     public final String name;
13     public final String[] parameters;
14     public final FundepAst[] fundeps;
15     public final DeclarationAst[] declarations;
16     
17     private List<DAnnotationAst> annotations = Collections.emptyList();
18     
19     public DClassAst(ArrayList<TypeAst> context, String name,
20             String[] parameters, 
21             FundepAst[] fundeps,
22             ArrayList<DeclarationAst> declarations) {
23         this.context = context.toArray(new TypeAst[context.size()]);
24         this.name = name;
25         this.parameters = parameters;
26         this.fundeps = fundeps;
27         this.declarations = declarations == null ? EMPTY_ARRAY : declarations.toArray(new DeclarationAst[declarations.size()]);
28     }
29     
30     @Override
31     public void toString(int indentation, StringBuilder b) {
32         for(int i=0;i<indentation;++i) b.append("    ");
33         b.append("class ");
34         if(context.length > 0) {
35             b.append("(");
36             for(int i=0;i<context.length;++i) {
37                 if(i>0)
38                     b.append(", ");
39                 context[i].toString(b);
40             }
41             b.append(") => ");
42             
43         }
44         b.append(name);
45         for(String parameter : parameters) {
46             b.append(' ');
47             b.append(parameter);
48         }
49         if(declarations.length > 0) {
50             b.append(" where");
51             for(DeclarationAst declaration : declarations) {
52                 b.append('\n');
53                 declaration.toString(indentation+1, b);
54             }
55         }
56     }
57
58     public void setAnnotations(List<DAnnotationAst> annotations) {
59         this.annotations = annotations;
60     }
61     
62     public List<DAnnotationAst> getAnnotations() {
63         return annotations;
64     }
65 }