1 #ifndef INTUITION_CLASSUSR_H
    2 #define INTUITION_CLASSUSR_H
    3 
    4 /*
    5 	intuition class user definitions
    6 
    7 	Copyright © 2002-2008 The MorphOS Development Team, All Rights Reserved.
    8 */
    9 
   10 #ifndef UTILITY_HOOKS_H
   11 # include <utility/hooks.h>
   12 #endif
   13 
   14 #pragma pack(2)
   15 
   16 /*
   17 	NOTE: Please note that in order to allow Objective-C compatibility, we
   18 	had to rename Object to Boopsiobject in our includes. When not building
   19 	in Obj-C mode, Boopsiobject gets typedef'ed to Object for backwards
   20 	compatibility with C sources.
   21 */
   22 
   23 typedef ULONG Boopsiobject;
   24 
   25 #if !defined(__OBJC__) 
   26 typedef Boopsiobject Object;
   27 #endif
   28 
   29 typedef UBYTE *ClassID;
   30 
   31 typedef struct _Msg_
   32 {
   33 	ULONG MethodID;
   34 } *Msg;
   35 
   36 
   37 #define ROOTCLASS      "rootclass"
   38 #define IMAGECLASS     "imageclass"
   39 #define FRAMEICLASS    "frameiclass"
   40 #define SYSICLASS      "sysiclass"
   41 #define FILLRECTCLASS  "fillrectclass"
   42 #define GADGETCLASS    "gadgetclass"
   43 #define PROPGCLASS     "propgclass"
   44 #define STRGCLASS      "strgclass"
   45 #define BUTTONGCLASS   "buttongclass"
   46 #define FRBUTTONCLASS  "frbuttonclass"
   47 #define GROUPGCLASS    "groupgclass"
   48 #define ICCLASS        "icclass"
   49 #define MODELCLASS     "modelclass"
   50 #define ITEXTICLASS    "itexticlass"
   51 #define POINTERCLASS   "pointerclass"
   52 
   53 
   54 #define OM_Dummy      (0x100)
   55 #define OM_NEW        (OM_Dummy + 1)
   56 #define OM_DISPOSE    (OM_Dummy + 2)
   57 #define OM_SET        (OM_Dummy + 3)
   58 #define OM_GET        (OM_Dummy + 4)
   59 #define OM_ADDTAIL    (OM_Dummy + 5)
   60 #define OM_REMOVE     (OM_Dummy + 6)
   61 #define OM_NOTIFY     (OM_Dummy + 7)
   62 #define OM_UPDATE     (OM_Dummy + 8)
   63 #define OM_ADDMEMBER  (OM_Dummy + 9)
   64 #define OM_REMMEMBER  (OM_Dummy + 10)
   65 
   66 /* This increases the BOOPSI object's usage counter. If you create a new object,
   67 ** and send it an OM_RETAIN, you will need to call OM_RELEASE (or OM_DISPOSE!)
   68 ** twice for the object to be disposed. This implies that OM_DISPOSE and
   69 ** OM_RELEASE are interchangeable.
   70 ** NOTE: the same rules apply to MUI objects - they accept OM_RETAIN/OM_RELEASE
   71 ** and MUI_DisposeObject is interchangeable with an OM_RETAIN
   72 */
   73 #define OM_RETAIN     (OM_Dummy + 11)
   74 #define OM_RELEASE    (OM_Dummy + 12)
   75 
   76 
   77 struct opSet
   78 {
   79 	ULONG              MethodID;
   80 	struct TagItem    *ops_AttrList;
   81 	struct GadgetInfo *ops_GInfo;
   82 };
   83 
   84 struct opUpdate
   85 {
   86 	ULONG              MethodID;
   87 	struct TagItem    *opu_AttrList;
   88 	struct GadgetInfo *opu_GInfo;
   89 	ULONG              opu_Flags;
   90 };
   91 
   92 #define OPUF_INTERIM  (1<<0)
   93 
   94 struct opGet
   95 {
   96 	ULONG  MethodID;
   97 	ULONG  opg_AttrID;
   98 	ULONG *opg_Storage;
   99 };
  100 
  101 struct opAddTail
  102 {
  103 	ULONG        MethodID;
  104 	struct List *opat_List;
  105 };
  106 
  107 struct opMember
  108 {
  109 	ULONG         MethodID;
  110 	Boopsiobject *opam_Object;
  111 };
  112 
  113 
  114 #define opAddMember  opMember
  115 
  116 
  117 #pragma pack()
  118 
  119 #endif /* INTUITION_CLASSUSR_H */