1 20 21 package org.jacorb.idl; 22 23 import java.io.PrintWriter ; 24 import java.util.*; 25 26 30 31 32 public class TypeSpec 33 extends IdlSymbol 34 { 35 protected String alias = null; 36 public TypeSpec type_spec; 37 38 public TypeSpec( int num ) 39 { 40 super( num ); 41 } 42 43 public Object clone() 44 { 45 TypeSpec ts = new TypeSpec( new_num() ); 46 ts.type_spec = (TypeSpec)type_spec.clone(); 47 return ts; 48 } 49 50 53 54 55 public String typeName() 56 { 57 return type_spec.typeName(); 58 } 59 60 63 64 public String getJavaTypeName() 65 { 66 return typeName(); 67 } 68 69 72 73 public String getIDLTypeName() 74 { 75 return typeName(); 76 } 77 78 79 public TypeSpec typeSpec() 80 { 81 return type_spec.typeSpec(); 82 } 83 84 public void setPackage( String s ) 85 { 86 s = parser.pack_replace( s ); 87 type_spec.setPackage( s ); 88 } 89 90 public void setEnclosingSymbol( IdlSymbol s ) 91 { 92 if( enclosing_symbol != null && enclosing_symbol != s ) 93 throw new RuntimeException ( "Compiler Error: trying to reassign container for " + name ); 94 enclosing_symbol = s; 95 type_spec.setEnclosingSymbol( s ); 96 } 97 98 101 102 public boolean basic() 103 { 104 if( type_spec == null ) 105 logger.warn("Typespec null " + getClass().getName() ); 106 return type_spec.basic(); 107 } 108 109 public void set_constr( TypeDeclaration td ) 110 { 111 ConstrTypeSpec c = new ConstrTypeSpec( new_num() ); 112 c.c_type_spec = td; 113 type_spec = c; 114 } 115 116 public void parse() 117 { 118 type_spec.parse(); 119 } 120 121 public String toString() 122 { 123 try 124 { 125 return type_spec.toString(); 126 } 127 catch( NullPointerException np ) 128 { 129 np.printStackTrace(); 130 org.jacorb.idl.parser.fatal_error( "Compiler Error for " + 131 type_spec + " " + typeName(), null ); 132 } 133 return null; 134 } 135 136 public String getTypeCodeExpression( Set knownTypes ) 137 { 138 if( type_spec instanceof ConstrTypeSpec ) 139 return type_spec.getTypeCodeExpression( knownTypes ); 140 else 141 return getTypeCodeExpression(); 142 } 143 144 148 public String getTypeCodeExpression() 149 { 150 return type_spec.getTypeCodeExpression(); 151 } 152 153 public void print( PrintWriter ps ) 154 { 155 if( !included ) 156 type_spec.print( ps ); 157 } 158 159 public String holderName() 160 { 161 return type_spec.holderName(); 162 } 163 164 171 172 public String printReadExpression( String streamname ) 173 { 174 return type_spec.printReadExpression( streamname ); 175 } 176 177 public String printReadStatement( String var_name, String streamname ) 178 { 179 return var_name + "=" + printReadExpression( streamname ) + ";"; 180 } 181 182 public String printWriteStatement( String var_name, String streamname ) 183 { 184 return type_spec.printWriteStatement( var_name, streamname ); 185 } 186 187 public String printInsertExpression() 188 { 189 return type_spec.printInsertExpression(); 190 } 191 192 public String printExtractExpression() 193 { 194 return type_spec.printExtractExpression(); 195 } 196 197 202 203 static void printHelperClassMethods( PrintWriter ps, String type ) 204 { 205 printInsertExtractMethods( ps, type ); 206 207 ps.println( "\tpublic static org.omg.CORBA.TypeCode type()" ); 208 ps.println( "\t{" ); 209 ps.println( "\t\treturn _type;" ); 210 ps.println( "\t}" ); 211 } 212 213 static void printInsertExtractMethods( PrintWriter ps, String type ) 214 { 215 ps.println( "\tpublic static void insert (final org.omg.CORBA.Any any, final " + type + " s)" ); 216 ps.println( "\t{" ); 217 ps.println( "\t\tany.type(type());" ); 218 ps.println( "\t\twrite( any.create_output_stream(),s);" ); 219 ps.println( "\t}\n" ); 220 221 ps.println( "\tpublic static " + type + " extract (final org.omg.CORBA.Any any)" ); 222 ps.println( "\t{" ); 223 ps.println( "\t\treturn read(any.create_input_stream());" ); 224 ps.println( "\t}\n" ); 225 } 226 227 228 229 } 230 | Popular Tags |