xref: /trueos/usr.bin/migcom/utils.h (revision 8b380be28230988e4ffc12352ae9f073bfd17633)
1 /*
2  * Copyright 1991-1998 by Open Software Foundation, Inc.
3  *              All Rights Reserved
4  *
5  * Permission to use, copy, modify, and distribute this software and
6  * its documentation for any purpose and without fee is hereby granted,
7  * provided that the above copyright notice appears in all copies and
8  * that both the copyright notice and this permission notice appear in
9  * supporting documentation.
10  *
11  * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
12  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
13  * FOR A PARTICULAR PURPOSE.
14  *
15  * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
16  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
18  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
19  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20  */
21 /*
22  * cmk1.1
23  */
24 /*
25  * Mach Operating System
26  * Copyright (c) 1991,1990 Carnegie Mellon University
27  * All Rights Reserved.
28  *
29  * Permission to use, copy, modify and distribute this software and its
30  * documentation is hereby granted, provided that both the copyright
31  * notice and this permission notice appear in all copies of the
32  * software, derivative works or modified versions, and any portions
33  * thereof, and that both notices appear in supporting documentation.
34  *
35  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
36  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
37  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
38  *
39  * Carnegie Mellon requests users of this software to return to
40  *
41  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
42  *  School of Computer Science
43  *  Carnegie Mellon University
44  *  Pittsburgh PA 15213-3890
45  *
46  * any improvements or extensions that they make and grant Carnegie the
47  * rights to redistribute these changes.
48  */
49 /*
50  * 91/06/25  10:32:47  rpd
51  * 	Changed WriteVarDecl to WriteUserVarDecl.
52  * 	Added WriteServerVarDecl.
53  * 	[91/05/23            rpd]
54  *
55  * 91/02/05  17:56:33  mrt
56  * 	Changed to new Mach copyright
57  * 	[91/02/01  17:56:48  mrt]
58  *
59  * 90/06/02  15:06:16  rpd
60  * 	Created for new IPC.
61  * 	[90/03/26  21:15:06  rpd]
62  *
63  * 07-Apr-89  Richard Draves (rpd) at Carnegie-Mellon University
64  * Extensive revamping.  Added polymorphic arguments.
65  * Allow multiple variable-sized inline arguments in messages.
66  *
67  * 28-May-87  Richard Draves (rpd) at Carnegie-Mellon University
68  * Created.
69  */
70 
71 #ifndef _UTILS_H
72 #define _UTILS_H
73 
74 #include "type.h"
75 
76 /* definitions used by the Event Logger */
77 
78 #define LOG_USER 0
79 #define LOG_SERVER 1
80 
81 #define LOG_REQUEST 0
82 #define LOG_REPLY 1
83 
84 /* stuff used by more than one of header.c, user.c, server.c */
85 
86 extern void WriteMigExternal(FILE *file);
87 extern void WriteMigInternal(FILE *file);
88 
89 extern void WriteImport(FILE *file, string_t filename);
90 extern void WriteRCSDecl(FILE *file, identifier_t name, string_t rcs);
91 extern void WriteBogusDefines(FILE *file);
92 
93 extern void WriteList(FILE *file, argument_t *args,
94   void (*func)(FILE *file, argument_t *arg),
95 			 u_int mask, const char *between, const char *after);
96 
97 extern void WriteReverseList(FILE *file, argument_t *args,
98  void (*func)(FILE *file, argument_t *arg),
99 				u_int mask, const char *between, const char *after);
100 
101 /* good as arguments to WriteList */
102 extern void WriteNameDecl(FILE *file, argument_t *arg);
103 extern void WriteUserVarDecl(FILE *file, argument_t *arg);
104 extern void WriteServerVarDecl(FILE *file, argument_t *arg);
105 extern void WriteTemplateDeclIn(FILE *file, argument_t *arg);
106 extern void WriteTemplateDeclOut(FILE *file, argument_t *arg);
107 extern void WriteTemplateKPD_port(FILE *file, argument_t *arg, boolean_t in);
108 extern void WriteTemplateKPD_ool(FILE *file, argument_t *arg, boolean_t in __unused);
109 extern void WriteTemplateKPD_oolport(FILE *file, argument_t *arg, boolean_t in __unused);
110 extern void WriteLogDefines(FILE *file, string_t who);
111 extern void WriteCheckDecl(FILE *file, argument_t *arg);
112 
113 extern const char *ReturnTypeStr( routine_t *rt );
114 
115 extern const char *FetchUserType( ipc_type_t *it );
116 extern const char *FetchServerType( ipc_type_t *it );
117 extern const char *FetchKPDType( ipc_type_t *it );
118 extern void WriteKPDFieldDecl(FILE *file, argument_t *arg);
119 
120 extern void WriteFieldDeclPrim( FILE *file, argument_t *arg, const char *(*tfunc)(ipc_type_t *it) );
121 
122 extern void WriteStructDecl(FILE *file, argument_t *args,
123         void (*func)(FILE *file, argument_t *arg),
124 			       u_int mask, const char *name,
125         boolean_t simple, boolean_t trailer,
126         boolean_t isuser,
127         boolean_t template_only );
128 
129 extern void WriteStaticDecl( FILE *file, argument_t *arg );
130 
131 extern void WriteCopyType(FILE *file, ipc_type_t *it, const char *left, const char *right, ...);
132 
133 extern void WriteCopyArg(FILE *file, argument_t *arg, const char *left, const char *right, ...);
134 
135 extern void WriteLogMsg( FILE *file, routine_t *rt, int where, int what );
136 
137 extern void WriteCheckTrailerHead( FILE *file, routine_t *rt, boolean_t isuser );
138 
139 extern void WriteCheckTrailerSize( FILE *file, boolean_t isuser, argument_t *arg );
140 
141 extern void WriteReturnMsgError( FILE *file, routine_t *rt, boolean_t isuser, argument_t *arg, string_t error );
142 
143 extern void  WriteRPCRoutineDescriptor( FILE *file, routine_t *rt,  int arg_count, int descr_count, string_t stub_routine, string_t sig_array );
144 
145 extern void WriteRPCRoutineArgDescriptor( FILE *file, routine_t *rt );
146 
147 extern void WriteRequestTypes( FILE *file, statement_t *stats);
148 extern void WriteCheckRequests( FILE *file, statement_t *stats);
149 extern void WriteUserRequestUnion( FILE *file, statement_t *stats );
150 extern void WriteServerRequestUnion( FILE *file, statement_t *stats );
151 
152 extern void WriteReplyTypes( FILE *file, statement_t *stats);
153 extern void WriteCheckReplies( FILE *file, statement_t *stats);
154 extern void WriteUserReplyUnion( FILE *file, statement_t *stats );
155 extern void WriteServerReplyUnion( FILE *file, statement_t *stats );
156 
157 extern void WriteNDRConvertArgDecl( FILE *file, argument_t *arg, const char *convert, const char *dir);
158 extern void WriteIdentificationString(FILE *file);
159 
160 extern void KPD_error(FILE *file,argument_t *arg);
161 extern void KPD_noop(FILE *file,argument_t *arg);
162 
163 
164 #endif /* _UTILS_H */
165