NAME
    predefined - predefined #defines by the parser

DESCRIPTION
    Several preprocessor macros are pre#defined by the parser,
    to provide information about parser version, compile time
    options and parser invocation options:

      LPC3            : always defined.
      __LDMUD__       : always defined.
      __EUIDS__       : always (for compatibility).
      COMPAT_FLAG     : defined if the driver runs in compat mode.
      __COMPAT_MODE__ : ditto
      __STRICT_EUIDS__: defined if strict euid usage is enforced.
      __FILENAME_SPACES__: defined if filenames may contain spaces.

      __MASTER_OBJECT__ : the name of the master object (in compat mode
                          without leading '/').
      __FILE__          : the name of the compiled file (in compat mode
                          without leading '/').
      __LINE__          : the current line number.
      __FUNCTION__      : the current function name.
      __DIR__           : the directory path of the compiled file (in
                          compat mode without leading '/').
      __PATH__(n)       : the directory path of the compiled file without
                          the <n> trailing elements (in compat mode without
                          leading '/').
      __VERSION__       : the version string of the driver.
      __VERSION_MAJOR__ : the major version number of the driver.
      __VERSION_MINOR__ : the minor version number of the driver.
      __VERSION_MICRO__ : the micro version number of the driver.
      __VERSION_PATCH__ : the patchlevel of the driver; a 0 here means
                          'no patchlevel'.
      __VERSION_COMMITID__ : the commit ID of the source of the driver 
                             (attention: it might be <unknown>, if the driver
                              was not compiled from a git repository)
      __VERSION_LOCAL__ : the (optional) LOCAL_LEVEL, the user has defined.


      __DOMAIN_NAME__    : the domain the host is part of.
      __HOST_IP_NUMBER__ : the hosts IP number (as a string).
      __HOST_NAME__      : the full hostname.
      __MAX_RECURSION__  : the max count of nested function calls
                           (this is config.h:MAX_USER_TRACE).
      __MAX_EVAL_COST__  : the max evaluation cost.
      __RESET_TIME__     : default interval time between object resets.
      __CLEANUP_TIME__   : default interval time between object cleanups.
      __ALARM_TIME__     : the configured timing granularity.
      __HEART_BEAT_INTERVAL__: the configured heartbeat time.
      __SYNCHRONOUS_HEART_BEAT__: defined if synchronous heartbeats are
                           enabled.
      __MAX_COMMAND_LENGTH__: the maximum length a command can have.
      __EFUN_DEFINED__(name) : if the efun 'name' exists, this
                               macro evaluates to " 1 ", else to " 0 ".
      __DRIVER_LOG__     : the name of the default debug.log file (within
                           the mudlib); undefined if a different name
                           has been specified on the commandline.
      __WIZLIST__        : the name of the (mudlib) file from where the
                           driver read the initial WIZLIST information.
                           It is undefined if the driver was configured
                           to not read the information.
      __MAX_MALLOC__     : the internal upper limit for total memory
                           usage.
      __INT_MAX__        : the largest integer number
      __INT_MIN__        : the smallest integer number
      __FLOAT_MAX__      : the largest (positive) float number
      __FLOAT_MIN__      : the smallest (positive) float number

      __LPC_NOSAVE__     : always defined
      __LPC_STRUCTS__    : defined when struct support is enabled.
                           Once structs are fully supported, this macro
                           will always be defined.
      __LPC_INLINE_CLOSURES__: defined when the 'real' inline closures
                           are enabled.
      __LPC_ARRAY_CALLS__: call_other()s on arrays of objects enabled.
      __BOOT_TIME__      : the time() the driver was started.

    If the ERQ is supported, the following macros are defined:

      __ERQ_MAX_SEND__  : the max size of the send buffer
      __ERQ_MAX_REPLY__ : the max size of the reply buffer

    The following macros are defined if their associated package
    has been compiled into the driver:

      __IDNA__ :      support for IDNA
      __IPV6__ :      support for IP v.6
      __MYSQL__ :     support for mySQL
      __PGSQL__ :     support for PostgreSQL
      __SQLITE__ :    support for SQLite 3.
      __XML_DOM__ :   support for XML parsing.
      __JSON__ :      support for JSON parsing/serializing.
      __MCCP__:       support for MCCP http://www.randomly.org/projects/MCCP
      __ALISTS__:     support for alists
      __PCRE__:       support for PCRE
      __TLS__:        support for TLS (internal)
      __GNUTLS__:     if __TLS__: TLS support provided by GnuTLS.
      __OPENSSL__:    if __TLS__: TLS support provided by OpenSSL.
      __GCRYPT__:     cryptographic routines provided by libgcrypt.
      __DEPRECATED__: support for obsolete and deprecated efuns.


HISTORY
    3.2.1 added __DOMAIN_NAME__, __HOST_IP_NUMBER__, __HOST_NAME__,
        __MAX_RECURSION__, __EFUN_DEFINED__().
    3.2.5 added __COMPAT_MODE__, __NATIVE_MODE__, __EUIDS__,
        __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__.
    3.2.6 added __MAX_EVAL_COST__.
    3.2.7 added __STRICT_EUIDS__ and made __EUIDS__ standard.
    3.2.8 added __IPV6__, __LPC_NOSAVE__, __DIR__, __PATH__().
    3.2.9 added __LDMUD__, __MYSQL__, __DEPRECATED__, __VERSION_MAJOR__,
         __VERSION_MINOR__, __VERSION_MICRO__, __VERSION_PATCH__,
         __INT_MAX__, __INT_MIN__, __FLOAT_MIN__, __FLOAT_MAX__,
        __CATCH_EVAL_COST__, __MASTER_EVAL_COST__, __RESET_TIME__,
        __CLEANUP_TIME__, __DRIVER_LOG__, and __WIZLIST__.
    3.2.10 added __MAX_MALLOC__, __MSDOS_FS__, __LPC_ARRAY_CALLS__
        and __FILENAME_SPACES__.
    3.3 made __LPC_NOSAVE__ always defined and added __ALISTS__,
        __MCCP__, __LPC_STRUCTS__, __LPC_INLINE_CLOSURES__, __PGSQL__,
        __PTHREADS__, __TLS__, __BOOT_TIME__, __ALARM_TIME__,
        __HEART_BEAT_INTERVAL__, __SYNCHRONOUS_HEART_BEAT__, and __PCRE__.
    3.3.713 added __IDNA__, __SQLITE__.
    3.3.714 added __OPENSSL__, __GNUTLS__.
    3.3.718 added __XML_DOM__.
    3.3.719 removed __PTHREADS__, AMIGA, MSDOS_FS, __BEOS__  
		    and added __GCRYPT__.
    3.3.721 added __FUNCTION__.

SEE ALSO
    pragma(LPC), preprocessor(LPC)
