IFND INTUITION_CLASSES_I INTUITION_CLASSES_I SET 1 ** ** $Filename: intuition/classes.i $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 36.3 $ ** $Date: 91/11/08 $ ** ** Only used by class implementors ** ** (C) Copyright 1989-1999 Amiga, Inc. ** All Rights Reserved ** IFND UTILITY_HOOKS_I INCLUDE "utility/hooks.i" ENDC IFND INTUITION_CLASSUSR_I INCLUDE "intuition/classusr.i" ENDC ;******************************************* ;*** "White box" access to struct IClass *** ;******************************************* STRUCTURE ICLASS,0 STRUCT cl_Dispatcher,h_SIZEOF ULONG cl_Reserved ; must be 0 APTR cl_Super APTR cl_ID ; pointer to null-terminated string ; where within an object is the instance data for this class? UWORD cl_InstOffset UWORD cl_InstSize ULONG cl_UserData ; per-class data of your choice ULONG cl_SubclassCount ; how many direct subclasses? ULONG cl_ObjectCount ; how many objects created of this class? ULONG cl_Flags ; no iclass_SIZEOF because only Intuition allocates these ; defined values of cl_Flags CLB_INLIST EQU 0 CLF_INLIST EQU $00000001 ; class in in public class list ; see classes.h for common calculations (sorry, no macros yet) ;************************************************** ;*** "White box" access to struct _Object *** ;************************************************** * We have this, the instance data of the root class, PRECEDING * the "object". This is so that Gadget objects are Gadget pointers, * and so on. If this structure grows, it will always have o_Class * at the end, so the you can always get it by subtracting #4 from * the pointer returned from NewObject(). * * This data structure is subject to change. Do not use the o_Node * embedded structure. STRUCTURE _Object,0 STRUCT o_Node,MLN_SIZE APTR o_Class ; this value may change but difference between it and offset of o_Class ; will remain constant LABEL _object_SIZEOF ENDC