Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

spkghsh.hpp

Go to the documentation of this file.
00001 // +-------------------------------------------------------------------------+
00002 // |               I__n__t__e__L__i__b           0.6.10 development          |
00003 // | Copyright (c) Andrey Vikt. Stolyarov <crocodil_AT_croco.net> 2000-2007. |
00004 // |                                                                         |
00005 // | This is free software. The library part is available under              |
00006 // |                               GNU LESSER GENERAL PUBLIC LICENSE v.2.1.  |
00007 // | GNU LGPL v2.1 is found in docs/gnu_gpl2.txt,  or at  http://www.gnu.org |
00008 // |     Please see also docs/readme.txt and visit http://www.intelib.org    |
00009 // |                                                                         |
00010 // | !!! THERE IS NO WARRANTY OF ANY KIND, NEITHER EXPRESSED NOR IMPLIED !!! |
00011 // +-------------------------------------------------------------------------+
00012 
00013 
00014 
00015 
00024 #ifndef INTELIB_SPKGHSH_HPP_SENTRY
00025 #define INTELIB_SPKGHSH_HPP_SENTRY
00026 
00027 #include "../sexpress/iexcept.hpp"
00028 #include "../sexpress/sexpress.hpp"
00029 #include "../sexpress/gensref.hpp"
00030 #include "../sexpress/shashtbl.hpp"
00031 #include "sreader.hpp"
00032 
00033 class SExpressionHashPackage;
00034 
00036 class IntelibX_not_a_package : public IntelibX {
00037 public:
00038     IntelibX_not_a_package(SReference a_param);
00039 };
00040 
00042 typedef GenericSReference<SExpressionHashPackage, IntelibX_not_a_package> 
00043 SHashPackage;
00044 
00045 
00047 
00054 class SExpressionHashPackage : public SExpressionHashTable,
00055                                public IntelibPackage
00056 {
00057     SHashPackage parent; 
00058 public:
00060     static IntelibTypeId TypeId;
00061 
00063     SExpressionHashPackage();
00065     SExpressionHashPackage(const SHashPackage& a_parent);
00066 protected:
00067     ~SExpressionHashPackage();
00068     SExpressionHashPackage(const IntelibTypeId& tid);
00069     SExpressionHashPackage(const IntelibTypeId& tid,
00070                            const SHashPackage& a_parent);
00071 
00072 public:
00073         
00075 
00086     bool Import(const SReference &symb, const char *symbname = 0, 
00087                 bool safe = true);
00088 
00090 
00091     SReference Intern(const char *name); 
00092 
00094 
00095     SReference FindSymbol(const char *name);
00096 
00097 private:
00099     virtual SReference MakeSymbol(const char *name);
00100  
00101 protected:
00103 
00108     virtual SReference CreateNewSymbolObject(const char *name) const;
00109 
00110 #if INTELIB_TEXT_REPRESENTATIONS == 1
00111     virtual SString TextRepresentation() const;
00112 #endif
00113 };
00114 
00116 class IntelibX_package_conflict : public IntelibX {
00117 public:
00118     IntelibX_package_conflict(SReference a_param);
00119 };
00120 
00121 #endif        // sentry

Generated on Tue Dec 18 00:39:45 2007 for InteLib by  doxygen 1.4.1