Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxSadGenerator.h

00001 /*
00002  *  Copyright (c) 1998, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *
00006  *  Author(s):
00007  *  Dennis Koelma (koelma@wins.uva.nl)
00008  *  Edo Poll (poll@wins.uva.nl)
00009  */
00010 
00011 #ifndef HxSadGenerator_h
00012 #define HxSadGenerator_h
00013 
00014 #include "map"
00015 
00016 #include "HxStd.h"
00017 #include "HxString.h"
00018 
00019 class ostream;
00020 class HxRegKey;
00021 class HxRegistry;
00022 
00023 class HxSadClassInfo;
00024 class HxSadArgInfo;
00025 
00026 typedef HxSadArgInfo* HxSadArgInfoPtr;
00027 typedef HxSadClassInfo* HxSadClassInfoPtr;
00028 
00029 class HxSadGenerator
00030 {
00031 public:
00032 
00033     static HxSadGenerator&  instance();
00034 
00035     void                    setRegistry(const HxRegistry&);
00036     void                    generate(ostream&, HxString label);
00037 
00038                             ~HxSadGenerator();
00039 private:
00040                             HxSadGenerator();
00041                             HxSadGenerator(const HxSadGenerator&);
00042 
00043     friend class HxSadGeneratorFriend;
00044 
00045     void                    loadArgDefs();
00046     void                    generateArgIncludes(ostream&);
00047 
00048     void                    genClassMethods(ostream&, const HxRegKey*);
00049 
00050     void                    genCtor(
00051                                 ostream&, const HxRegKey* classKey,
00052                                 const HxRegKey* methodKey);
00053     void                    genNamedStatic(
00054                                 ostream&, const HxRegKey* classKey,
00055                                 const HxRegKey* methodKey);
00056     void                    genVoidStatic(
00057                                 ostream&, const HxRegKey* classKey,
00058                                 const HxRegKey* methodKey);
00059     void                    genStatic(
00060                                 ostream&, const HxRegKey* classKey,
00061                                 const HxRegKey* methodKey,
00062                                 HxBool isVoid = hxFalse,
00063                                 HxBool isNamed = hxFalse);
00064     void                    genNamedMethod(
00065                                 ostream&, const HxRegKey* classKey,
00066                                 const HxRegKey* methodKey);
00067     void                    genVoidMethod(
00068                                 ostream&, const HxRegKey* classKey,
00069                                 const HxRegKey* methodKey);
00070     void                    genMethod(
00071                                 ostream&, const HxRegKey* classKey,
00072                                 const HxRegKey* methodKey,
00073                                 HxBool isVoid = hxFalse,
00074                                 HxBool isNamed = hxFalse);
00075 
00076     void                    genLocalArgs(ostream&, const HxRegKey* methodKey);
00077     void                    genActualArgs(ostream&, int nArgs);
00078 
00079     const HxRegistry*       _registry;
00080 
00081 
00082     typedef map<HxString, HxSadArgInfoPtr, less<HxString> >
00083         HxSadArgInfoMap;
00084 
00085     typedef map<HxString, HxSadClassInfoPtr, less<HxString> >
00086         HxSadClassInfoMap;
00087 
00088     HxSadClassInfo*              getHxSadClassInfo(HxString className);
00089 
00090     HxSadArgInfoMap              argInfoMap;
00091     HxSadClassInfoMap            classInfoMap;
00092 };
00093 
00094 #endif

Generated on Tue Feb 3 14:18:41 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001