source: trunk/emx/include/sys/moddef.h@ 3320

Last change on this file since 3320 was 2446, checked in by bird, 20 years ago

serious restructuring in progress.

  • Property cvs2svn:cvs-rev set to 1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.7 KB
Line 
1/* sys/moddef.h (emx+gcc) */
2
3#ifndef _SYS_MODDEF_H
4#define _SYS_MODDEF_H
5
6#if defined (__cplusplus)
7extern "C" {
8#endif
9
10struct _md;
11
12#define _MDT_DEFAULT 0
13#define _MDT_WINDOWAPI 1
14#define _MDT_WINDOWCOMPAT 2
15#define _MDT_NOTWINDOWCOMPAT 3
16
17#define _MDIT_DEFAULT 0
18#define _MDIT_INSTANCE 1
19#define _MDIT_GLOBAL 2
20
21#define _MDS_ALIAS 0x000001
22#define _MDS_CONFORMING 0x000002
23#define _MDS_DISCARDABLE 0x000004
24#define _MDS_EXECUTEONLY 0x000008
25#define _MDS_EXECUTEREAD 0x000010
26#define _MDS_FIXED 0x000020
27#define _MDS_INVALID 0x000040
28#define _MDS_IOPL 0x000080
29#define _MDS_LOADONCALL 0x000100
30#define _MDS_MIXED1632 0x000200
31#define _MDS_MOVEABLE 0x000400
32#define _MDS_MULTIPLE 0x000800
33#define _MDS_NOIOPL 0x001000
34#define _MDS_NONCONFORMING 0x002000
35#define _MDS_NONDISCARDABLE 0x004000
36#define _MDS_NONE 0x008000
37#define _MDS_NONSHARED 0x010000
38#define _MDS_PRELOAD 0x020000
39#define _MDS_READONLY 0x040000
40#define _MDS_READWRITE 0x080000
41#define _MDS_SHARED 0x100000
42#define _MDS_SINGLE 0x200000
43
44#define _MDX_DEFAULT 0
45#define _MDX_UNKNOWN 1
46#define _MDX_OS2 2
47#define _MDX_WINDOWS 3
48
49#define _MDEP_ORDINAL 0x0001
50#define _MDEP_RESIDENTNAME 0x0002
51#define _MDEP_NONAME 0x0004
52#define _MDEP_NODATA 0x0008
53#define _MDEP_PWORDS 0x0010
54
55#define _MDIP_ORDINAL 0x0001
56
57typedef enum
58{
59 _MD_ALIAS, _MD_BASE, _MD_CLASS, _MD_CODE, _MD_CONFORMING,
60 _MD_CONTIGUOUS, _MD_DATA, _MD_DESCRIPTION, _MD_DEV386, _MD_DEVICE,
61 _MD_DISCARDABLE, _MD_DOS4, _MD_DYNAMIC, _MD_EXECUTEONLY,
62 _MD_EXECUTEREAD, _MD_EXETYPE, _MD_EXPANDDOWN, _MD_EXPORTS,
63 _MD_FIXED, _MD_HEAPSIZE, _MD_HUGE, _MD_IMPORTS, _MD_IMPURE,
64 _MD_INCLUDE, _MD_INITGLOBAL, _MD_INITINSTANCE, _MD_INVALID,
65 _MD_IOPL, _MD_LIBRARY, _MD_LOADONCALL, _MD_MAXVAL, _MD_MIXED1632,
66 _MD_MOVEABLE, _MD_MULTIPLE, _MD_NAME, _MD_NEWFILES, _MD_NODATA,
67 _MD_NOEXPANDDOWN, _MD_NOIOPL, _MD_NONAME, _MD_NONCONFORMING,
68 _MD_NONDISCARDABLE, _MD_NONE, _MD_NONPERMANENT, _MD_NONSHARED,
69 _MD_NOTWINDOWCOMPAT, _MD_OBJECTS, _MD_OLD, _MD_ORDER, _MD_OS2,
70 _MD_PERMANENT, _MD_PHYSICAL, _MD_PRELOAD, _MD_PRIVATE,
71 _MD_PRIVATELIB, _MD_PROTECT, _MD_PROTMODE, _MD_PURE, _MD_READONLY,
72 _MD_READWRITE, _MD_REALMODE, _MD_RESIDENT, _MD_RESIDENTNAME,
73 _MD_SEGMENTS, _MD_SHARED, _MD_SINGLE, _MD_STACKSIZE, _MD_STUB,
74 _MD_SWAPPABLE, _MD_TERMGLOBAL, _MD_TERMINSTANCE, _MD_UNKNOWN,
75 _MD_VIRTUAL, _MD_WINDOWAPI, _MD_WINDOWCOMPAT, _MD_WINDOWS,
76 /* The following tokens are no keywords: */
77 _MD_dot, _MD_at, _MD_equal, _MD_quote, _MD_number, _MD_word,
78 _MD_eof, _MD_ioerror, _MD_missingquote,
79 /* Special `token' for _md_parse() callback: */
80 _MD_parseerror
81} _md_token;
82
83typedef enum
84{
85 _MDE_IO_ERROR,
86 _MDE_MISSING_QUOTE,
87 _MDE_EMPTY,
88 _MDE_NAME_EXPECTED,
89 _MDE_STRING_EXPECTED,
90 _MDE_NUMBER_EXPECTED,
91 _MDE_DEVICE_EXPECTED,
92 _MDE_EQUAL_EXPECTED,
93 _MDE_DOT_EXPECTED,
94 _MDE_STRING_TOO_LONG,
95 _MDE_INVALID_ORDINAL,
96 _MDE_INVALID_STMT
97} _md_error;
98
99typedef struct
100{
101 unsigned line_number; /* Linenumber of the statement. */
102 union
103 {
104 struct
105 {
106 _md_error code;
107 _md_token stmt;
108 } error; /* Error */
109 struct
110 {
111 unsigned long addr;
112 } base; /* BASE */
113 struct
114 {
115 char string[256];
116 } descr; /* DESCRIPTION */
117 struct
118 {
119 char name[256];
120 } device; /* PHYSICAL DEVICE and VIRTUAL DEVICE */
121 struct
122 {
123 int type;
124 int minor_version;
125 int major_version;
126 } exetype; /* EXETYPE */
127 struct
128 {
129 char entryname[256];
130 char internalname[256];
131 int ordinal;
132 int pwords;
133 unsigned flags;
134 } export; /* EXPORTS */
135 struct
136 {
137 char entryname[256];
138 char internalname[256];
139 char modulename[256];
140 int ordinal;
141 unsigned flags;
142 } import; /* IMPORTS */
143 struct
144 {
145 unsigned long size;
146 int maxval;
147 } heapsize; /* HEAPSIZE */
148 struct
149 {
150 char name[256];
151 int init;
152 int term;
153 } library; /* LIBRARY */
154 struct
155 {
156 char name[256];
157 int pmtype;
158 int newfiles;
159 } name; /* NAME */
160 struct
161 {
162 char name[256];
163 } old; /* OLD */
164 struct
165 {
166 char segname[256];
167 char classname[256];
168 unsigned attr;
169 } segment; /* SEGMENTS, CODE, DATA */
170 struct
171 {
172 unsigned long size;
173 } stacksize; /* STACKSIZE */
174 struct
175 {
176 char name[256];
177 int none;
178 } stub; /* STUB */
179 }; /* nameless */
180} _md_stmt;
181
182
183long _md_get_linenumber (const struct _md *md);
184long _md_get_number (const struct _md *md);
185const char *_md_get_string (const struct _md *md);
186_md_token _md_get_token (const struct _md *md);
187
188_md_token _md_next_token (struct _md *md);
189
190int _md_close (struct _md *md);
191struct _md *_md_open (const char *fname);
192struct _md *_md_use_file (FILE *f);
193
194int _md_parse (struct _md *md,
195 int (*callback)(struct _md *md, const _md_stmt *stmt,
196 _md_token token, void *arg),
197 void *arg);
198
199const char *_md_errmsg (_md_error code);
200
201#if defined (__cplusplus)
202}
203#endif
204
205#endif /* not _SYS_MODDEF_H */
Note: See TracBrowser for help on using the repository browser.