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