/*
**      $VER: spobjectbase.h 5.1 (8.8.96)
**
**      SPObjectBase definition for V3+
**
**      (C) Copyright 1994-96 Andreas R. Kleinert
**      All Rights Reserved.
*/

#ifndef SPOBJECTS_SPOBJECTBASE_H
#define SPOBJECTS_SPOBJECTBASE_H

#ifndef SPOBJECTS_SPOBJECTS_H
#include <spobjects/spobjects.h>
#endif /* SPOBJECTS_SPOBJECTS_H */

#ifndef EXEC_LISTS
#include <exec/lists.h>
#endif /* EXEC_LISTS */

#ifndef EXEC_LIBRARIES
#include <exec/libraries.h>
#endif /* EXEC_LIBRARIES_H */

   /* An external support-library for the superplay.library is called a
      "spobject".
      Each spobject has to contain a "SPO_ObjectNode" structure (as follows)
      in its Library-Header, which later will be READ and MODIFIED by
      the superplay.library.
      Because the superplay.library supports three different sorts
      of SPObjects at the time (internal, independent and external),
      there are three different types of this structure (might be more in
      the future), which can be identified via their "spo_ObjectType".
   */

   /* The Construction of a spobject :
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      The Library Base
      ----------------
      Version information: only the revision can be set freely
      (see structure described below)

      The Function Table
      ------------------
      (see <pragmas/spobjects.h>)

   */

/* *************************************************** */
/* *						     * */
/* * Library base Definition for spobjects	     * */
/* *						     * */
/* *************************************************** */

struct SPObjectBase
{
 struct Library         spb_LibNode;       /* Exec LibNode                   */
 struct SPO_ObjectNode *spb_SPObject;      /* POINTER to initialized         */
                                           /* SPO_ObjectNode                 */
                                           /* Must be AllocVec()'ed, will be */
                                           /* modified and delocated by      */
                                           /* superplay.library later.       */

 ULONG			spb_Reserved [32]; /* Reserved for future expansion. */
					   /* Always NULL yet (Version 1).   */

 /*
   Private data of the spobject, not to be accessed
   by superplay.library, may follow.
 */
};

#endif /* SPOBJECTS_SPOBJECTBASE_H */
