home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ool.zip / OOL / include / xrexx.H < prev    next >
C/C++ Source or Header  |  1997-02-23  |  2KB  |  66 lines

  1. #ifndef __OOL_XCOMHDL_H__
  2. #define __OOL_XCOMHDL_H__
  3.  
  4. /*===========================================================================*/
  5. /* OOL ------------------- the Open Object Library ------------- OS/2 Beta 1 */
  6. /*===========================================================================*/
  7. /*                              class: XRexxInterface                        */
  8. /*                       derived from: XObject                               */
  9. /*                        last update: 1/97                                  */
  10. /*                      programmed by: Stefan von Brauk (sbrauk@gwdg.de)     */
  11. /*===========================================================================*/
  12.  
  13.  
  14. #include "xobject.h"
  15. #include "XString.h"
  16.  
  17. #define REXXINTERFACE ULONG APIENTRY 
  18.  
  19. inline void RXStringToXString( RXSTRING& rx, XString& st)
  20. {
  21.    memcpy( st.GetBuffer(rx.strlength+1), rx.strptr, rx.strlength);
  22.     st.ReleaseBuffer( rx.strlength);
  23. }
  24.  
  25.  
  26. inline void PRXStringToXString( RXSTRING * rx, XString& st)
  27. {
  28.    memcpy( st.GetBuffer(rx->strlength+1), rx->strptr, rx->strlength);
  29.     st.ReleaseBuffer( rx->strlength);
  30. }
  31.  
  32.  
  33. inline void XStringToRXString( XString& st, RXSTRING& rx)
  34. {
  35.    memcpy( rx.strptr, (char*) st, st.GetLength());
  36.     rx.strlength = st.GetLength();
  37. }
  38.  
  39.  
  40. inline void XStringToPRXString( XString& st, RXSTRING * rx)
  41. {
  42.    memcpy( rx->strptr, (char*) st, st.GetLength());
  43.     rx->strlength = st.GetLength();
  44. }
  45.  
  46.  
  47. class _export_ XRexxInterface: public XObject
  48. {
  49.        XString name, dll;
  50.    public:
  51.         XRexxInterface( char * handlerName, PFN routineName );
  52.         XRexxInterface( char * handlerName, char * dllName, char * routineName);
  53.         ~XRexxInterface();
  54.         static LONG DeregisterFunction( char * name);
  55.         LONG Execute( char * commandFile, LONG type, XString * resultBuffer, SHORT * returnCode, XString * argList);
  56.         static XRexxInterface * GetHandler( char * handlerName, char * dllName = NULL);
  57.         void GetName( XString * buffer) { *buffer = name; }
  58.         LONG GetVar( char* name, XString * value);
  59.         static BOOL IsFunctionRegistered(char*name);
  60.         static LONG RegisterFunction( char * name, PFN entry);        
  61.         static LONG RegisterFunction( char * name, char * dllName, char * routine);
  62.         LONG SetVar( char * name, char* value);
  63. };
  64.  
  65. #endif
  66.