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|     charMetaclassName();
   46| 
   47|     void TranslateClass(Environment*);
   48|     PtreeGetFinalizer();
   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 voidLoadSoLib(char* file_name);
   60|     static voidLookupSymbol(void* handle, char* symbol);
   61| 
   62|     static void do_init_static();
   63| 
   64| private:
   65|     Ptreenew_function_name;
   66|     int    first_not_inlined_vf;
   67| };
   68| 
   69| extern void LoadMetaclass(char*);
   70| 
   71| #endif  /* _metaclass_h */