001    /* TCKind.java -- java to IDL mapping constants.
002       Copyright (C) 2005 Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    
039    package org.omg.CORBA;
040    
041    
042    /**
043     * The basic constants, used in java to IDL mapping.
044     * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
045     */
046    public class TCKind
047    {
048      /**
049       * The integer constant, indicating IDL data type
050       * <code>null</code>.
051       */
052      public static final int _tk_null = 0;
053    
054      /**
055       * The integer constant, indicating IDL data type
056       * <code>void</code>.
057       */
058      public static final int _tk_void = 1;
059    
060      /**
061       * The integer constant, indicating IDL data type
062       * <code>short</code>.
063       */
064      public static final int _tk_short = 2;
065    
066      /**
067       * The integer constant, indicating IDL data type
068       * <code>long</code>.
069       */
070      public static final int _tk_long = 3;
071    
072      /**
073       * The integer constant, indicating IDL data type
074       * <code>ushort</code>.
075       */
076      public static final int _tk_ushort = 4;
077    
078      /**
079       * The integer constant, indicating IDL data type
080       * <code>ulong</code>.
081       */
082      public static final int _tk_ulong = 5;
083    
084      /**
085       * The integer constant, indicating IDL data type
086       * <code>float</code>.
087       */
088      public static final int _tk_float = 6;
089    
090      /**
091       * The integer constant, indicating IDL data type
092       * <code>double</code>.
093       */
094      public static final int _tk_double = 7;
095    
096      /**
097       * The integer constant, indicating IDL data type
098       * <code>boolean</code>.
099       */
100      public static final int _tk_boolean = 8;
101    
102      /**
103       * The integer constant, indicating IDL data type
104       * <code>char</code>.
105       */
106      public static final int _tk_char = 9;
107    
108      /**
109       * The integer constant, indicating IDL data type
110       * <code>octet</code>.
111       */
112      public static final int _tk_octet = 10;
113    
114      /**
115       * The integer constant, indicating IDL data type
116       * <code>any</code>.
117       */
118      public static final int _tk_any = 11;
119    
120      /**
121       * The integer constant, indicating IDL data type
122       * <code>TypeCode</code>.
123       */
124      public static final int _tk_TypeCode = 12;
125    
126      /**
127       * The integer constant, indicating IDL data type
128       * <code>Principal</code>.
129       */
130      public static final int _tk_Principal = 13;
131    
132      /**
133       * The integer constant, indicating IDL data type
134       * <code>objref</code>.
135       */
136      public static final int _tk_objref = 14;
137    
138      /**
139       * The integer constant, indicating IDL data type
140       * <code>struct</code>.
141       */
142      public static final int _tk_struct = 15;
143    
144      /**
145       * The integer constant, indicating IDL data type
146       * <code>union</code>.
147       */
148      public static final int _tk_union = 16;
149    
150      /**
151       * The integer constant, indicating IDL data type
152       * <code>enum</code>.
153       */
154      public static final int _tk_enum = 17;
155    
156      /**
157       * The integer constant, indicating IDL data type
158       * <code>string</code>.
159       */
160      public static final int _tk_string = 18;
161    
162      /**
163       * The integer constant, indicating IDL data type
164       * <code>sequence</code>.
165       */
166      public static final int _tk_sequence = 19;
167    
168      /**
169       * The integer constant, indicating IDL data type
170       * <code>array</code>.
171       */
172      public static final int _tk_array = 20;
173    
174      /**
175       * The integer constant, indicating IDL data type
176       * <code>alias</code>.
177       */
178      public static final int _tk_alias = 21;
179    
180      /**
181       * The integer constant, indicating IDL data type
182       * <code>except</code>.
183       */
184      public static final int _tk_except = 22;
185    
186      /**
187       * The integer constant, indicating IDL data type
188       * <code>longlong</code>.
189       */
190      public static final int _tk_longlong = 23;
191    
192      /**
193       * The integer constant, indicating IDL data type
194       * <code>ulonglong</code>.
195       */
196      public static final int _tk_ulonglong = 24;
197    
198      /**
199       * The integer constant, indicating IDL data type
200       * <code>longdouble</code>.
201       */
202      public static final int _tk_longdouble = 25;
203    
204      /**
205       * The integer constant, indicating IDL data type
206       * <code>wchar</code>.
207       */
208      public static final int _tk_wchar = 26;
209    
210      /**
211       * The integer constant, indicating IDL data type
212       * <code>wstring</code>.
213       */
214      public static final int _tk_wstring = 27;
215    
216      /**
217       * The integer constant, indicating IDL data type
218       * <code>fixed</code>.
219       */
220      public static final int _tk_fixed = 28;
221    
222      /**
223       * The integer constant, indicating IDL data type
224       * <code>value</code>.
225       */
226      public static final int _tk_value = 29;
227    
228      /**
229       * The integer constant, indicating IDL data type
230       * <code>value_box</code>.
231       */
232      public static final int _tk_value_box = 30;
233    
234      /**
235       * The integer constant, indicating IDL data type
236       * <code>native</code>.
237       */
238      public static final int _tk_native = 31;
239    
240      /**
241       * The integer constant, indicating IDL data type
242       * <code>abstract_interface</code>.
243       */
244      public static final int _tk_abstract_interface = 32;
245    
246      /**
247       * The TCKind constant, indicating IDL data type
248       * <code>null</code>
249       */
250      public static final TCKind tk_null = new TCKind(_tk_null);
251    
252      /**
253       * The TCKind constant, indicating IDL data type
254       * <code>void</code>
255       */
256      public static final TCKind tk_void = new TCKind(_tk_void);
257    
258      /**
259       * The TCKind constant, indicating IDL data type
260       * <code>short</code>
261       */
262      public static final TCKind tk_short = new TCKind(_tk_short);
263    
264      /**
265       * The TCKind constant, indicating IDL data type
266       * <code>long</code>
267       */
268      public static final TCKind tk_long = new TCKind(_tk_long);
269    
270      /**
271       * The TCKind constant, indicating IDL data type
272       * <code>ushort</code>
273       */
274      public static final TCKind tk_ushort = new TCKind(_tk_ushort);
275    
276      /**
277       * The TCKind constant, indicating IDL data type
278       * <code>ulong</code>
279       */
280      public static final TCKind tk_ulong = new TCKind(_tk_ulong);
281    
282      /**
283       * The TCKind constant, indicating IDL data type
284       * <code>float</code>
285       */
286      public static final TCKind tk_float = new TCKind(_tk_float);
287    
288      /**
289       * The TCKind constant, indicating IDL data type
290       * <code>double</code>
291       */
292      public static final TCKind tk_double = new TCKind(_tk_double);
293    
294      /**
295       * The TCKind constant, indicating IDL data type
296       * <code>boolean</code>
297       */
298      public static final TCKind tk_boolean = new TCKind(_tk_boolean);
299    
300      /**
301       * The TCKind constant, indicating IDL data type
302       * <code>char</code>
303       */
304      public static final TCKind tk_char = new TCKind(_tk_char);
305    
306      /**
307       * The TCKind constant, indicating IDL data type
308       * <code>octet</code>
309       */
310      public static final TCKind tk_octet = new TCKind(_tk_octet);
311    
312      /**
313       * The TCKind constant, indicating IDL data type
314       * <code>any</code>
315       */
316      public static final TCKind tk_any = new TCKind(_tk_any);
317    
318      /**
319       * The TCKind constant, indicating IDL data type
320       * <code>TypeCode</code>
321       */
322      public static final TCKind tk_TypeCode = new TCKind(_tk_TypeCode);
323    
324      /**
325       * The TCKind constant, indicating IDL data type
326       * <code>Principal</code>
327       */
328      public static final TCKind tk_Principal = new TCKind(_tk_Principal);
329    
330      /**
331       * The TCKind constant, indicating IDL data type
332       * <code>objref</code>
333       */
334      public static final TCKind tk_objref = new TCKind(_tk_objref);
335    
336      /**
337       * The TCKind constant, indicating IDL data type
338       * <code>struct</code>
339       */
340      public static final TCKind tk_struct = new TCKind(_tk_struct);
341    
342      /**
343       * The TCKind constant, indicating IDL data type
344       * <code>union</code>
345       */
346      public static final TCKind tk_union = new TCKind(_tk_union);
347    
348      /**
349       * The TCKind constant, indicating IDL data type
350       * <code>enum</code>
351       */
352      public static final TCKind tk_enum = new TCKind(_tk_enum);
353    
354      /**
355       * The TCKind constant, indicating IDL data type
356       * <code>string</code>
357       */
358      public static final TCKind tk_string = new TCKind(_tk_string);
359    
360      /**
361       * The TCKind constant, indicating IDL data type
362       * <code>sequence</code>
363       */
364      public static final TCKind tk_sequence = new TCKind(_tk_sequence);
365    
366      /**
367       * The TCKind constant, indicating IDL data type
368       * <code>array</code>
369       */
370      public static final TCKind tk_array = new TCKind(_tk_array);
371    
372      /**
373       * The TCKind constant, indicating IDL data type
374       * <code>alias</code>
375       */
376      public static final TCKind tk_alias = new TCKind(_tk_alias);
377    
378      /**
379       * The TCKind constant, indicating IDL data type
380       * <code>except</code>
381       */
382      public static final TCKind tk_except = new TCKind(_tk_except);
383    
384      /**
385       * The TCKind constant, indicating IDL data type
386       * <code>longlong</code>
387       */
388      public static final TCKind tk_longlong = new TCKind(_tk_longlong);
389    
390      /**
391       * The TCKind constant, indicating IDL data type
392       * <code>ulonglong</code>
393       */
394      public static final TCKind tk_ulonglong = new TCKind(_tk_ulonglong);
395    
396      /**
397       * The TCKind constant, indicating IDL data type
398       * <code>longdouble</code>
399       */
400      public static final TCKind tk_longdouble = new TCKind(_tk_longdouble);
401    
402      /**
403       * The TCKind constant, indicating IDL data type
404       * <code>wchar</code>
405       */
406      public static final TCKind tk_wchar = new TCKind(_tk_wchar);
407    
408      /**
409       * The TCKind constant, indicating IDL data type
410       * <code>wstring</code>
411       */
412      public static final TCKind tk_wstring = new TCKind(_tk_wstring);
413    
414      /**
415       * The TCKind constant, indicating IDL data type
416       * <code>fixed</code>
417       */
418      public static final TCKind tk_fixed = new TCKind(_tk_fixed);
419    
420      /**
421       * The TCKind constant, indicating IDL data type
422       * <code>value</code>
423       */
424      public static final TCKind tk_value = new TCKind(_tk_value);
425    
426      /**
427       * The TCKind constant, indicating IDL data type
428       * <code>value_box</code>
429       */
430      public static final TCKind tk_value_box = new TCKind(_tk_value_box);
431    
432      /**
433       * The TCKind constant, indicating IDL data type
434       * <code>native</code>
435       */
436      public static final TCKind tk_native = new TCKind(_tk_native);
437    
438      /**
439       * The TCKind constant, indicating IDL data type
440       * <code>abstract_interface</code>
441       */
442      public static final TCKind tk_abstract_interface =
443        new TCKind(_tk_abstract_interface);
444    
445      /**
446       * The kind value for this instance.
447       */
448      private final int _value;
449    
450      /**
451       * The array of all tk_... instances, sorted by the kind number.
452       *
453       * As long as the kind numbers make the continuos sequence, starting from 0,
454       * the members can be found just by direct indexing.
455       */
456      private static final TCKind[] tk =
457        new TCKind[]
458        {
459          tk_null, tk_void, tk_short, tk_long, tk_ushort, tk_ulong, tk_float,
460          tk_double, tk_boolean, tk_char, tk_octet, tk_any, tk_TypeCode,
461          tk_Principal, tk_objref, tk_struct, tk_union, tk_enum, tk_string,
462          tk_sequence, tk_array, tk_alias, tk_except, tk_longlong, tk_ulonglong,
463          tk_longdouble, tk_wchar, tk_wstring, tk_fixed, tk_value, tk_value_box,
464          tk_native, tk_abstract_interface
465        };
466    
467      /**
468       * Creates a new TCKind instance with the given integer constant value.
469       * @deprecated it is recommended to use {@link #from_int(int)} that
470       * reuses existing TCKind object instead of allocating the new instance.
471       * @param kind one of the <code>_tk_..</code> constants.
472       */
473      protected TCKind(int kind)
474      {
475        _value = kind;
476      }
477    
478      /**
479       * Returns the integer value, corresponding this instance of TCKind.
480       * @return the <code>_tk_..</code> value, matching this instance.
481       */
482      public int value()
483      {
484        return _value;
485      }
486    
487      /**
488       * Return a TCKind object, matching the given integer code.
489       * @param _tk_nnn the TCKind code, one of <code>_tk_..</code> constants.
490       * @return the matching instance of TCKind, on of tk_.. constants.
491       * @throws BAD_PARAM if the given integer constant is not one of the
492       * valid <code>_tk_..</code> constants.
493       */
494      public static TCKind from_int(int _tk_nnn)
495      {
496        try {
497          return tk[_tk_nnn];
498        }
499        catch (ArrayIndexOutOfBoundsException aex) {
500          throw new BAD_PARAM("Invalid _tk_ code "+_tk_nnn);
501        }
502      }
503    
504    }