1 /* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */ 2 3 #ifndef AI_INTERFACE_LIBRARY_INFO_H 4 #define AI_INTERFACE_LIBRARY_INFO_H 5 6 #include <vector> 7 #include <map> 8 #include <string> 9 10 class AIInterfaceKey; 11 12 class CAIInterfaceLibraryInfo { 13 public: 14 CAIInterfaceLibraryInfo(const CAIInterfaceLibraryInfo& interfaceInfo); 15 CAIInterfaceLibraryInfo(const std::string& interfaceInfoFile); 16 virtual ~CAIInterfaceLibraryInfo(); 17 18 //virtual LevelOfSupport GetLevelOfSupportForCurrentEngine() const; 19 20 virtual size_t size() const; 21 virtual const std::string& GetKeyAt(size_t index) const; 22 virtual const std::string& GetValueAt(size_t index) const; 23 virtual const std::string& GetDescriptionAt(size_t index) const; 24 25 virtual AIInterfaceKey GetKey() const; 26 27 virtual const std::string& GetDataDir() const; 28 virtual const std::string& GetDataDirCommon() const; 29 /** Restrictions: none of the following: spaces, '_', '#' */ 30 virtual const std::string& GetShortName() const; 31 /** Restrictions: none of the following: spaces, '_', '#' */ 32 virtual const std::string& GetVersion() const; 33 virtual const std::string& GetName() const; 34 virtual const std::string& GetDescription() const; 35 virtual const std::string& GetURL() const; 36 virtual bool IsLookupSupported() const; 37 virtual const std::string& GetInfo(const std::string& key) const; 38 39 virtual void SetDataDir(const std::string& dataDir); 40 virtual void SetDataDirCommon(const std::string& dataDirCommon); 41 /** Restrictions: none of the following: spaces, '_', '#' */ 42 virtual void SetShortName(const std::string& shortName); 43 /** Restrictions: none of the following: spaces, '_', '#' */ 44 virtual void SetVersion(const std::string& version); 45 virtual void SetName(const std::string& name); 46 virtual void SetDescription(const std::string& description); 47 virtual void SetURL(const std::string& url); 48 virtual bool SetInfo(const std::string& key, const std::string& value, 49 const std::string& description = ""); 50 51 private: 52 // for having a well defined order 53 std::vector<std::string> keys; 54 std::map<std::string, std::string> keyLower_key; 55 std::map<std::string, std::string> key_value; 56 std::map<std::string, std::string> key_description; 57 }; 58 59 #endif // AI_INTERFACE_LIBRARY_INFO_H 60