Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

metaclass.h

Go to the documentation of this file.
00001 /*
00002   Copyright (C) 1997-2001 Shigeru Chiba, Tokyo Institute of Technology.
00003 
00004   Permission to use, copy, distribute and modify this software and   
00005   its documentation for any purpose is hereby granted without fee,        
00006   provided that the above copyright notice appear in all copies and that 
00007   both that copyright notice and this permission notice appear in 
00008   supporting documentation.
00009 
00010   Shigeru Chiba makes no representations about the suitability of this 
00011   software for any purpose.  It is provided "as is" without express or
00012   implied warranty.
00013 */
00014 
00015 /*
00016   Copyright (c) 1995, 1996 Xerox Corporation.
00017   All Rights Reserved.
00018 
00019   Use and copying of this software and preparation of derivative works
00020   based upon this software are permitted. Any copy of this software or
00021   of any derivative work must include the above copyright notice of
00022   Xerox Corporation, this paragraph and the one after it.  Any
00023   distribution of this software or derivative works must comply with all
00024   applicable United States export control laws.
00025 
00026   This software is made available AS IS, and XEROX CORPORATION DISCLAIMS
00027   ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE
00028   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00029   PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY
00030   LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS
00031   EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING
00032   NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED
00033   OF THE POSSIBILITY OF SUCH DAMAGES.
00034 */
00035 
00036 #ifndef _metaclass_h
00037 #define _metaclass_h
00038 
00039 #include "mop.h"
00040 
00041 class Metaclass : public Class {
00042 public:
00043     Metaclass();
00044 
00045     static bool Initialize();
00046     char* MetaclassName();
00047 
00048     void TranslateClass(Environment*);
00049     Ptree* GetFinalizer();
00050     void CheckObsoleteness();
00051     void ProduceInitFile(Ptree* class_name);
00052     static bool IsBuiltinMetaclass(Ptree*);
00053     void InsertInitialize();
00054     int FindFirstNotInlinedVirtualFunction();
00055     void TranslateMemberFunction(Environment* env, Member& m);
00056     void AppendHousekeepingCode(Environment* env, Ptree* class_name,
00057                                 Ptree* creator_name, Ptree* finalizer);
00058     static void Load(Ptree* metaclass_name);
00059     static void Load(char* metaclass_name, int len);
00060     static void* LoadSoLib(char* file_name);
00061     static void* LookupSymbol(void* handle, char* symbol);
00062 
00063 private:
00064     Ptree* new_function_name;
00065     int    first_not_inlined_vf;
00066 };
00067 
00068 extern void LoadMetaclass(char*);
00069 
00070 #endif  /* _metaclass_h */

Generated on Mon Feb 10 17:32:51 2003 for VFiasco Semantics Compiler by doxygen1.2.15