content: /* Copyright 2010, Object Management Group, Inc.
   * Copyright 2010, PrismTech, Inc.
   * Copyright 2010, Real-Time Innovations, Inc.
   * All rights reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package org.omg.dds.type;
  
  
  public enum TypeKind
  {
      // -----------------------------------------------------------------------
      // Enumerated Constants
      // -----------------------------------------------------------------------
  
      /** sentinel indicating "null" value */
      NO_TYPE         (Values.NO_TYPE_VALUE),
      BOOLEAN_TYPE    (Values.BOOLEAN_TYPE_VALUE),
      BYTE_TYPE       (Values.BYTE_TYPE_VALUE),
      INT_16_TYPE     (Values.INT_16_TYPE_VALUE),
      UINT_16_TYPE    (Values.UINT_16_TYPE_VALUE),
      INT_32_TYPE     (Values.INT_32_TYPE_VALUE),
      UINT_32_TYPE    (Values.UINT_32_TYPE_VALUE),
      INT_64_TYPE     (Values.INT_64_TYPE_VALUE),
      UINT_64_TYPE    (Values.UINT_64_TYPE_VALUE),
      FLOAT_32_TYPE   (Values.FLOAT_32_TYPE_VALUE),
      FLOAT_64_TYPE   (Values.FLOAT_64_TYPE_VALUE),
      FLOAT_128_TYPE  (Values.FLOAT_128_TYPE_VALUE),
      CHAR_8_TYPE     (Values.CHAR_8_TYPE_VALUE),
      CHAR_32_TYPE    (Values.CHAR_32_TYPE_VALUE),
  
      ENUMERATION_TYPE(Values.ENUMERATION_TYPE_VALUE),
      BITSET_TYPE     (Values.BITSET_TYPE_VALUE),
      ALIAS_TYPE      (Values.ALIAS_TYPE_VALUE),
  
      ARRAY_TYPE      (Values.ARRAY_TYPE_VALUE),
      SEQUENCE_TYPE   (Values.SEQUENCE_TYPE_VALUE),
      STRING_TYPE     (Values.STRING_TYPE_VALUE),
      MAP_TYPE        (Values.MAP_TYPE_VALUE),
  
      UNION_TYPE      (Values.UNION_TYPE_VALUE),
      STRUCTURE_TYPE  (Values.STRUCTURE_TYPE_VALUE),
      ANNOTATION_TYPE (Values.ANNOTATION_TYPE_VALUE),
      ;
  
  
  
      // -----------------------------------------------------------------------
      // Compile-TIme Constants
      // -----------------------------------------------------------------------
  
      public static final class Values {
          /** sentinel indicating "null" value */
          public static final int NO_TYPE_VALUE           = 0x0000;
          public static final int PRIMITIVE_TYPE_VALUE    = 0x4000;
          public static final int CONSTRUCTED_TYPE_VALUE  = 0x8000;
          public static final int COLLECTION_TYPE_VALUE   = 0x0200;
          public static final int AGGREGATION_TYPE_VALUE  = 0x0100;
          public static final int ANNOTATION_TYPE_VALUE   = 0x0080;
  
          public static final int BOOLEAN_TYPE_VALUE     =  PRIMITIVE_TYPE_VALUE | 0x1;
          public static final int BYTE_TYPE_VALUE        =  PRIMITIVE_TYPE_VALUE | 0x2;
          public static final int INT_16_TYPE_VALUE      =  PRIMITIVE_TYPE_VALUE | 0x3;
          public static final int UINT_16_TYPE_VALUE     =  PRIMITIVE_TYPE_VALUE | 0x4;
          public static final int INT_32_TYPE_VALUE      =  PRIMITIVE_TYPE_VALUE | 0x5;
          public static final int UINT_32_TYPE_VALUE     =  PRIMITIVE_TYPE_VALUE | 0x6;
          public static final int INT_64_TYPE_VALUE      =  PRIMITIVE_TYPE_VALUE | 0x7;
          public static final int UINT_64_TYPE_VALUE     =  PRIMITIVE_TYPE_VALUE | 0x8;
          public static final int FLOAT_32_TYPE_VALUE    =  PRIMITIVE_TYPE_VALUE | 0x9;
          public static final int FLOAT_64_TYPE_VALUE    =  PRIMITIVE_TYPE_VALUE | 0xA;
          public static final int FLOAT_128_TYPE_VALUE   =  PRIMITIVE_TYPE_VALUE | 0xB;
          public static final int CHAR_8_TYPE_VALUE      =  PRIMITIVE_TYPE_VALUE | 0xC;
          public static final int CHAR_32_TYPE_VALUE     =  PRIMITIVE_TYPE_VALUE | 0xD;
  
          public static final int ENUMERATION_TYPE_VALUE =  CONSTRUCTED_TYPE_VALUE | 0x1;
          public static final int BITSET_TYPE_VALUE      =  CONSTRUCTED_TYPE_VALUE | 0x2;
          public static final int ALIAS_TYPE_VALUE       =  CONSTRUCTED_TYPE_VALUE | 0x3;
  
          public static final int ARRAY_TYPE_VALUE       =  CONSTRUCTED_TYPE_VALUE | COLLECTION_TYPE_VALUE | 0x0004;
          public static final int SEQUENCE_TYPE_VALUE    =  CONSTRUCTED_TYPE_VALUE | COLLECTION_TYPE_VALUE | 0x0005;
          public static final int STRING_TYPE_VALUE      =  CONSTRUCTED_TYPE_VALUE | COLLECTION_TYPE_VALUE | 0x0006;
          public static final int MAP_TYPE_VALUE         =  CONSTRUCTED_TYPE_VALUE | COLLECTION_TYPE_VALUE | 0x0007;
  
          public static final int UNION_TYPE_VALUE       = CONSTRUCTED_TYPE_VALUE | AGGREGATION_TYPE_VALUE | 0x0008;
          public static final int STRUCTURE_TYPE_VALUE   = CONSTRUCTED_TYPE_VALUE | AGGREGATION_TYPE_VALUE | 0x0009;
      }
  
  
      // -----------------------------------------------------------------------
      // Fields
      // -----------------------------------------------------------------------
  
      public final int value;
  
  
  
      // -----------------------------------------------------------------------
      // Constructor
      // -----------------------------------------------------------------------
  
      private TypeKind(int value) {
          this.value = value;
      }
  }
  