home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 6 / Sonderheft_6-96.iso / pd / libraries / reqtools / glue / gcc / gcc_glue.lha / inline / reqtools.h
C/C++ Source or Header  |  1993-03-14  |  10KB  |  323 lines

  1. #ifndef _INLINE_REQTOOLS_H
  2. #define _INLINE_REQTOOLS_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. #include <intuition/intuition.h>
  8. #include <libraries/reqtools.h>
  9. #include <clib/reqtools_protos.h>
  10.  
  11. __BEGIN_DECLS
  12.  
  13. #ifndef BASE_EXT_DECL
  14. #define BASE_EXT_DECL extern struct ReqToolsBase * ReqToolsBase;
  15. #endif
  16. #ifndef BASE_PAR_DECL
  17. #define BASE_PAR_DECL
  18. #define BASE_PAR_DECL0 void
  19. #endif
  20. #ifndef BASE_NAME
  21. #define BASE_NAME ReqToolsBase
  22. #endif
  23.  
  24. static __inline void
  25. rtUnlockWindow (BASE_PAR_DECL struct Window * win, APTR winlock)
  26. {
  27.   BASE_EXT_DECL
  28.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  29.   register struct Window * a0 __asm("a0") = win;
  30.   register APTR a1 __asm("a1") = winlock;
  31.   __asm __volatile ("jsr a6@(-162)"
  32.   : /* no output */
  33.   : "r" (a6), "r" (a0), "r" (a1)
  34.   : "a0", "a1",  "memory");
  35. }
  36. static __inline APTR
  37. rtLockWindow (BASE_PAR_DECL struct Window * win)
  38. {
  39.   BASE_EXT_DECL
  40.   register APTR _res  __asm("d0");
  41.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  42.   register struct Window * a0 __asm("a0") = win;
  43.   __asm __volatile ("jsr a6@(-156)"
  44.   : "=r" (_res)
  45.   : "r" (a6), "r" (a0)
  46.   : "a0",  "memory");
  47.   return _res;
  48. }
  49. static __inline void
  50. rtCloseWindowSafely (BASE_PAR_DECL struct Window * win)
  51. {
  52.   BASE_EXT_DECL
  53.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  54.   register struct Window * a0 __asm("a0") = win;
  55.   __asm __volatile ("jsr a6@(-150)"
  56.   : /* no output */
  57.   : "r" (a6), "r" (a0)
  58.   : "a0",  "memory");
  59. }
  60. static __inline ULONG
  61. rtScreenModeRequestA (BASE_PAR_DECL struct rtScreenModeRequester * screenmodereq, char * title, struct TagItem * taglist)
  62. {
  63.   BASE_EXT_DECL
  64.   register ULONG _res  __asm("d0");
  65.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  66.   register struct rtScreenModeRequester * a1 __asm("a1") = screenmodereq;
  67.   register char * a3 __asm("a3") = title;
  68.   register struct TagItem * a0 __asm("a0") = taglist;
  69.   __asm __volatile ("jsr a6@(-144)"
  70.   : "=r" (_res)
  71.   : "r" (a6), "r" (a1), "r" (a3), "r" (a0)
  72.   : "a0", "a1", "a3",  "memory");
  73.   return _res;
  74. }
  75. static __inline void
  76. rtScreenToFrontSafely (BASE_PAR_DECL struct Screen * screen)
  77. {
  78.   BASE_EXT_DECL
  79.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  80.   register struct Screen * a0 __asm("a0") = screen;
  81.   __asm __volatile ("jsr a6@(-138)"
  82.   : /* no output */
  83.   : "r" (a6), "r" (a0)
  84.   : "a0",  "memory");
  85. }
  86. static __inline void
  87. rtSpread (BASE_PAR_DECL ULONG * posarray, ULONG * sizearray, ULONG length, ULONG min, ULONG max, ULONG num)
  88. {
  89.   BASE_EXT_DECL
  90.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  91.   register ULONG * a0 __asm("a0") = posarray;
  92.   register ULONG * a1 __asm("a1") = sizearray;
  93.   register ULONG d0 __asm("d0") = length;
  94.   register ULONG d1 __asm("d1") = min;
  95.   register ULONG d2 __asm("d2") = max;
  96.   register ULONG d3 __asm("d3") = num;
  97.   __asm __volatile ("jsr a6@(-132)"
  98.   : /* no output */
  99.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
  100.   : "a0", "a1", "d0", "d1", "d2", "d3",  "memory");
  101. }
  102. static __inline void
  103. rtSetReqPosition (BASE_PAR_DECL ULONG reqpos, struct NewWindow * newwindow, struct Screen * screen, struct Window * window)
  104. {
  105.   BASE_EXT_DECL
  106.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  107.   register ULONG d0 __asm("d0") = reqpos;
  108.   register struct NewWindow * a0 __asm("a0") = newwindow;
  109.   register struct Screen * a1 __asm("a1") = screen;
  110.   register struct Window * a2 __asm("a2") = window;
  111.   __asm __volatile ("jsr a6@(-126)"
  112.   : /* no output */
  113.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2)
  114.   : "a0", "a1", "a2", "d0",  "memory");
  115. }
  116. static __inline ULONG
  117. rtGetVScreenSize (BASE_PAR_DECL struct Screen * screen, ULONG * widthptr, ULONG * heightptr)
  118. {
  119.   BASE_EXT_DECL
  120.   register ULONG _res  __asm("d0");
  121.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  122.   register struct Screen * a0 __asm("a0") = screen;
  123.   register ULONG * a1 __asm("a1") = widthptr;
  124.   register ULONG * a2 __asm("a2") = heightptr;
  125.   __asm __volatile ("jsr a6@(-120)"
  126.   : "=r" (_res)
  127.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  128.   : "a0", "a1", "a2",  "memory");
  129.   return _res;
  130. }
  131. static __inline void
  132. rtSetWaitPointer (BASE_PAR_DECL struct Window * window)
  133. {
  134.   BASE_EXT_DECL
  135.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  136.   register struct Window * a0 __asm("a0") = window;
  137.   __asm __volatile ("jsr a6@(-114)"
  138.   : /* no output */
  139.   : "r" (a6), "r" (a0)
  140.   : "a0",  "memory");
  141. }
  142. static __inline ULONG
  143. rtReqHandlerA (BASE_PAR_DECL struct rtHandlerInfo * handlerinfo, ULONG sigs, struct TagItem * taglist)
  144. {
  145.   BASE_EXT_DECL
  146.   register ULONG _res  __asm("d0");
  147.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  148.   register struct rtHandlerInfo * a1 __asm("a1") = handlerinfo;
  149.   register ULONG d0 __asm("d0") = sigs;
  150.   register struct TagItem * a0 __asm("a0") = taglist;
  151.   __asm __volatile ("jsr a6@(-108)"
  152.   : "=r" (_res)
  153.   : "r" (a6), "r" (a1), "r" (d0), "r" (a0)
  154.   : "a0", "a1", "d0",  "memory");
  155.   return _res;
  156. }
  157. static __inline LONG
  158. rtPaletteRequestA (BASE_PAR_DECL char * title, struct rtReqInfo * reqinfo, struct TagItem * taglist)
  159. {
  160.   BASE_EXT_DECL
  161.   register LONG _res  __asm("d0");
  162.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  163.   register char * a2 __asm("a2") = title;
  164.   register struct rtReqInfo * a3 __asm("a3") = reqinfo;
  165.   register struct TagItem * a0 __asm("a0") = taglist;
  166.   __asm __volatile ("jsr a6@(-102)"
  167.   : "=r" (_res)
  168.   : "r" (a6), "r" (a2), "r" (a3), "r" (a0)
  169.   : "a0", "a2", "a3",  "memory");
  170.   return _res;
  171. }
  172. static __inline ULONG
  173. rtFontRequestA (BASE_PAR_DECL struct rtFontRequester * fontreq, char * title, struct TagItem * taglist)
  174. {
  175.   BASE_EXT_DECL
  176.   register ULONG _res  __asm("d0");
  177.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  178.   register struct rtFontRequester * a1 __asm("a1") = fontreq;
  179.   register char * a3 __asm("a3") = title;
  180.   register struct TagItem * a0 __asm("a0") = taglist;
  181.   __asm __volatile ("jsr a6@(-96)"
  182.   : "=r" (_res)
  183.   : "r" (a6), "r" (a1), "r" (a3), "r" (a0)
  184.   : "a0", "a1", "a3",  "memory");
  185.   return _res;
  186. }
  187. static __inline ULONG
  188. rtGetLongA (BASE_PAR_DECL ULONG * longptr, char * title, struct rtReqInfo * reqinfo, struct TagItem * taglist)
  189. {
  190.   BASE_EXT_DECL
  191.   register ULONG _res  __asm("d0");
  192.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  193.   register ULONG * a1 __asm("a1") = longptr;
  194.   register char * a2 __asm("a2") = title;
  195.   register struct rtReqInfo * a3 __asm("a3") = reqinfo;
  196.   register struct TagItem * a0 __asm("a0") = taglist;
  197.   __asm __volatile ("jsr a6@(-78)"
  198.   : "=r" (_res)
  199.   : "r" (a6), "r" (a1), "r" (a2), "r" (a3), "r" (a0)
  200.   : "a0", "a1", "a2", "a3",  "memory");
  201.   return _res;
  202. }
  203. static __inline ULONG
  204. rtGetStringA (BASE_PAR_DECL UBYTE * buffer, ULONG maxchars, char * title, struct rtReqInfo * reqinfo, struct TagItem * taglist)
  205. {
  206.   BASE_EXT_DECL
  207.   register ULONG _res  __asm("d0");
  208.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  209.   register UBYTE * a1 __asm("a1") = buffer;
  210.   register ULONG d0 __asm("d0") = maxchars;
  211.   register char * a2 __asm("a2") = title;
  212.   register struct rtReqInfo * a3 __asm("a3") = reqinfo;
  213.   register struct TagItem * a0 __asm("a0") = taglist;
  214.   __asm __volatile ("jsr a6@(-72)"
  215.   : "=r" (_res)
  216.   : "r" (a6), "r" (a1), "r" (d0), "r" (a2), "r" (a3), "r" (a0)
  217.   : "a0", "a1", "a2", "a3", "d0",  "memory");
  218.   return _res;
  219. }
  220. static __inline ULONG
  221. rtEZRequestA (BASE_PAR_DECL char * bodyfmt, char * gadfmt, struct rtReqInfo * reqinfo, APTR argarray, struct TagItem * taglist)
  222. {
  223.   BASE_EXT_DECL
  224.   register ULONG _res  __asm("d0");
  225.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  226.   register char * a1 __asm("a1") = bodyfmt;
  227.   register char * a2 __asm("a2") = gadfmt;
  228.   register struct rtReqInfo * a3 __asm("a3") = reqinfo;
  229.   register APTR a4 __asm("a4") = argarray;
  230.   register struct TagItem * a0 __asm("a0") = taglist;
  231.   __asm __volatile ("jsr a6@(-66)"
  232.   : "=r" (_res)
  233.   : "r" (a6), "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a0)
  234.   : "a0", "a1", "a2", "a3", "a4",  "memory");
  235.   return _res;
  236. }
  237. static __inline void
  238. rtFreeFileList (BASE_PAR_DECL struct rtFileList * filelist)
  239. {
  240.   BASE_EXT_DECL
  241.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  242.   register struct rtFileList * a0 __asm("a0") = filelist;
  243.   __asm __volatile ("jsr a6@(-60)"
  244.   : /* no output */
  245.   : "r" (a6), "r" (a0)
  246.   : "a0",  "memory");
  247. }
  248. static __inline APTR
  249. rtFileRequestA (BASE_PAR_DECL struct rtFileRequester * filereq, char * file, char * title, struct TagItem * taglist)
  250. {
  251.   BASE_EXT_DECL
  252.   register APTR _res  __asm("d0");
  253.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  254.   register struct rtFileRequester * a1 __asm("a1") = filereq;
  255.   register char * a2 __asm("a2") = file;
  256.   register char * a3 __asm("a3") = title;
  257.   register struct TagItem * a0 __asm("a0") = taglist;
  258.   __asm __volatile ("jsr a6@(-54)"
  259.   : "=r" (_res)
  260.   : "r" (a6), "r" (a1), "r" (a2), "r" (a3), "r" (a0)
  261.   : "a0", "a1", "a2", "a3",  "memory");
  262.   return _res;
  263. }
  264. static __inline LONG
  265. rtChangeReqAttrA (BASE_PAR_DECL APTR req, struct TagItem * taglist)
  266. {
  267.   BASE_EXT_DECL
  268.   register LONG _res  __asm("d0");
  269.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  270.   register APTR a1 __asm("a1") = req;
  271.   register struct TagItem * a0 __asm("a0") = taglist;
  272.   __asm __volatile ("jsr a6@(-48)"
  273.   : "=r" (_res)
  274.   : "r" (a6), "r" (a1), "r" (a0)
  275.   : "a0", "a1",  "memory");
  276.   return _res;
  277. }
  278. static __inline void
  279. rtFreeReqBuffer (BASE_PAR_DECL APTR req)
  280. {
  281.   BASE_EXT_DECL
  282.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  283.   register APTR a1 __asm("a1") = req;
  284.   __asm __volatile ("jsr a6@(-42)"
  285.   : /* no output */
  286.   : "r" (a6), "r" (a1)
  287.   : "a1",  "memory");
  288. }
  289. static __inline void
  290. rtFreeRequest (BASE_PAR_DECL APTR req)
  291. {
  292.   BASE_EXT_DECL
  293.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  294.   register APTR a1 __asm("a1") = req;
  295.   __asm __volatile ("jsr a6@(-36)"
  296.   : /* no output */
  297.   : "r" (a6), "r" (a1)
  298.   : "a1",  "memory");
  299. }
  300. static __inline APTR
  301. rtAllocRequestA (BASE_PAR_DECL ULONG type, struct TagItem * taglist)
  302. {
  303.   BASE_EXT_DECL
  304.   register APTR _res  __asm("d0");
  305.   register struct ReqToolsBase * a6 __asm("a6") = BASE_NAME;
  306.   register ULONG d0 __asm("d0") = type;
  307.   register struct TagItem * a0 __asm("a0") = taglist;
  308.   __asm __volatile ("jsr a6@(-30)"
  309.   : "=r" (_res)
  310.   : "r" (a6), "r" (d0), "r" (a0)
  311.   : "a0", "d0",  "memory");
  312.   return _res;
  313. }
  314.  
  315. #undef BASE_EXT_DECL
  316. #undef BASE_PAR_DECL
  317. #undef BASE_PAR_DECL0
  318. #undef BASE_NAME
  319.  
  320. __END_DECLS
  321.  
  322. #endif /* _INLINE_REQTOOLS_H */
  323.