Modules |
Files |
Inheritance Tree |
Inheritance Graph |
Name Index |
Config
File: Synopsis/Parser/C++/occ/metaclass.h
1| /*
2| Copyright (C) 1997-2000 Shigeru Chiba, University of Tsukuba.
3|
4| Permission to use, copy, distribute and modify this software and
5| its documentation for any purpose is hereby granted without fee,
6| provided that the above copyright notice appear in all copies and that
7| both that copyright notice and this permission notice appear in
8| supporting documentation.
9|
10| Shigeru Chiba makes no representations about the suitability of this
11| software for any purpose. It is provided "as is" without express or
12| implied warranty.
13| */
14| /*
15| Copyright (c) 1995, 1996 Xerox Corporation.
16| All Rights Reserved.
17|
18| Use and copying of this software and preparation of derivative works
19| based upon this software are permitted. Any copy of this software or
20| of any derivative work must include the above copyright notice of
21| Xerox Corporation, this paragraph and the one after it. Any
22| distribution of this software or derivative works must comply with all
23| applicable United States export control laws.
24|
25| This software is made available AS IS, and XEROX CORPORATION DISCLAIMS
26| ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE
27| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28| PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY
29| LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS
30| EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING
31| NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED
32| OF THE POSSIBILITY OF SUCH DAMAGES.
33| */
34|
35| #ifndef _metaclass_h
36| #define _metaclass_h
37|
38| #include "mop.h"
39|
40| class Metaclass : public Class {
41| public:
42| Metaclass();
43|
44| static bool Initialize();
45| char* MetaclassName();
46|
47| void TranslateClass(Environment*);
48| Ptree* GetFinalizer();
49| void CheckObsoleteness();
50| void ProduceInitFile(Ptree* class_name);
51| static bool IsBuiltinMetaclass(Ptree*);
52| void InsertInitialize();
53| int FindFirstNotInlinedVirtualFunction();
54| void TranslateMemberFunction(Environment* env, Member& m);
55| void AppendHousekeepingCode(Environment* env, Ptree* class_name,
56| Ptree* creator_name, Ptree* finalizer);
57| static void Load(Ptree* metaclass_name);
58| static void Load(char* metaclass_name, int len);
59| static void* LoadSoLib(char* file_name);
60| static void* LookupSymbol(void* handle, char* symbol);
61|
62| static void do_init_static();
63|
64| private:
65| Ptree* new_function_name;
66| int first_not_inlined_vf;
67| };
68|
69| extern void LoadMetaclass(char*);
70|
71| #endif /* _metaclass_h */