home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / cbm / os-include.lha / os-include / inline / utility.h < prev    next >
C/C++ Source or Header  |  1993-12-09  |  17KB  |  538 lines

  1. #ifndef _INLINE_UTILITY_H
  2. #define _INLINE_UTILITY_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL extern struct UtilityBase*  UtilityBase;
  11. #endif
  12. #ifndef BASE_PAR_DECL
  13. #define BASE_PAR_DECL
  14. #define BASE_PAR_DECL0 void
  15. #endif
  16. #ifndef BASE_NAME
  17. #define BASE_NAME UtilityBase
  18. #endif
  19.  
  20. static __inline BOOL 
  21. AddNamedObject (BASE_PAR_DECL struct NamedObject *nameSpace,struct NamedObject *object)
  22. {
  23.   BASE_EXT_DECL
  24.   register BOOL  _res  __asm("d0");
  25.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  26.   register struct NamedObject *a0 __asm("a0") = nameSpace;
  27.   register struct NamedObject *a1 __asm("a1") = object;
  28.   __asm __volatile ("jsr a6@(-0xde)"
  29.   : "=r" (_res)
  30.   : "r" (a6), "r" (a0), "r" (a1)
  31.   : "a0","a1","d0","d1", "memory");
  32.   return _res;
  33. }
  34. static __inline struct NamedObject *
  35. AllocNamedObjectA (BASE_PAR_DECL STRPTR name,struct TagItem *tagList)
  36. {
  37.   BASE_EXT_DECL
  38.   register struct NamedObject * _res  __asm("d0");
  39.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  40.   register STRPTR a0 __asm("a0") = name;
  41.   register struct TagItem *a1 __asm("a1") = tagList;
  42.   __asm __volatile ("jsr a6@(-0xe4)"
  43.   : "=r" (_res)
  44.   : "r" (a6), "r" (a0), "r" (a1)
  45.   : "a0","a1","d0","d1", "memory");
  46.   return _res;
  47. }
  48. static __inline struct TagItem *
  49. AllocateTagItems (BASE_PAR_DECL unsigned long numTags)
  50. {
  51.   BASE_EXT_DECL
  52.   register struct TagItem * _res  __asm("d0");
  53.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  54.   register unsigned long d0 __asm("d0") = numTags;
  55.   __asm __volatile ("jsr a6@(-0x42)"
  56.   : "=r" (_res)
  57.   : "r" (a6), "r" (d0)
  58.   : "a0","a1","d0","d1", "memory");
  59.   return _res;
  60. }
  61. static __inline void 
  62. Amiga2Date (BASE_PAR_DECL unsigned long seconds,struct ClockData *result)
  63. {
  64.   BASE_EXT_DECL
  65.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  66.   register unsigned long d0 __asm("d0") = seconds;
  67.   register struct ClockData *a0 __asm("a0") = result;
  68.   __asm __volatile ("jsr a6@(-0x78)"
  69.   : /* no output */
  70.   : "r" (a6), "r" (d0), "r" (a0)
  71.   : "a0","a1","d0","d1", "memory");
  72. }
  73. static __inline void 
  74. ApplyTagChanges (BASE_PAR_DECL struct TagItem *list,struct TagItem *changeList)
  75. {
  76.   BASE_EXT_DECL
  77.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  78.   register struct TagItem *a0 __asm("a0") = list;
  79.   register struct TagItem *a1 __asm("a1") = changeList;
  80.   __asm __volatile ("jsr a6@(-0xba)"
  81.   : /* no output */
  82.   : "r" (a6), "r" (a0), "r" (a1)
  83.   : "a0","a1","d0","d1", "memory");
  84. }
  85. static __inline LONG 
  86. AttemptRemNamedObject (BASE_PAR_DECL struct NamedObject *object)
  87. {
  88.   BASE_EXT_DECL
  89.   register LONG  _res  __asm("d0");
  90.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  91.   register struct NamedObject *a0 __asm("a0") = object;
  92.   __asm __volatile ("jsr a6@(-0xea)"
  93.   : "=r" (_res)
  94.   : "r" (a6), "r" (a0)
  95.   : "a0","a1","d0","d1", "memory");
  96.   return _res;
  97. }
  98. static __inline ULONG 
  99. CallHookPkt (BASE_PAR_DECL struct Hook *hook,APTR object,APTR paramPacket)
  100. {
  101.   BASE_EXT_DECL
  102.   register ULONG  _res  __asm("d0");
  103.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  104.   register struct Hook *a0 __asm("a0") = hook;
  105.   register APTR a2 __asm("a2") = object;
  106.   register APTR a1 __asm("a1") = paramPacket;
  107.   __asm __volatile ("jsr a6@(-0x66)"
  108.   : "=r" (_res)
  109.   : "r" (a6), "r" (a0), "r" (a2), "r" (a1)
  110.   : "a0","a1","a2","d0","d1", "memory");
  111.   return _res;
  112. }
  113. static __inline ULONG 
  114. CheckDate (BASE_PAR_DECL struct ClockData *date)
  115. {
  116.   BASE_EXT_DECL
  117.   register ULONG  _res  __asm("d0");
  118.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  119.   register struct ClockData *a0 __asm("a0") = date;
  120.   __asm __volatile ("jsr a6@(-0x84)"
  121.   : "=r" (_res)
  122.   : "r" (a6), "r" (a0)
  123.   : "a0","a1","d0","d1", "memory");
  124.   return _res;
  125. }
  126. static __inline struct TagItem *
  127. CloneTagItems (BASE_PAR_DECL struct TagItem *tagList)
  128. {
  129.   BASE_EXT_DECL
  130.   register struct TagItem * _res  __asm("d0");
  131.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  132.   register struct TagItem *a0 __asm("a0") = tagList;
  133.   __asm __volatile ("jsr a6@(-0x48)"
  134.   : "=r" (_res)
  135.   : "r" (a6), "r" (a0)
  136.   : "a0","a1","d0","d1", "memory");
  137.   return _res;
  138. }
  139. static __inline ULONG 
  140. Date2Amiga (BASE_PAR_DECL struct ClockData *date)
  141. {
  142.   BASE_EXT_DECL
  143.   register ULONG  _res  __asm("d0");
  144.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  145.   register struct ClockData *a0 __asm("a0") = date;
  146.   __asm __volatile ("jsr a6@(-0x7e)"
  147.   : "=r" (_res)
  148.   : "r" (a6), "r" (a0)
  149.   : "a0","a1","d0","d1", "memory");
  150.   return _res;
  151. }
  152. static __inline void 
  153. FilterTagChanges (BASE_PAR_DECL struct TagItem *changeList,struct TagItem *originalList,unsigned long apply)
  154. {
  155.   BASE_EXT_DECL
  156.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  157.   register struct TagItem *a0 __asm("a0") = changeList;
  158.   register struct TagItem *a1 __asm("a1") = originalList;
  159.   register unsigned long d0 __asm("d0") = apply;
  160.   __asm __volatile ("jsr a6@(-0x36)"
  161.   : /* no output */
  162.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  163.   : "a0","a1","d0","d1", "memory");
  164. }
  165. static __inline ULONG 
  166. FilterTagItems (BASE_PAR_DECL struct TagItem *tagList,Tag *filterArray,unsigned long logic)
  167. {
  168.   BASE_EXT_DECL
  169.   register ULONG  _res  __asm("d0");
  170.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  171.   register struct TagItem *a0 __asm("a0") = tagList;
  172.   register Tag *a1 __asm("a1") = filterArray;
  173.   register unsigned long d0 __asm("d0") = logic;
  174.   __asm __volatile ("jsr a6@(-0x60)"
  175.   : "=r" (_res)
  176.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  177.   : "a0","a1","d0","d1", "memory");
  178.   return _res;
  179. }
  180. static __inline struct NamedObject *
  181. FindNamedObject (BASE_PAR_DECL struct NamedObject *nameSpace,STRPTR name,struct NamedObject *lastObject)
  182. {
  183.   BASE_EXT_DECL
  184.   register struct NamedObject * _res  __asm("d0");
  185.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  186.   register struct NamedObject *a0 __asm("a0") = nameSpace;
  187.   register STRPTR a1 __asm("a1") = name;
  188.   register struct NamedObject *a2 __asm("a2") = lastObject;
  189.   __asm __volatile ("jsr a6@(-0xf0)"
  190.   : "=r" (_res)
  191.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  192.   : "a0","a1","a2","d0","d1", "memory");
  193.   return _res;
  194. }
  195. static __inline struct TagItem *
  196. FindTagItem (BASE_PAR_DECL Tag tagVal,struct TagItem *tagList)
  197. {
  198.   BASE_EXT_DECL
  199.   register struct TagItem * _res  __asm("d0");
  200.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  201.   register Tag d0 __asm("d0") = tagVal;
  202.   register struct TagItem *a0 __asm("a0") = tagList;
  203.   __asm __volatile ("jsr a6@(-0x1e)"
  204.   : "=r" (_res)
  205.   : "r" (a6), "r" (d0), "r" (a0)
  206.   : "a0","a1","d0","d1", "memory");
  207.   return _res;
  208. }
  209. static __inline void 
  210. FreeNamedObject (BASE_PAR_DECL struct NamedObject *object)
  211. {
  212.   BASE_EXT_DECL
  213.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  214.   register struct NamedObject *a0 __asm("a0") = object;
  215.   __asm __volatile ("jsr a6@(-0xf6)"
  216.   : /* no output */
  217.   : "r" (a6), "r" (a0)
  218.   : "a0","a1","d0","d1", "memory");
  219. }
  220. static __inline void 
  221. FreeTagItems (BASE_PAR_DECL struct TagItem *tagList)
  222. {
  223.   BASE_EXT_DECL
  224.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  225.   register struct TagItem *a0 __asm("a0") = tagList;
  226.   __asm __volatile ("jsr a6@(-0x4e)"
  227.   : /* no output */
  228.   : "r" (a6), "r" (a0)
  229.   : "a0","a1","d0","d1", "memory");
  230. }
  231. static __inline ULONG 
  232. GetTagData (BASE_PAR_DECL Tag tagValue,unsigned long defaultVal,struct TagItem *tagList)
  233. {
  234.   BASE_EXT_DECL
  235.   register ULONG  _res  __asm("d0");
  236.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  237.   register Tag d0 __asm("d0") = tagValue;
  238.   register unsigned long d1 __asm("d1") = defaultVal;
  239.   register struct TagItem *a0 __asm("a0") = tagList;
  240.   __asm __volatile ("jsr a6@(-0x24)"
  241.   : "=r" (_res)
  242.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  243.   : "a0","a1","d0","d1", "memory");
  244.   return _res;
  245. }
  246. static __inline ULONG 
  247. GetUniqueID (BASE_PAR_DECL0)
  248. {
  249.   BASE_EXT_DECL
  250.   register ULONG  _res  __asm("d0");
  251.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  252.   __asm __volatile ("jsr a6@(-0x10e)"
  253.   : "=r" (_res)
  254.   : "r" (a6)
  255.   : "a0","a1","d0","d1", "memory");
  256.   return _res;
  257. }
  258. static __inline void 
  259. MapTags (BASE_PAR_DECL struct TagItem *tagList,struct TagItem *mapList,unsigned long mapType)
  260. {
  261.   BASE_EXT_DECL
  262.   regist