text: /*** aslp.h - ASL Private Definitions
   *
   *  Copyright (c) 1996,1997 Microsoft Corporation
   *  Author:     Michael Tsang (MikeTs)
   *  Created     09/05/96
   *
   *  MODIFICATION HISTORY
   */
  
  #ifndef _ASLP_H
  #define _ASLP_H
  
  /*** Constants
   */
  
  // String constants
  #define STR_PROGDESC            "ACPI Source Language Assembler"
  #define STR_COPYRIGHT           "Copyright (c) 1996,1999 Microsoft Corporation"
  #define STR_MS          "MSFT"
  
  // Error codes
  #define ASLERR_NONE             0
  #define ASLERR_INVALID_PARAM    -1
  #define ASLERR_OPEN_FILE        -2
  #define ASLERR_CREATE_FILE      -3
  #define ASLERR_READ_FILE        -4
  #define ASLERR_WRITE_FILE       -5
  #define ASLERR_SEEK_FILE        -6
  #define ASLERR_INIT_SCANNER     -7
  #define ASLERR_OUT_OF_MEM       -8
  #define ASLERR_NAME_TOO_LONG    -9
  #define ASLERR_NEST_DDB         -10
  #define ASLERR_SYNTAX           -11
  #define ASLERR_PKTLEN_TOO_LONG  -12
  #define ASLERR_NAME_EXIST       -13
  #define ASLERR_NSOBJ_EXIST      -14
  #define ASLERR_NSOBJ_NOT_FOUND  -15
  #define ASLERR_INVALID_NAME     -16
  #define ASLERR_INTERNAL_ERROR   -17
  #define ASLERR_INVALID_EISAID   -18
  #define ASLERR_EXPECT_EOF       -19
  #define ASLERR_INVALID_OPCODE   -20
  #define ASLERR_SIG_NOT_FOUND    -21
  #define ASLERR_GET_TABLE        -22
  #define ASLERR_CHECKSUM         -23
  #define ASLERR_INVALID_ARGTYPE  -24
  #define ASLERR_INVALID_OBJTYPE  -25
  #define ASLERR_OPEN_VXD         -26
  
  // Misc. constants
  #define VERSION_MAJOR           1
  #define VERSION_MINOR           0
  #define VERSION_RELEASE         14
  #define VERSION_DWORD           ((VERSION_MAJOR << 24) | \
                                   (VERSION_MINOR << 16) | \
                                   VERSION_RELEASE)
  
  // Implementation constants
  #define MAX_STRING_LEN          199
  #define MAX_NAMECODE_LEN        1300    //approx. 255*4 + 2 + 255
  #define MAX_MSG_LEN             127
  #define MAX_PACKAGE_LEN         0x0fffffff
  
  // gdwfASL flags
  #define ASLF_NOLOGO             0x00000001
  #define ASLF_UNASM              0x00000002
  #define ASLF_GENASM             0x00000004
  #define ASLF_GENSRC             0x00000008
  #define ASLF_NT                 0x00000010
  #define ASLF_DUMP_NONASL        0x00000020
  #define ASLF_DUMP_BIN           0x00000040
  #define ASLF_CREAT_BIN          0x00000080
  
  // Code flags
  #define CF_MISSING_ARG          0x00000001
  #define CF_PARSING_FIXEDLIST    0x00000002
  #define CF_PARSING_VARLIST      0x00000004
  #define CF_CREATED_NSOBJ        0x00000008
  
  // Data types
  #define CODETYPE_UNKNOWN        0
  #define CODETYPE_ASLTERM        1
  #define CODETYPE_NAME           2
  #define CODETYPE_DATAOBJ        3
  #define CODETYPE_FIELDOBJ       4
  #define CODETYPE_INTEGER        5
  #define CODETYPE_STRING         6
  #define CODETYPE_KEYWORD        7
  #define CODETYPE_USERTERM       8
  #define CODETYPE_QWORD          9
  
  /*** Macros
   */
  
  #define MODNAME                 ProgInfo.pszProgName
  #define ISLEADNAMECHAR(c)       (((c) >= 'A') && ((c) <= 'Z') || ((c) == '_'))
  #define ISNAMECHAR(c)           (ISLEADNAMECHAR(c) || ((c) >= '0') && ((c) <= '9'))
  #define OPCODELEN(d)            (((d) == OP_NONE)? 0: (((d) & 0x0000ff00)? 2: 1))
  #ifdef DEBUG
    #define MEMALLOC(n)           (++gdwcMemObjs, malloc(n))
    #define MEMFREE(p)            {ASSERT(gdwcMemObjs > 0); free(p); --gdwcMemObjs;}
  #else
    #define MEMALLOC(n)           malloc(n)
    #define MEMFREE(p)            free(p)
  #endif
  
  /*** Type definitions
   */
  
  typedef struct _codeobj
  {
      LIST   list;                //link to siblings
      struct _codeobj *pcParent;
      struct _codeobj *pcFirstChild;
      PNSOBJ pnsObj;
      DWORD  dwTermIndex;
      DWORD  dwfCode;
      DWORD  dwCodeType;
      DWORD  dwCodeValue;
      DWORD  dwDataLen;
      PBYTE  pbDataBuff;
      DWORD  dwCodeLen;
      BYTE   bCodeChkSum;
  } CODEOBJ, *PCODEOBJ;
  
  typedef struct _nschk
  {
      struct _nschk *pnschkNext;
      char   szObjName[MAX_NSPATH_LEN + 1];
      PSZ    pszFile;
      PNSOBJ pnsScope;
      PNSOBJ pnsMethod;
      ULONG  dwExpectedType;
      ULONG  dwChkData;
      WORD   wLineNum;
  } NSCHK, *PNSCHK;
  
  typedef struct _resfield
  {
      PSZ   pszName;
      DWORD dwBitOffset;
      DWORD dwBitSize;
  } RESFIELD, *PRESFIELD;
  
  #endif  //ifndef _ASLP_H
  