source: trunk/src/emx/include/sys/moddef.h@ 344

Last change on this file since 344 was 18, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.4 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 union
100{
101 struct
102 {
103 _md_error code;
104 _md_token stmt;
105 } error; /* Error */
106 struct
107 {
108 unsigned long addr;
109 } base; /* BASE */
110 struct
111 {
112 char string[256];
113 } descr; /* DESCRIPTION */
114 struct
115 {
116 char name[256];
117 } device; /* PHYSICAL DEVICE and VIRTUAL DEVICE */
118 struct
119 {
120 int type;
121 int minor_version;
122 int major_version;
123 } exetype; /* EXETYPE */
124 struct
125 {
126 char entryname[256];
127 char internalname[256];
128 int ordinal;
129 int pwords;
130 unsigned flags;
131 } export; /* EXPORTS */
132 struct
133 {
134 char entryname[256];
135 char internalname[256];
136 char modulename[256];
137 int ordinal;
138 unsigned flags;
139 } import; /* IMPORTS */
140 struct
141 {
142 unsigned long size;
143 int maxval;
144 } heapsize; /* HEAPSIZE */
145 struct
146 {
147 char name[256];
148 int init;
149 int term;
150 } library; /* LIBRARY */
151 struct
152 {
153 char name[256];
154 int pmtype;
155 int newfiles;
156 } name; /* NAME */
157 struct
158 {
159 char name[256];
160 } old; /* OLD */
161 struct
162 {
163 char segname[256];
164 char classname[256];
165 unsigned attr;
166 } segment; /* SEGMENTS, CODE, DATA */
167 struct
168 {
169 unsigned long size;
170 } stacksize; /* STACKSIZE */
171 struct
172 {
173 char name[256];
174 int none;
175 } stub; /* STUB */
176} _md_stmt;
177
178
179long _md_get_linenumber (const struct _md *md);
180long _md_get_number (const struct _md *md);
181const char *_md_get_string (const struct _md *md);
182_md_token _md_get_token (const struct _md *md);
183
184_md_token _md_next_token (struct _md *md);
185
186int _md_close (struct _md *md);
187struct _md *_md_open (const char *fname);
188struct _md *_md_use_file (FILE *f);
189
190int _md_parse (struct _md *md,
191 int (*callback)(struct _md *md, const _md_stmt *stmt,
192 _md_token token, void *arg),
193 void *arg);
194
195const char *_md_errmsg (_md_error code);
196
197#if defined (__cplusplus)
198}
199#endif
200
201#endif /* not _SYS_MODDEF_H */
Note: See TracBrowser for help on using the repository browser.