disable the unrecognized nls flag
[AROS-Contrib.git] / regina / rxiface.h
blob8d45bf0db7c707e193e226bdc6d0ec537e5ca257
1 /*
2 * The Regina Rexx Interpreter
3 * Copyright (C) 1992-1994 Anders Christensen <anders@pvv.unit.no>
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library; if not, write to the Free
17 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #include "wrappers.h"
22 /* <<<<<<<<<<< Things you might want to configure >>>>>>>>>>>>>> */
24 * Although you'd probably better off compiling rxiface.c with these
25 * symbols set at the commandline than actually changing this file
29 * The cpp symbol RXPROG contains the name of the rexx interpreter to
30 * start. If not defined elsewhere (like on the command line), a default
31 * value is used. It is invoked using exec*p*, so you don't need to
32 * specify a full path unless 'rexx' is located somewhere outside PATH.
34 #ifndef RXPROG
35 # define RXPROG "rexx"
36 #endif
39 * When the application starts up the interpreter, a version number is
40 * sent from the interpreter to the application, as the first thing.
41 * This piece of information serves two purposes: If the interpreter
42 * was not properly started, that will be sensed and an apropriate
43 * errormessage can be returned to the calling routine in the application.
44 * Secondly, if the interpreter and the application have different
45 * versions of the interfacing software, that will be detected.
47 * MAKE SURE THAT YOU CHANGE THE VERSION NUMBER WHENEVER YOU CHANGE
48 * THE DEFINITION OF THE INTERFACE! At worst, pick a number at random,
49 * just choose a version number that isn't likely to have been chosen
50 * by somebody else.
52 * NOTE: I've taken the liberty to 'reserve' 0xdeadbeef as the version
53 * number for the versions I write and distribute. If you change
54 * anything, make sure that you set RXVERSION_MAJ to something
55 * else. -anders <anders@pvv.unit.no>
56 * The version number for my changes is 0xbadab0de :-)
57 * Mark - <M.Hessling@qut.edu.au>
59 #ifndef RXVERSION_MAJ
60 # define RXVERSION_MAJ 0xbadab0de
61 # define RXVERSION_MIN 0x00002000
62 #endif
65 * These are the commands sent through the communication channel. Their
66 * format is fixed.
68 RX_RETURN int=code, int=rval
69 RX_SCOMRET int=code, int=flag, str=retvalue
70 RX_SUBCOM
73 #define RX_RETURN 1
74 #define RX_SUBCOM 2
75 #define RX_GETVAR 3
76 #define RX_SETVAR 4
77 #define RX_EXECUTE 5
78 #define RX_VALUE 6
79 #define RX_ENVIR 7
80 #define RX_RETVOID 8
81 #define RX_SYNCREQ 9
82 #define RX_SYNCACK 10
83 #define RX_SETEXIT 11
84 #define RX_CLREXIT 12
85 #define RX_DO_HOOK 13
86 #define RX_TYPE_EXTERNAL 14
87 #define RX_TYPE_INSTORE 15
88 #define RX_TYPE_MACRO 16
89 #define RX_TYPE_SOURCE 17
90 #define RX_INSTORE 18
91 #define RX_DROP_INSTORE 19
92 #define RX_GETSVAR 20
93 #define RX_SETSVAR 21
94 #define RX_CODE_SOURCE 22
95 #define RX_CODE_VERSION 23
96 #define RX_CODE_QUEUE 24
97 #define RX_CODE_PARAM 25
98 #define RX_TYPE_COMMAND 26
99 #define RX_TYPE_FUNCTION 27
100 #define RX_TYPE_SUBROUTINE 28
101 #define RX_VERSION 29
102 #define RX_STRINGS 30
103 #define RX_NEXTVAR 31
104 #define RX_ADDFUNC 32
105 #define RX_DELFUNC 33
106 #define RX_EXECFUNC 34
107 #define RX_CODE_PARAMS 35
109 #define RX_CODE_OK 0
110 #define RX_CODE_NOVALUE 1
111 #define RX_CODE_INVNAME 2
112 #define RX_CODE_EXISTS 3
113 #define RX_CODE_NOSUCH 4
114 #define RX_CODE_NOMEM 5
116 #define RX_HOOK_GO_ON 0
117 #define RX_HOOK_NOPE 1
118 #define RX_HOOK_ERROR 2
120 #define RX_NO_STRING (-1)
122 #define RX_EXIT_STDOUT 0
123 #define RX_EXIT_STDERR 1
124 #define RX_EXIT_TRCIN 2
125 #define RX_EXIT_PULL 3
126 #define RX_EXIT_INIT 4
127 #define RX_EXIT_TERMIN 5
128 #define RX_EXIT_SUBCOM 6
129 #define RX_EXIT_FUNC 7
130 #define RX_EXIT_GETENV 8
131 #define RX_EXIT_SETENV 9
132 #define RX_EXIT_GETCWD 10
133 #define RX_EXIT_SETCWD 11
135 #define RX_LASTHOOK 32
137 #define RXFLAG_OK 0x0000
139 #define RXFLAG_ERROR 0x0001
140 #define RXFLAG_FAILURE 0x0002
142 #define RXFLAG_NOVALUE 0x0001
144 #define RXFLAG_NOTREG 30
146 int IfcStartUp( tsd_t *TSD, char *name, int *Major, int *Minor ) ;
147 int IfcExecScript( tsd_t * volatile TSD, int NameLen, const char *Name,
148 int ArgCount, const int *ParLengths, const char **ParStrings,
149 int CallType, int ExitFlags, int EnvLen, const char *EnvName,
150 int SourceCode, int restricted,
151 const char *SourceString, unsigned long SourceStringLen,
152 const void *TinnedTree, unsigned long TinnedTreeLen,
153 int *RetLen, char **RetString, void **instore_buf,
154 unsigned long *instore_length ) ;
155 int IfcExecCallBack( tsd_t * volatile TSD, int NameLen, const char *Name,
156 int ArgCount, const int *ParLengths, const char **ParStrings,
157 int *RetLen, char **RetString );
159 int IfcVarPool( tsd_t *TSD, int Code, int *Lengths, char *Strings[],
160 int *allocated );
162 int IfcSubCmd( tsd_t *TSD, int EnvLen, const char *EnvStr, int CmdLen,
163 const char *CmdStr, int *RetLen, char **RetStr ) ;
164 int IfcDoExit( tsd_t *TSD, int Code,
165 int OutputLength1, char *OutputString1,
166 int OutputLength2, char *OutputString2,
167 int *InputLength, char **InputString ) ;
168 int IfcExecFunc( tsd_t *TSD, PFN Func, char *Name, int Params,
169 int *Lengths, char **Strings,
170 int queue_name_len, char *queue_name,
171 int *RetLength, char **RetString,
172 int *RC, char called, void *gci_info ) ;
173 int IfcRegDllFunc( const tsd_t *TSD, const char* rxname, const char* module, const char* objnam ) ;
175 int IfcHaveFunctionExit(const tsd_t *TSD);
177 unsigned long IfcFreeMemory( void *);
178 void *IfcAllocateMemory( unsigned long );
180 int IfcCreateQueue( tsd_t *TSD, const char *qname, const int qlen, char *data, unsigned long *dupflag, unsigned long buflen );
181 int IfcDeleteQueue( tsd_t *TSD, const char *qname, const int qlen );
182 int IfcQueryQueue( tsd_t *TSD, const char *qname, const int qlen, unsigned long *count );
183 int IfcAddQueue( tsd_t *TSD, const char *qname, const int qlen, const char *data, const int datalen, unsigned long addlifo );
184 int IfcPullQueue( tsd_t *TSD, const char *qname, const int qlen, char **data, unsigned long *datalen, unsigned long waitforline );