blob: e276f94be4b1e573563735e0e9c80739b1d29f73 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you 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.
*/
/*
* etch_objecttypes.h -- constants for internal object types.
*/
#ifndef ETCHOBJTYPES_H
#define ETCHOBJTYPES_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* identifies a class object's data type or content type
*/
typedef enum objtype_b
{
ETCHTYPEB_UNDEFINED = 0x0,
ETCHTYPEB_NONE = 0x0,
ETCHTYPEB_BYTE = 0x1,
ETCHTYPEB_BOOL = 0x2,
ETCHTYPEB_INT8 = 0x3,
ETCHTYPEB_INT16 = 0x4,
ETCHTYPEB_INT32 = 0x5,
ETCHTYPEB_INT64 = 0x6,
ETCHTYPEB_IEEE32 = 0x7,
ETCHTYPEB_IEEE64 = 0x8,
ETCHTYPEB_STRING = 0x9,
ETCHTYPEB_CLASS = 0xa,
ETCHTYPEB_RAWOBJECT = 0xb,
ETCHTYPEB_CUSTOM = 0xc,
ETCHTYPEB_EXTERN = 0xd,
ETCHTYPEB_ETCHOBJECT = 0xe,
ETCHTYPEB_HASHTABLE = 0xf,
ETCHTYPEB_VTABLE = 0x10,
ETCHTYPEB_EXCEPTION = 0x11,
ETCHTYPEB_CACHEREC = 0x12,
ETCHTYPEB_BYTES = 0x13,
ETCHTYPEB_ID_NAME = 0x14,
ETCHTYPEB_FIELD = 0x15,
ETCHTYPEB_TYPE = 0x16,
ETCHTYPEB_STRUCTVAL = 0x17,
ETCHTYPEB_ARRAYVAL = 0x18,
ETCHTYPEB_VALUEFACTORY = 0x19,
ETCHTYPEB_VALUEFACTOBJ = 0x1a,
ETCHTYPEB_VALUEFACTIMP = 0x1b,
ETCHTYPEB_MESSAGE = 0x1c,
ETCHTYPEB_TAGDATA = 0x1d,
ETCHTYPEB_TAGDATAINP = 0x1e,
ETCHTYPEB_TAGDATAOUT = 0x1f,
ETCHTYPEB_TDIOBJ = 0x20,
ETCHTYPEB_TDOOBJ = 0x21,
ETCHTYPEB_ARRAYELEMENT = 0x22,
ETCHTYPEB_STRUCTELEMENT = 0x23,
ETCHTYPEB_INSTANCEDATA = 0x24,
ETCHTYPEB_COLLECTION = 0x25,
ETCHTYPEB_LINKLIST = 0x26,
ETCHTYPEB_ITERATOR = 0x27,
ETCHTYPEB_RESULT = 0x28,
ETCHTYPEB_PRIMITIVE = 0x29,
ETCHTYPEB_DATE = 0x2a,
ETCHTYPEB_URL = 0x2b,
ETCHTYPEB_XPORTFACT = 0x2c,
ETCHTYPEB_CONNECTION = 0x2d,
ETCHTYPEB_TCPSERVER = 0x2e,
ETCHTYPEB_TCPCLIENT = 0x2f,
ETCHTYPEB_SOCKET = 0x30,
ETCHTYPEB_FLEXBUF = 0x31,
ETCHTYPEB_WHO = 0x32,
ETCHTYPEB_ARRAYLIST = 0x33,
ETCHTYPEB_BINARYTDI = 0x34,
ETCHTYPEB_BINARYTDO = 0x35,
ETCHTYPEB_IDNAMEIMPL = 0x36,
ETCHTYPEB_SERIALIZER = 0x37,
ETCHTYPEB_FORMATFACT = 0x38,
ETCHTYPEB_VALIDATOR = 0x39,
ETCHTYPEB_NATIVEARRAY = 0x3a,
ETCHTYPEB_SESSIONMSG = 0x3b,
ETCHTYPEB_TRANSPORTMSG = 0x3c,
ETCHTYPEB_SESSIONDATA = 0x3d,
ETCHTYPEB_SESSIONPKT = 0x3e,
ETCHTYPEB_SESSIONLXR = 0x3f,
ETCHTYPEB_DEFAULT_VF = 0x40,
ETCHTYPEB_DEFAULT_VFOBJ = 0x41,
ETCHTYPEB_DEFAULT_VFIMP = 0x42,
ETCHTYPEB_THREAD = 0x43,
ETCHTYPEB_THREADPOOL = 0x44,
ETCHTYPEB_MUTEX = 0x45,
ETCHTYPEB_THREADPARAMS = 0x46,
ETCHTYPEB_WAIT = 0x47,
ETCHTYPEB_OBJSESSION = 0x48,
ETCHTYPEB_MSGHANDLER = 0x49,
ETCHTYPEB_SOURCE = 0x4a,
ETCHTYPEB_SOURCEHDLR = 0x4b,
ETCHTYPEB_MSGSOURCE = 0x4c,
ETCHTYPEB_PACKETIZER = 0x4d,
ETCHTYPEB_MESSAGIZER = 0x4e,
ETCHTYPEB_PACKETHANDLER = 0x4f,
ETCHTYPEB_ETCHLIST = ETCHTYPEB_ARRAYLIST,
ETCHTYPEB_ETCHMAP = ETCHTYPEB_HASHTABLE,
ETCHTYPEB_ETCHSET = 0x50,
ETCHTYPEB_ETCHQUEUE = 0x51,
ETCHTYPEB_UNUSED1 = 0x52,
ETCHTYPEB_SERVERIMPL = 0x53,
ETCHTYPEB_EVENT = 0x54,
ETCHTYPEB_MAILBOX = 0x55,
ETCHTYPEB_MBOX_ELEMENT = 0x56,
ETCHTYPEB_MBOX_MANAGER = 0x57,
ETCHTYPEB_MBOXMGR_IMPL = 0x58,
ETCHTYPEB_MAILBOXINT = 0x59,
ETCHTYPEB_TRANSPORTDATA = 0x5b,
ETCHTYPEB_TRANSPORTPKT = 0x5c,
ETCHTYPEB_DELIVERYSVC = 0x5d,
ETCHTYPEB_DELIVERYSVCINT = 0x5e,
ETCHTYPEB_DELIVERYSVC_IMPL= 0x5f,
ETCHTYPEB_SERVERFACT = 0x60,
ETCHTYPEB_CLIENTFACT = 0x61,
ETCHTYPEB_SERVERFACT_IMPL = 0x62,
ETCHTYPEB_CLIENTFACT_IMPL = 0x63,
ETCHTYPEB_SVCINTERFACE = 0x64,
ETCHTYPEB_EXESERVERBASE = 0x66,
ETCHTYPEB_EXESERVERIMPL = 0x67,
ETCHTYPEB_EXECLIENTBASE = 0x68,
ETCHTYPEB_EXECLIENTIMPL = 0x69,
ETCHTYPEB_REMOTE = 0x6a,
ETCHTYPEB_REMOTECLIENT = 0x6b,
ETCHTYPEB_REMOTESERVER = 0x6c,
ETCHTYPEB_CLIENT_SESSION = 0x74,
ETCHTYPEB_STUB = 0x70,
ETCHTYPEB_CLIENTSTUB = 0x71,
ETCHTYPEB_SERVERSTUB = 0x72,
ETCHTYPEB_FACTORYPARAMS = 0x73,
ETCHTYPEB_EODMARK = 0x7f,
ETCHTYPEB_DYNAMIC = 0x80,
ETCHTYPEB_USER = 0xa0,
} objtype_b;
const char* etch_object_type_get_name(objtype_b type);
/**
* class IDs
*/
typedef enum etch_classid
{
CLASSID_NONE = 0x0,
CLASSID_ANY = 0x0,
CLASSID_UNWRAPPED = 0x0,
CLASSID_PRIMITIVE_BYTE = 0x1, /* primitive class IDs must start at 1 */
CLASSID_PRIMITIVE_BOOL = 0x2,
CLASSID_PRIMITIVE_INT8 = 0x3,
CLASSID_PRIMITIVE_INT16 = 0x4,
CLASSID_PRIMITIVE_INT32 = 0x5,
CLASSID_PRIMITIVE_INT64 = 0x6,
CLASSID_PRIMITIVE_FLOAT = 0x7,
CLASSID_PRIMITIVE_DOUBLE = 0x8,
CLASSID_STRING = 0x9,
CLASSID_DATE = 0xa,
CLASSID_OBJECT = 0xf,
CLASSID_DEF_VF = 0x10,
CLASSID_DEF_VF_OBJ = 0x11,
CLASSID_DEF_VF_IMPL = 0x12,
CLASSID_DEF_VF_VTAB = 0x13,
CLASSID_BINARYTDI_VTAB = 0x14,
CLASSID_BINARYTDO_VTAB = 0x15,
CLASSID_TAGDATA = 0x16,
CLASSID_BINARYTDI = 0x17,
CLASSID_BINARYTDO = 0x18,
CLASSID_ETCHMESSAGE = 0x1a,
CLASSID_HASHTABLE = 0x1b,
CLASSID_ETCH_MAP = CLASSID_HASHTABLE,
CLASSID_HASHTABLE_VTAB = 0x20,
CLASSID_ITERABLE_VTAB = 0x21,
CLASSID_ITERATOR = 0x22,
CLASSID_ID_NAME = 0x23,
CLASSID_ID_FIELD = 0x24,
CLASSID_ID_TYPE = 0x25,
CLASSID_TDI_VTAB = 0x26,
CLASSID_TDO_VTAB = 0x27,
CLASSID_BINTDI_VTAB = 0x28,
CLASSID_BINTDO_VTAB = 0x29,
CLASSID_AVAILABLE_VTAB = 0x2a,
CLASSID_TYPEIMPL = 0x2b,
CLASSID_VTAB_FIELD = 0x2c,
CLASSID_VTAB_TYPE = 0x2d,
CLASSID_ETCH_ARRAYLIST = 0x2e,
CLASSID_ETCH_LIST = CLASSID_ETCH_ARRAYLIST,
CLASSID_ETCH_SET = 0x2f,
CLASSID_STRUCTVALUE = 0x30,
CLASSID_ARRAYVALUE = 0x31,
CLASSID_ARRAYELEMENT = 0x32,
CLASSID_VALUEFACTORY = 0x33,
CLASSID_TAGDATAINP = 0x34,
CLASSID_TAGDATAOUT = 0x35,
CLASSID_EXCEPTION = 0x36,
CLASSID_THREAD = 0x39,
CLASSID_THREADPOOL = 0x3a,
CLASSID_MUTEX = 0x3b,
CLASSID_WAIT = 0x3c,
CLASSID_STUB = 0x3d,
CLASSID_SERVERIMPL = 0x3e,
CLASSID_MSGSOURCE = 0x3f,
CLASSID_MESSAGIZER = 0x40,
CLASSID_MSGHANDLER = 0x41,
CLASSID_SOURCE = 0x42,
CLASSID_SOURCEHDLR = 0x43,
CLASSID_URL = 0x49,
CLASSID_PACKETIZER = 0x4a,
CLASSID_PACKETHANDLER = 0x4b,
CLASSID_FLEXBUF = 0x4e,
CLASSID_WHO = 0x4f,
CLASSID_ARRAY_OBJECT = 0x50,
CLASSID_ARRAY_BYTE = 0x51,
CLASSID_ARRAY_BOOL = 0x52,
CLASSID_ARRAY_INT8 = 0x53,
CLASSID_ARRAY_INT16 = 0x54,
CLASSID_ARRAY_INT32 = 0x55,
CLASSID_ARRAY_INT64 = 0x56,
CLASSID_ARRAY_FLOAT = 0x57,
CLASSID_ARRAY_DOUBLE = 0x58,
CLASSID_ARRAY_STRING = 0x59,
CLASSID_ARRAY_STRUCT = 0x5a,
CLASSID_ETCHQUEUE = 0x5b,
CLASSID_ETCHSOCKET = 0x5c,
CLASSID_CLIENT_SESSION = 0x5d,
CLASSID_UNUSED_1 = 0x5e,
CLASSID_XPORTFACT = 0x5f,
CLASSID_FORMATFACT = 0x60,
CLASSID_FORMATFACT_BINARY = 0x61,
CLASSID_FORMATFACT_XML = 0x62,
CLASSID_TCP_CONNECTION = 0x63,
CLASSID_TCP_LISTENER = 0x64,
CLASSID_TCP_CLIENT = 0x65,
CLASSID_SOCKET = 0x66,
CLASSID_UNUSED_2 = 0x67,
CLASSID_UNUSED_3 = 0x68,
CLASSID_SESSIONMSG = 0x69,
CLASSID_TRANSPORTMSG = 0x6a,
CLASSID_TRANSPORTPKT = 0x6b,
CLASSID_SESSIONDATA = 0x6c,
CLASSID_TRANSPORTDATA = 0x6d,
CLASSID_SESSIONPKT = 0x6e,
CLASSID_SESSIONLXR = 0x6f,
CLASSID_VALIDATOR = 0x70,
CLASSID_COMBO_VALIDATOR = 0x71,
CLASSID_VALIDATOR_BOOL = 0x72,
CLASSID_VALIDATOR_BYTE = 0x73,
CLASSID_VALIDATOR_INT8 = 0x74,
CLASSID_VALIDATOR_INT16 = 0x75,
CLASSID_VALIDATOR_INT32 = 0x76,
CLASSID_VALIDATOR_INT64 = 0x77,
CLASSID_VALIDATOR_FLOAT = 0x78,
CLASSID_VALIDATOR_DOUBLE = 0x79,
CLASSID_VALIDATOR_STRING = 0x7a,
CLASSID_VALIDATOR_OBJECT = 0x7b,
CLASSID_VALIDATOR_EXCEPTION= 0x7c,
CLASSID_VALIDATOR_STRUCT = 0x7d,
CLASSID_VALIDATOR_EOD = 0x7e,
CLASSID_VALIDATOR_CUSTOM = 0x7f,
CLASSID_RUNTIME_EXCEPTION = 0x80,
CLASSID_AUTH_EXCEPTION = 0x81,
CLASSID_SERIALIZER_EXCP = 0x82,
CLASSID_SERIALIZER_RTXCP = 0x83,
CLASSID_SERIALIZER_AUTHXCP = 0x84,
CLASSID_SERIALIZER_LIST = 0x85,
CLASSID_SERIALIZER_MAP = 0x86,
CLASSID_SERIALIZER_SET = 0x87,
CLASSID_SERIALIZER_DATE = 0x88,
CLASSID_EVENT_UNWANTMSG = 0x90,
CLASSID_MAILBOX = 0x91,
CLASSID_MAILBOXINT = 0x92,
CLASSID_MBOX_ELEMENT = 0x93,
CLASSID_PLAIN_MAILBOX = 0x94,
CLASSID_MBOX_MANAGER = 0x95,
CLASSID_PLAIN_MBOXMGR = 0x96,
CLASSID_DELIVERYSVC = 0x97,
CLASSID_TCP_DELIVERYSVC = 0x98,
CLASSID_CLIENTSTUB = 0x99,
CLASSID_SERVERSTUB = 0x9a,
CLASSID_SERVERFACTORY = 0x9b,
CLASSID_CLIENTFACTORY = 0x9c,
CLASSID_TCP_XPORTFACT = 0xb0,
CLASSID_SERVERFACT = 0xb1,
CLASSID_CLIENTFACT = 0xb2,
CLASSID_EXECLIENT_IMPL = 0xb3,
CLASSID_EXECLIENTBASE_IMPL = 0xb4,
CLASSID_EXESERVER_IMPL = 0xb5,
CLASSID_EXESERVERBASE_IMPL = 0xb6,
CLASSID_CONTROL_START = 0x101,
CLASSID_CONTROL_START_WAITUP = 0x102,
CLASSID_CONTROL_STOP = 0x103,
CLASSID_CONTROL_STOP_WAITDOWN = 0x104,
CLASSID_WAITUP = 0x105,
CLASSID_WAITDOWN = 0x106,
CLASSID_QUERY_IS_UP = 0x110,
CLASSID_QUERY_LOCALADDR = 0x111,
CLASSID_QUERY_REMOTEADDR = 0x112,
CLASSID_QUERY_WAITUP = 0x113,
CLASSID_QUERY_WAITDOWN = 0x114,
CLASSID_DYNAMIC_START = 0x400,
} etch_classid;
/*
* ranges of numeric types
*/
#define ETCHTYPE_MIN_TINY ((signed char)(0xc0)) /* -64 */
#define ETCHTYPE_MAX_TINY ((signed char)(0x7f)) /* 127 */
#define ETCHTYPE_MIN_BYTE ((signed char)(0x80)) /* -128 (-(2^7)) */
#define ETCHTYPE_MAX_BYTE ((signed char)(0x7f)) /* 127 ((2^7)-1) */
#define ETCHTYPE_MIN_INT16 ((signed short)(0x8000)) /* -65536 (-(2^15)) */
#define ETCHTYPE_MAX_INT16 ((signed short)(0x7fff)) /* 65535 ((2^15)-1) */
#define ETCHTYPE_MIN_INT32 ((signed int)(0x80000000)) /* (-(2^31)) */
#define ETCHTYPE_MAX_INT32 ((signed int)(0x7fffffff)) /* ((2^31)-1) */
#define ETCHTYPE_MIN_INT64 ((signed long long)(0x8000000000000000LL)) /* (-(2^63)) */
#define ETCHTYPE_MAX_INT64 ((signed long long)(0x7fffffffffffffffLL)) /* ((2^63)-1) */
#define ETCHTYPE_MIN_FLOAT (1.4e-45f)
#define ETCHTYPE_MAX_FLOAT (3.40282346e+38f)
#define ETCHTYPE_MIN_DOUBLE (4.9e-324)
#define ETCHTYPE_MAX_DOUBLE (1.7976931348623157e+308)
#define is_inrange_bool(n) (n == 0 || n == 1)
#define is_inrange_tiny(n) (n >= ETCHTYPE_MIN_TINY && n <= ETCHTYPE_MAX_TINY)
#define is_inrange_tiny_for_signed_chars(n) (n >= ETCHTYPE_MIN_TINY)
#define is_inrange_byte(n) (n >= ETCHTYPE_MIN_BYTE && n <= ETCHTYPE_MAX_BYTE)
#define is_inrange_int8(n) (n >= ETCHTYPE_MIN_BYTE && n <= ETCHTYPE_MAX_BYTE)
#define is_inrange_int16(n)(n >= ETCHTYPE_MIN_INT16 && n <= ETCHTYPE_MAX_INT16)
#define is_inrange_int32(n)(n >= ETCHTYPE_MIN_INT32 && n <= ETCHTYPE_MAX_INT32)
#define is_inrange_int64(n)(n >= ETCHTYPE_MIN_INT64 && n <= ETCHTYPE_MAX_INT64)
#ifdef __cplusplus
}
#endif
#endif /* ETCHOBJTYPES_H */