00001 // See the file LICENSE in the some directory as this file for legal 00002 // notices about this software. 00003 #ifndef DEV_W3_ORG__2001_BLINDFOLD_SRC_FOREIGNVARIABLESCOPE_H 00004 #define DEV_W3_ORG__2001_BLINDFOLD_SRC_FOREIGNVARIABLESCOPE_H 00005 // $Id: ForeignVariableScope_8h-source.html,v 1.2 2001/10/10 20:40:58 sandro Exp $ 00006 #include "config.h" 00007 #include "VariableScope.h" 00008 00016 class ForeignVariableScope : public VariableScope { 00017 public: 00018 00019 // STANDARD MEMBER FUNCTIONS 00020 ForeignVariableScope(); 00021 ForeignVariableScope(VariableScope* mbase); 00022 ForeignVariableScope(const ForeignVariableScope& other); 00023 const ForeignVariableScope& operator=(const ForeignVariableScope& other); 00024 bool operator==(const ForeignVariableScope& other) const; 00025 bool operator<(const ForeignVariableScope& other) const; 00026 size_t hash() const; 00027 friend std::ostream& operator<<(std::ostream& s, const ForeignVariableScope& me); 00028 virtual std::ostream& print_to(std::ostream& stream) const; 00029 ~ForeignVariableScope(); 00030 00031 // (RE)IMPLEMENTATION OF INHERITED MEMBERS 00032 virtual size_t getNumVars() const; 00033 virtual Symbol getVar(size_t index) const; 00034 virtual Symbol getVar(const char* name, bool* added_ptr=0); 00035 virtual size_t getVarIndex(const char* name); 00036 virtual bool contains(const Triple& t) const; 00037 00038 // CLASS-SPECIFIC PUBLIC INTERFACE 00039 00040 private: 00041 VariableScope* mbase; 00042 typedef std::hash_map<std::string, std::string> Map; 00043 Map map; 00044 00045 const char* translate(const char* name); 00046 }; 00047 00048 STANDARD_EXTERNAL(ForeignVariableScope) 00049 00050 #endif /* DEV_W3_ORG__2001_BLINDFOLD_SRC_FOREIGNVARIABLESCOPE_H */ // -*-C++-*-