[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

#ifndef EXEC_LIBRARIES_H
#define EXEC_LIBRARIES_H
/*
**      $Filename: exec/libraries.h $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 36.10 $
**      $Date: 90/05/10 $
**
**      Definitions for use when creating or using Exec libraries
**
**      (C) Copyright 1985-1999 Amiga, Inc.
**          All Rights Reserved
*/

#ifndef EXEC_NODES_H
#include "exec/nodes.h"
#endif /* EXEC_NODES_H */


/*------ Special Constants ---------------------------------------*/
#define LIB_VECTSIZE   6       /* Each library entry takes 6 bytes */
#define LIB_RESERVED   4       /* Exec reserves the first 4 vectors */
#define LIB_BASE       (-LIB_VECTSIZE)
#define LIB_USERDEF     (LIB_BASE-(LIB_RESERVED*LIB_VECTSIZE))
#define LIB_NONSTD      (LIB_USERDEF)

/*------ Standard Functions --------------------------------------*/
#define LIB_OPEN       (-6)
#define LIB_CLOSE      (-12)
#define LIB_EXPUNGE     (-18)
#define LIB_EXTFUNC     (-24)   /* for future expansion */

/*------ Library Base Structure ----------------------------------*/
/* Also used for Devices and some Resources */
struct Library {
    struct  Node lib_Node;
    UBYTE   lib_Flags;
    UBYTE   lib_pad;
    UWORD   lib_NegSize;           /* number of bytes before library */
    UWORD   lib_PosSize;           /* number of bytes after library */
    UWORD   lib_Version;           /* major */
    UWORD   lib_Revision;          /* minor */
    APTR    lib_IdString;          /* ASCII identification */
    ULONG   lib_Sum;                /* the checksum itself */
    UWORD   lib_OpenCnt;            /* number of current opens */
};      /* Warning: size is not a longword multiple! */

/* lib_Flags bit definitions (all others are system reserved) */
#define LIBF_SUMMING   (1<<0)            /* we are currently checksumming */
#define LIBF_CHANGED   (1<<1)            /* we have just changed the lib */
#define LIBF_SUMUSED    (1<<2)            /* set if we should bother to sum */
#define LIBF_DELEXP     (1<<3)            /* delayed expunge */


/* Temporary Compatibility */
#define lh_Node        lib_Node
#define lh_Flags        lib_Flags
#define lh_pad         lib_pad
#define lh_NegSize     lib_NegSize
#define lh_PosSize     lib_PosSize
#define lh_Version     lib_Version
#define lh_Revision    lib_Revision
#define lh_IdString     lib_IdString
#define lh_Sum          lib_Sum
#define lh_OpenCnt      lib_OpenCnt

#endif  /* EXEC_LIBRARIES_H */