Source code: com/k_int/codec/comp/ASTSetOrSequenceType.java
1 /* Generated By:JJTree: Do not edit this line. ASTSetOrSequenceType.java */
2
3 package com.k_int.codec.comp;
4
5 import java.io.File;
6 import java.io.Writer;
7 import java.io.StringWriter;
8 import java.io.FileWriter;
9
10 public class ASTSetOrSequenceType extends SimpleNode {
11
12 public int which = 0;
13
14 public ASTSetOrSequenceType(int id) {
15 super(id);
16 }
17
18 public ASTSetOrSequenceType(AsnParser p, int id) {
19 super(p, id);
20 }
21
22 public void getSequenceMembers(SequenceTypeInfo sti)
23 {
24 CodecBuilderInfo info = CodecBuilderInfo.getInfo();
25
26 System.err.println(" ASTSetOrSequenceType::getSequenceMembers");
27 ASTElementTypeList choice_elements = (ASTElementTypeList)jjtGetChild(0);
28 int i, k = choice_elements.jjtGetNumChildren();
29
30 for (i = 0; i < k; i++)
31 {
32 ASTElementType choice_element = (ASTElementType)(choice_elements.jjtGetChild(i));
33 if ( choice_element.which == 1 )
34 {
35 ASTNamedType name = (ASTNamedType)(choice_element.jjtGetChild(0));
36 String element_name = name.getName().replace ( '-', '_' );
37 // String element_name = name.getName();
38 ASTType element_type_info = name.getType();
39
40 boolean has_tagging = false;
41 int tag_class = -1;
42 int tag_number = -1;
43 boolean is_implicit = ( info.default_tagging_is_explicit == true ? false : true );
44
45 // Find out if the type is tagged
46 if ( element_type_info.which == 1 ) // It's a builtin type
47 {
48 ASTBuiltinType bit = (ASTBuiltinType) (element_type_info.jjtGetChild(0));
49
50 if ( bit.which == 6 )
51 {
52 has_tagging = true;
53 // It's a tagged type, extract tagging information and proceed
54 // with the actual type info...
55 ASTTaggedType tt = (ASTTaggedType) (bit.jjtGetChild(0));
56 is_implicit = tt.isImplicit();
57
58 // The real type we want to process is inside the tagging info
59 element_type_info = tt.getType();
60
61 // Extract the tagging info
62 ASTTag tag = tt.getTag();
63 if ( tag.hasTagClass )
64 tag_class = tag.getTagClass().tag_class;
65 else
66 tag_class = 0x80; // Assume context tag class if none given
67
68 ASTClassNumber cn = tag.getClassNumber();
69
70 if ( cn.which == 1 )
71 {
72 // It's a number
73 tag_number = cn.getNumber().getNumber().intValue();
74 }
75 else
76 {
77 System.err.println("Unhandled tag number type");
78 System.exit(0);
79 // LATER: Should throw an exception here
80 }
81 }
82 }
83
84 String type_name = element_type_info.getTypeName();
85
86 // If it's a tagged built in type, just check some specials
87 if ( element_type_info.which == 1 ) // It's a builtin type
88 {
89 ASTBuiltinType bit = (ASTBuiltinType) (element_type_info.jjtGetChild(0));
90 switch ( bit.which )
91 {
92 case 2: // SetOrSequence
93 // ASTSetOrSequenceType sos = (ASTSetOrSequenceType)(bit.jjtGetChild(0));
94 type_name=element_name+"_inline"+info.getNextInlineCounter();
95 // if ( sos.which == 1 )
96 // {
97 info.createTypeInfoFor(type_name, element_type_info);
98 // }
99 // else
100 // {
101 info.createTypeInfoFor(type_name, element_type_info);
102 // }
103 break;
104
105 case 3: // SetOrSequenceOf
106 // ASTSetOrSequenceOfType soso = (ASTSetOrSequenceOfType)(bit.jjtGetChild(0));
107 // ASTType sot = (ASTType) (soso.jjtGetChild(0));
108 type_name=element_name+"_inline"+info.getNextInlineCounter();
109 info.createTypeInfoFor(type_name, element_type_info);
110
111 // if ( sot.which == 1 )
112 // {
113 // ASTBuiltinType sub_bit = (ASTBuiltinType) (sot.jjtGetChild(0));
114 // subtype_reference depends upon internal type....
115 // switch ( sub_bit.which )
116 // {
117 // case 2:
118 // System.err.println("SEQUENCEOF SEQUENCE");
119 // info.createTypeInfoFor(type_name, element_type_info);
120 // info.createTypeInfoFor(type_name, sot);
121 // break;
122 // case 4: // SequenceOf Choice
123 // System.err.println("SEQUENCEOF CHOICE ");
124 // info.createTypeInfoFor(type_name, element_type_info);
125 // info.createTypeInfoFor(type_name, sot);
126 // break;
127 // default:
128 // System.err.println("SOST SEQUENCEOF something ok.. "+sub_bit.which+" "+info.getInternalClass(bit.which));
129 // info.createTypeInfoFor(type_name, sot);
130 // // info.createTypeInfoFor(type_name, sot);
131 // break;
132 // }
133 // }
134 // else
135 // {
136 // ASTDefinedType sub_dt = (ASTDefinedType) (sot.jjtGetChild(0));
137 // System.err.println("SEQUENCEOF defined type "+ sub_dt.getTypeReference().typeref);
138 // info.createTypeInfoFor(type_name, element_type_info);
139 // type_name = sub_dt.getTypeReference().typeref;
140 // }
141 break;
142
143 case 4: // Choice
144 type_name=element_name+"_inline"+info.getNextInlineCounter();
145 info.createTypeInfoFor(type_name, element_type_info);
146 break;
147
148 default:
149 break;
150 }
151 }
152
153 sti.registerTaggedMember(element_name,
154 tag_class,
155 tag_number,
156 is_implicit,
157 type_name,
158 choice_element.optional);
159
160 System.err.println(" Adding Sequence element "+tag_class+
161 " "+tag_number+" "+is_implicit+
162 " "+element_name+
163 " "+ type_name + ( choice_element.optional == true ? " OPTIONAL " : "" ) );
164
165 }
166 }
167 }
168
169 // public String getBaseClassName(String element_name)
170 // {
171 // return element_name+"_codec ";
172 // }
173 }