home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / programm / language / gcc222.lha / os-include / inline / utility.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-19  |  10.5 KB  |  353 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 struct TagItem *
  21. AllocateTagItems (BASE_PAR_DECL unsigned long numItems)
  22. {
  23.   BASE_EXT_DECL
  24.   register struct TagItem * _res  __asm("d0");
  25.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  26.   register unsigned long d0 __asm("d0") = numItems;
  27.   __asm __volatile ("jsr a6@(-0x42)"
  28.   : "=r" (_res)
  29.   : "r" (a6), "r" (d0)
  30.   : "a0","a1","d0","d1", "memory");
  31.   return _res;
  32. }
  33. static __inline void 
  34. Amiga2Date (BASE_PAR_DECL unsigned long amigaTime,struct ClockData *date)
  35. {
  36.   BASE_EXT_DECL
  37.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  38.   register unsigned long d0 __asm("d0") = amigaTime;
  39.   register struct ClockData *a0 __asm("a0") = date;
  40.   __asm __volatile ("jsr a6@(-0x78)"
  41.   : /* no output */
  42.   : "r" (a6), "r" (d0), "r" (a0)
  43.   : "a0","a1","d0","d1", "memory");
  44. }
  45. static __inline ULONG 
  46. CallHookPkt (BASE_PAR_DECL struct Hook *hook,APTR object,APTR paramPacket)
  47. {
  48.   BASE_EXT_DECL
  49.   register ULONG  _res  __asm("d0");
  50.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  51.   register struct Hook *a0 __asm("a0") = hook;
  52.   register APTR a2 __asm("a2") = object;
  53.   register APTR a1 __asm("a1") = paramPacket;
  54.   __asm __volatile ("jsr a6@(-0x66)"
  55.   : "=r" (_res)
  56.   : "r" (a6), "r" (a0), "r" (a2), "r" (a1)
  57.   : "a0","a1","a2","d0","d1", "memory");
  58.   return _res;
  59. }
  60. static __inline ULONG 
  61. CheckDate (BASE_PAR_DECL struct ClockData *date)
  62. {
  63.   BASE_EXT_DECL
  64.   register ULONG  _res  __asm("d0");
  65.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  66.   register struct ClockData *a0 __asm("a0") = date;
  67.   __asm __volatile ("jsr a6@(-0x84)"
  68.   : "=r" (_res)
  69.   : "r" (a6), "r" (a0)
  70.   : "a0","a1","d0","d1", "memory");
  71.   return _res;
  72. }
  73. static __inline struct TagItem *
  74. CloneTagItems (BASE_PAR_DECL struct TagItem *tagList)
  75. {
  76.   BASE_EXT_DECL
  77.   register struct TagItem * _res  __asm("d0");
  78.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  79.   register struct TagItem *a0 __asm("a0") = tagList;
  80.   __asm __volatile ("jsr a6@(-0x48)"
  81.   : "=r" (_res)
  82.   : "r" (a6), "r" (a0)
  83.   : "a0","a1","d0","d1", "memory");
  84.   return _res;
  85. }
  86. static __inline ULONG 
  87. Date2Amiga (BASE_PAR_DECL struct ClockData *date)
  88. {
  89.   BASE_EXT_DECL
  90.   register ULONG  _res  __asm("d0");
  91.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  92.   register struct ClockData *a0 __asm("a0") = date;
  93.   __asm __volatile ("jsr a6@(-0x7e)"
  94.   : "=r" (_res)
  95.   : "r" (a6), "r" (a0)
  96.   : "a0","a1","d0","d1", "memory");
  97.   return _res;
  98. }
  99. static __inline void 
  100. FilterTagChanges (BASE_PAR_DECL struct TagItem *newTagList,struct TagItem *oldTagList,long apply)
  101. {
  102.   BASE_EXT_DECL
  103.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  104.   register struct TagItem *a0 __asm("a0") = newTagList;
  105.   register struct TagItem *a1 __asm("a1") = oldTagList;
  106.   register long d0 __asm("d0") = apply;
  107.   __asm __volatile ("jsr a6@(-0x36)"
  108.   : /* no output */
  109.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  110.   : "a0","a1","d0","d1", "memory");
  111. }
  112. static __inline LONG 
  113. FilterTagItems (BASE_PAR_DECL struct TagItem *tagList,Tag *filterArray,long logic)
  114. {
  115.   BASE_EXT_DECL
  116.   register LONG  _res  __asm("d0");
  117.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  118.   register struct TagItem *a0 __asm("a0") = tagList;
  119.   register Tag *a1 __asm("a1") = filterArray;
  120.   register long d0 __asm("d0") = logic;
  121.   __asm __volatile ("jsr a6@(-0x60)"
  122.   : "=r" (_res)
  123.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  124.   : "a0","a1","d0","d1", "memory");
  125.   return _res;
  126. }
  127. static __inline struct TagItem *
  128. FindTagItem (BASE_PAR_DECL Tag tagVal,struct TagItem *tagList)
  129. {
  130.   BASE_EXT_DECL
  131.   register struct TagItem * _res  __asm("d0");
  132.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  133.   register Tag d0 __asm("d0") = tagVal;
  134.   register struct TagItem *a0 __asm("a0") = tagList;
  135.   __asm __volatile ("jsr a6@(-0x1e)"
  136.   : "=r" (_res)
  137.   : "r" (a6), "r" (d0), "r" (a0)
  138.   : "a0","a1","d0","d1", "memory");
  139.   return _res;
  140. }
  141. static __inline void 
  142. FreeTagItems (BASE_PAR_DECL struct TagItem *tagList)
  143. {
  144.   BASE_EXT_DECL
  145.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  146.   register struct TagItem *a0 __asm("a0") = tagList;
  147.   __asm __volatile ("jsr a6@(-0x4e)"
  148.   : /* no output */
  149.   : "r" (a6), "r" (a0)
  150.   : "a0","a1","d0","d1", "memory");
  151. }
  152. static __inline ULONG 
  153. GetTagData (BASE_PAR_DECL Tag tagVal,unsigned long defaultVal,struct TagItem *tagList)
  154. {
  155.   BASE_EXT_DECL
  156.   register ULONG  _res  __asm("d0");
  157.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  158.   register Tag d0 __asm("d0") = tagVal;
  159.   register unsigned long d1 __asm("d1") = defaultVal;
  160.   register struct TagItem *a0 __asm("a0") = tagList;
  161.   __asm __volatile ("jsr a6@(-0x24)"
  162.   : "=r" (_res)
  163.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  164.   : "a0","a1","d0","d1", "memory");
  165.   return _res;
  166. }
  167. static __inline void 
  168. MapTags (BASE_PAR_DECL struct TagItem *tagList,struct TagItem *mapList,long includeMiss)
  169. {
  170.   BASE_EXT_DECL
  171.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  172.   register struct TagItem *a0 __asm("a0") = tagList;
  173.   register struct TagItem *a1 __asm("a1") = mapList;
  174.   register long d0 __asm("d0") = includeMiss;
  175.   __asm __volatile ("jsr a6@(-0x3c)"
  176.   : /* no output */
  177.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  178.   : "a0","a1","d0","d1", "memory");
  179. }
  180. static __inline struct TagItem *
  181. NextTagItem (BASE_PAR_DECL struct TagItem **tagListPtr)
  182. {
  183.   BASE_EXT_DECL
  184.   register struct TagItem * _res  __asm("d0");
  185.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  186.   register struct TagItem **a0 __asm("a0") = tagListPtr;
  187.   __asm __volatile ("jsr a6@(-0x30)"
  188.   : "=r" (_res)
  189.   : "r" (a6), "r" (a0)
  190.   : "a0","a1","d0","d1", "memory");
  191.   return _res;
  192. }
  193. static __inline ULONG 
  194. PackBoolTags (BASE_PAR_DECL unsigned long initialFlags,struct TagItem *tagList,struct TagItem *boolMap)
  195. {
  196.   BASE_EXT_DECL
  197.   register ULONG  _res  __asm("d0");
  198.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  199.   register unsigned long d0 __asm("d0") = initialFlags;
  200.   register struct TagItem *a0 __asm("a0") = tagList;
  201.   register struct TagItem *a1 __asm("a1") = boolMap;
  202.   __asm __volatile ("jsr a6@(-0x2a)"
  203.   : "=r" (_res)
  204.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  205.   : "a0","a1","d0","d1", "memory");
  206.   return _res;
  207. }
  208. static __inline void 
  209. RefreshTagItemClones (BASE_PAR_DECL struct TagItem *cloneList,struct TagItem *origList)
  210. {
  211.   BASE_EXT_DECL
  212.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  213.   register struct TagItem *a0 __asm("a0") = cloneList;
  214.   register struct TagItem *a1 __asm("a1") = origList;
  215.   __asm __volatile ("jsr a6@(-0x54)"
  216.   : /* no output */
  217.   : "r" (a6), "r" (a0), "r" (a1)
  218.   : "a0","a1","d0","d1", "memory");
  219. }
  220. static __inline LONG 
  221. SDivMod32 (BASE_PAR_DECL long dividend,long divisor)
  222. {
  223.   BASE_EXT_DECL
  224.   register LONG  _res  __asm("d0");
  225.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  226.   register long d0 __asm("d0") = dividend;
  227.   register long d1 __asm("d1") = divisor;
  228.   __asm __volatile ("jsr a6@(-0x96)"
  229.   : "=r" (_res)
  230.   : "r" (a6), "r" (d0), "r" (d1)
  231.   : "a0","a1","d0","d1", "memory");
  232.   return _res;
  233. }
  234. static __inline LONG 
  235. SMult32 (BASE_PAR_DECL long factor1,long factor2)
  236. {
  237.   BASE_EXT_DECL
  238.   register LONG  _res  __asm("d0");
  239.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  240.   register long d0 __asm("d0") = factor1;
  241.   register long d1 __asm("d1") = factor2;
  242.   __asm __volatile ("jsr a6@(-0x8a)"
  243.   : "=r" (_res)
  244.   : "r" (a6), "r" (d0), "r" (d1)
  245.   : "a0","a1","d0","d1", "memory");
  246.   return _res;
  247. }
  248. static __inline LONG 
  249. Stricmp (BASE_PAR_DECL UBYTE *string1,UBYTE *string2)
  250. {
  251.   BASE_EXT_DECL
  252.   register LONG  _res  __asm("d0");
  253.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  254.   register UBYTE *a0 __asm("a0") = string1;
  255.   register UBYTE *a1 __asm("a1") = string2;
  256.   __asm __volatile ("jsr a6@(-0xa2)"
  257.   : "=r" (_res)
  258.   : "r" (a6), "r" (a0), "r" (a1)
  259.   : "a0","a1","d0","d1", "memory");
  260.   return _res;
  261. }
  262. static __inline LONG 
  263. Strnicmp (BASE_PAR_DECL UBYTE *string1,UBYTE *string2,long length)
  264. {
  265.   BASE_EXT_DECL
  266.   register LONG  _res  __asm("d0");
  267.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  268.   register UBYTE *a0 __asm("a0") = string1;
  269.   register UBYTE *a1 __asm("a1") = string2;
  270.   register long d0 __asm("d0") = length;
  271.   __asm __volatile ("jsr a6@(-0xa8)"
  272.   : "=r" (_res)
  273.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  274.   : "a0","a1","d0","d1", "memory");
  275.   return _res;
  276. }
  277. static __inline BOOL 
  278. TagInArray (BASE_PAR_DECL Tag tagVal,Tag *tagArray)
  279. {
  280.   BASE_EXT_DECL
  281.   register BOOL  _res  __asm("d0");
  282.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  283.   register Tag d0 __asm("d0") = tagVal;
  284.   register Tag *a0 __asm("a0") = tagArray;
  285.   __asm __volatile ("jsr a6@(-0x5a)"
  286.   : "=r" (_res)
  287.   : "r" (a6), "r" (d0), "r" (a0)
  288.   : "a0","a1","d0","d1", "memory");
  289.   return _res;
  290. }
  291. static __inline UBYTE 
  292. ToLower (BASE_PAR_DECL unsigned long character)
  293. {
  294.   BASE_EXT_DECL
  295.   register UBYTE  _res  __asm("d0");
  296.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  297.   register unsigned long d0 __asm("d0") = character;
  298.   __asm __volatile ("jsr a6@(-0xba)"
  299.   : "=r" (_res)
  300.   : "r" (a6), "r" (d0)
  301.   : "a0","a1","d0","d1", "memory");
  302.   return _res;
  303. }
  304. static __inline UBYTE 
  305. ToUpper (BASE_PAR_DECL unsigned long character)
  306. {
  307.   BASE_EXT_DECL
  308.   register UBYTE  _res  __asm("d0");
  309.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  310.   register unsigned long d0 __asm("d0") = character;
  311.   __asm __volatile ("jsr a6@(-0xae)"
  312.   : "=r" (_res)
  313.   : "r" (a6), "r" (d0)
  314.   : "a0","a1","d0","d1", "memory");
  315.   return _res;
  316. }
  317. static __inline ULONG 
  318. UDivMod32 (BASE_PAR_DECL unsigned long dividend,unsigned long divisor)
  319. {
  320.   BASE_EXT_DECL
  321.   register ULONG  _res  __asm("d0");
  322.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  323.   register unsigned long d0 __asm("d0") = dividend;
  324.   register unsigned long d1 __asm("d1") = divisor;
  325.   __asm __volatile ("jsr a6@(-0x9c)"
  326.   : "=r" (_res)
  327.   : "r" (a6), "r" (d0), "r" (d1)
  328.   : "a0","a1","d0","d1", "memory");
  329.   return _res;
  330. }
  331. static __inline ULONG 
  332. UMult32 (BASE_PAR_DECL unsigned long factor1,unsigned long factor2)
  333. {
  334.   BASE_EXT_DECL
  335.   register ULONG  _res  __asm("d0");
  336.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  337.   register unsigned long d0 __asm("d0") = factor1;
  338.   register unsigned long d1 __asm("d1") = factor2;
  339.   __asm __volatile ("jsr a6@(-0x90)"
  340.   : "=r" (_res)
  341.   : "r" (a6), "r" (d0), "r" (d1)
  342.   : "a0","a1","d0","d1", "memory");
  343.   return _res;
  344. }
  345. #undef BASE_EXT_DECL
  346. #undef BASE_PAR_DECL
  347. #undef BASE_PAR_DECL0
  348. #undef BASE_NAME
  349.  
  350. __END_DECLS
  351.  
  352. #endif /* _INLINE_UTILITY_H */
  353.