#ifndef BASETYPE_H
#define BASETYPE_H

/*
* NIST STEP Core Class Library
* clstepcore/baseType.h
* April 1997
* David Sauder
* KC Morris

* Development of this software was funded by the United States Government,
* and is not subject to copyright.
*/

//     **************  TYPES of attributes

// IMS, 9 Aug 95: changed values to make these values usable in a bitmask

enum PrimitiveType {
    sdaiINTEGER     = 0x0001,
    sdaiREAL        = 0x0002,
    sdaiBOOLEAN     = 0x0004,
    sdaiLOGICAL     = 0x0008,
    sdaiSTRING      = 0x0010,
    sdaiBINARY      = 0x0020,
    sdaiENUMERATION = 0x0040,
    sdaiSELECT      = 0x0080,
    sdaiINSTANCE    = 0x0100,
    sdaiAGGR        = 0x0200,
    sdaiNUMBER      = 0x0400,
// The elements defined below are not part of part 23
// (IMS: these should not be used as bitmask fields)
    ARRAY_TYPE,              // DAS
    BAG_TYPE,                // DAS
    SET_TYPE,                // DAS
    LIST_TYPE,               // DAS
    GENERIC_TYPE,
    REFERENCE_TYPE,
    UNKNOWN_TYPE
};

// for backwards compatibility with our previous implementation
typedef PrimitiveType BASE_TYPE;

// the previous element types of the enum BASE_TYPE that have been redefined
#define INTEGER_TYPE sdaiINTEGER
#define REAL_TYPE sdaiREAL
#define BOOLEAN_TYPE sdaiBOOLEAN
#define LOGICAL_TYPE sdaiLOGICAL
#define STRING_TYPE sdaiSTRING
#define BINARY_TYPE sdaiBINARY
#define ENUM_TYPE sdaiENUMERATION
#define SELECT_TYPE sdaiSELECT
#define ENTITY_TYPE sdaiINSTANCE
#define AGGREGATE_TYPE sdaiAGGR
#define NUMBER_TYPE sdaiNUMBER

/* not defined in part 23
        ARRAY_TYPE,              // DAS
        BAG_TYPE,                // DAS
        SET_TYPE,                // DAS
        LIST_TYPE,               // DAS
        GENERIC_TYPE,
        REFERENCE_TYPE,
        UNKNOWN_TYPE
*/

#endif
