00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef flc_DEPTAB_H
00017 #define flc_DEPTAB_H
00018
00019 #include <falcon/string.h>
00020 #include <falcon/genericmap.h>
00021
00026 namespace Falcon {
00027
00028 class Module;
00029 class Stream;
00030
00032 class ModuleDepData: public BaseAlloc
00033 {
00034 const String *m_modName;
00035 bool m_bPrivate;
00036 bool m_bFile;
00037
00038 public:
00039 ModuleDepData( const String *modName, bool bPrivate = false, bool bFile = false ):
00040 m_modName( modName ),
00041 m_bPrivate( bPrivate ),
00042 m_bFile( bFile )
00043 {}
00044
00045 const String *moduleName() const { return m_modName; }
00046 bool isPrivate() const { return m_bPrivate; }
00047 bool isFile() const { return m_bFile; }
00048 void setPrivate( bool mode ) { m_bPrivate = mode; }
00049 };
00050
00055 class FALCON_DYN_CLASS DependTable: public Map
00056 {
00057 public:
00058 DependTable();
00059 ~DependTable();
00060
00061 bool save( Stream *out ) const ;
00062 bool load( Module *mod, Stream *in );
00063
00076 void addDependency( const String *alias, const String *name, bool bPrivate );
00077
00082 void addDependency( const String *name, bool bPrivate = false ) {
00083 addDependency( name, name, bPrivate );
00084 }
00085
00086 ModuleDepData *findModule( const String &name ) const
00087 {
00088 ModuleDepData **data = (ModuleDepData **) find( &name );
00089 if( data == 0 )
00090 return 0;
00091
00092 return *data;
00093 }
00094 };
00095
00096 }
00097
00098 #endif
00099
00100