Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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 }