/* -----------------------------------------------------------------
 * Created automagically from ../names.aisc
 * using aisc-script '../AISC/aisc_com.pa'
 * DO NOT EDIT THIS FILE!!!
 * ----------------------------------------------------------------- */

#ifndef _LIMITS_H
#include <limits.h>
#endif
#ifndef AISC_GLOBAL_H
#include <aisc_global.h>
#endif
#ifndef AISC_MAX_OBJECT
# define AISC_MAX_OBJECT         4
# define AISC_MAX_ATTR           21
# define MAX_AISC_SET_GET        16
# define AISC_MAX_STRING_LEN     1024
# define AISC_MESSAGE_BUFFER_LEN ((AISC_MAX_STRING_LEN/4+3)*(16+2))
# define AISC_MAGIC_NUMBER       0x414e5300

struct aisc_com;

const int AISC_GET        = AISC_MAGIC_NUMBER+0;
const int AISC_SET        = AISC_MAGIC_NUMBER+1;
const int AISC_NSET       = AISC_MAGIC_NUMBER+2;
const int AISC_CREATE     = AISC_MAGIC_NUMBER+3;
const int AISC_FIND       = AISC_MAGIC_NUMBER+4;
const int AISC_COPY       = AISC_MAGIC_NUMBER+5;
const int AISC_DELETE     = AISC_MAGIC_NUMBER+6;
const int AISC_INIT       = AISC_MAGIC_NUMBER+7;
const int AISC_DEBUG_INFO = AISC_MAGIC_NUMBER+8;

const int AISC_CCOM_OK      = AISC_MAGIC_NUMBER+0;
const int AISC_CCOM_ERROR   = AISC_MAGIC_NUMBER+1;
const int AISC_CCOM_MESSAGE = AISC_MAGIC_NUMBER+2;

#endif


#define AN_ATTR_INT(a,b)    (((a)+(b))|0x1000000)
#define AN_ATTR_DOUBLE(a,b) (((a)+(b))|0x2000000)
#define AN_ATTR_STRING(a,b) (((a)+(b))|0x3000000)
#define AN_ATTR_COMMON(a,b) (((a)+(b))|0x4000000)
#define AN_ATTR_REVERS(a,b) (((a)+(b))|0x4000000)
#define AN_ATTR_SHORTS(a,b) (((a)+(b))|0x4000000)
#define AN_ATTR_LOCAL(a,b)  (((a)+(b))|0x4000000)
#define AN_ATTR_MAIN(a,b)   (((a)+(b))|0x4000000)
#define AN_ATTR_BYTES(a,b)  (((a)+(b))|0x5000000)

enum Aisc_Object_Type {
    AN_COMMON = 0x10000*0,
    AN_REVERS = 0x10000*4,
    AN_SHORTS = 0x10000*3,
    AN_LOCAL  = 0x10000*2,
    AN_MAIN   = 0x10000*1,
    AN_MAX    = 0x10000*4,
    AN_INDEX  = 0x10000*0x1ff
};

struct T_AN_COMMON : public AISC_Object {
    T_AN_COMMON() : AISC_Object(AN_COMMON) {}
    void assign(const T_AN_COMMON& o) { set(o.type(), o.get()); }
};
struct T_AN_REVERS : public AISC_Object {
    T_AN_REVERS() : AISC_Object(AN_REVERS) {}
    void assign(const T_AN_REVERS& o) { set(o.type(), o.get()); }
};
struct T_AN_SHORTS : public AISC_Object {
    T_AN_SHORTS() : AISC_Object(AN_SHORTS) {}
    void assign(const T_AN_SHORTS& o) { set(o.type(), o.get()); }
};
struct T_AN_LOCAL : public AISC_Object {
    T_AN_LOCAL() : AISC_Object(AN_LOCAL) {}
    void assign(const T_AN_LOCAL& o) { set(o.type(), o.get()); }
};
struct T_AN_MAIN : public AISC_Object {
    T_AN_MAIN() : AISC_Object(AN_MAIN) {}
    void assign(const T_AN_MAIN& o) { set(o.type(), o.get()); }
};

enum AN_COMMON_Attribute { // COMMON
    COMMON_KEY       = AN_ATTR_INT   (AN_COMMON, 0), //
    COMMON_KEYSTRING = AN_ATTR_STRING(AN_COMMON, 1), //
    COMMON_CNT       = AN_ATTR_INT   (AN_COMMON, 2), // S
    COMMON_PARENT    = AN_ATTR_INT   (AN_COMMON, 3), // S
    COMMON_LAST      = AN_ATTR_INT   (AN_COMMON, 4), // S
    COMMON_IDENT     = AN_ATTR_STRING(AN_COMMON, 5), //
    COMMON_FORCELONG = LONG_MAX
};

enum AN_REVERS_Attribute { // REVERS
    REVERS_PRED      = AN_ATTR_REVERS(AN_REVERS, 0), // DO
    REVERS_NEXT      = AN_ATTR_REVERS(AN_REVERS, 1), //
    REVERS_KEY       = AN_ATTR_INT   (AN_REVERS, 2), // H
    REVERS_KEYSTRING = AN_ATTR_STRING(AN_REVERS, 3), // H
    REVERS_CNT       = AN_ATTR_INT   (AN_REVERS, 4), // H S
    REVERS_PARENT    = AN_ATTR_INT   (AN_REVERS, 5), // H S
    REVERS_LAST      = AN_ATTR_INT   (AN_REVERS, 6), // H S
    REVERS_IDENT     = AN_ATTR_STRING(AN_REVERS, 7), // H
    REVERS_FORCELONG = LONG_MAX
};

enum AN_SHORTS_Attribute { // SHORTS
    SHORTS_PRED      = AN_ATTR_SHORTS(AN_SHORTS, 0),  // DO
    SHORTS_NEXT      = AN_ATTR_SHORTS(AN_SHORTS, 1),  //
    SHORTS_KEY       = AN_ATTR_INT   (AN_SHORTS, 2),  // H
    SHORTS_KEYSTRING = AN_ATTR_STRING(AN_SHORTS, 3),  // H
    SHORTS_CNT       = AN_ATTR_INT   (AN_SHORTS, 4),  // H S
    SHORTS_PARENT    = AN_ATTR_INT   (AN_SHORTS, 5),  // H S
    SHORTS_LAST      = AN_ATTR_INT   (AN_SHORTS, 6),  // H S
    SHORTS_IDENT     = AN_ATTR_STRING(AN_SHORTS, 7),  // H
    SHORTS_FULL_NAME = AN_ATTR_STRING(AN_SHORTS, 8),  //
    SHORTS_ACC       = AN_ATTR_STRING(AN_SHORTS, 9),  //
    SHORTS_ADDID     = AN_ATTR_STRING(AN_SHORTS, 10), //
    SHORTS_SHORT     = AN_ATTR_STRING(AN_SHORTS, 11), //
    SHORTS_FORCELONG = LONG_MAX
};

enum AN_LOCAL_Attribute { // LOCAL
    LOCAL_PRED      = AN_ATTR_LOCAL (AN_LOCAL, 0),  // DO
    LOCAL_NEXT      = AN_ATTR_LOCAL (AN_LOCAL, 1),  //
    LOCAL_KEY       = AN_ATTR_INT   (AN_LOCAL, 2),  // H
    LOCAL_KEYSTRING = AN_ATTR_STRING(AN_LOCAL, 3),  // H
    LOCAL_CNT       = AN_ATTR_INT   (AN_LOCAL, 4),  // H S
    LOCAL_PARENT    = AN_ATTR_INT   (AN_LOCAL, 5),  // H S
    LOCAL_LAST      = AN_ATTR_INT   (AN_LOCAL, 6),  // H S
    LOCAL_IDENT     = AN_ATTR_STRING(AN_LOCAL, 7),  // H
    LOCAL_WHOAMI    = AN_ATTR_STRING(AN_LOCAL, 8),  //
    LOCAL_FULL_NAME = AN_ATTR_STRING(AN_LOCAL, 9),  //
    LOCAL_ACCESSION = AN_ATTR_STRING(AN_LOCAL, 10), //
    LOCAL_ADDID     = AN_ATTR_STRING(AN_LOCAL, 11), //
    LOCAL_ADVICE    = AN_ATTR_STRING(AN_LOCAL, 13), //
    LOCAL_GET_SHORT = AN_ATTR_STRING(AN_LOCAL, 14), //
    LOCAL_DEL_SHORT = AN_ATTR_INT   (AN_LOCAL, 15), //
    LOCAL_FORCELONG = LONG_MAX
};

enum AN_MAIN_Attribute { // MAIN
    MAIN_LOCAL       = AN_ATTR_LOCAL (AN_MAIN, 8),  // DL
    MAIN_LOCAL_CNT   = AN_ATTR_INT   (AN_MAIN, 9),  // DL
    MAIN_SHORTS1     = AN_ATTR_SHORTS(AN_MAIN, 10), // DL
    MAIN_SHORTS1_CNT = AN_ATTR_INT   (AN_MAIN, 11), // DL
    MAIN_NAMES       = AN_ATTR_SHORTS(AN_MAIN, 12), // DL
    MAIN_NAMES_CNT   = AN_ATTR_INT   (AN_MAIN, 13), // DL
    MAIN_TOUCHED     = AN_ATTR_INT   (AN_MAIN, 14), //
    MAIN_SHUTDOWN    = AN_ATTR_STRING(AN_MAIN, 15), //
    MAIN_SAVEALL     = AN_ATTR_INT   (AN_MAIN, 16), //
    MAIN_FILENAME    = AN_ATTR_STRING(AN_MAIN, 17), //
    MAIN_FILEDATE    = AN_ATTR_INT   (AN_MAIN, 18), //
    MAIN_DBVERSION   = AN_ATTR_INT   (AN_MAIN, 19), //
    MAIN_ADD_FIELD   = AN_ATTR_STRING(AN_MAIN, 20), //
    MAIN_AF_DEFAULT  = AN_ATTR_STRING(AN_MAIN, 21), //
    MAIN_FORCELONG   = LONG_MAX
};

