]> git.buserror.net Git - polintos/scott/priv.git/blob - idlcomp/lang.h
Initial checkin from Perforce.
[polintos/scott/priv.git] / idlcomp / lang.h
1 /* lang.h -- Definitions used with language bindings
2  *
3  * Written by Scott Wood <scott@buserror.net>
4  */
5
6 #ifndef IDLC_LANG_H
7 #define IDLC_LANG_H
8
9 #include <idlc.h>
10
11 // A subclass of this interface is passed to Symbol::output_lang(),
12 // which calls the appropriate type-specific method here.  If the
13 // sym is a Datum, Method, or Param, no callback is made; the language
14 // binding is expected to handle it when iterating over the containing
15 // type's element list.
16
17 class LangCallback {
18 public:
19         virtual ~LangCallback()
20         {
21         }
22
23         virtual void output(UserNameSpace *sym, int arg1, void *arg2) = 0;
24         virtual void output(Struct *sym, int arg1, void *arg2) = 0;
25         virtual void output(Interface *sym, int arg1, void *arg2) = 0;
26         virtual void output(BitField *sym, int arg1, void *arg2) = 0;
27         virtual void output(Enum *sym, int arg1, void *arg2) = 0;
28         virtual void output(BasicType *sym, int arg1, void *arg2) = 0;
29         virtual void output(Alias *sym, int arg1, void *arg2) = 0;
30         virtual void output(TypeDef *sym, int arg1, void *arg2) = 0;
31         virtual void output(Datum *sym, int arg1, void *arg2) = 0; // const only
32 };
33
34 class Language {
35 public:
36         const char *name;
37         Language *next;
38
39         virtual ~Language()
40         {
41         }
42         
43         virtual void output_root(UserNameSpace *ns, const char *dir) = 0;
44         virtual void output_server(UserNameSpace *ns, const char *dir) = 0;
45 };
46
47 extern Language *first_lang;
48
49 #endif