1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef WORD_COMPLETION_H
#define WORD_COMPLETION_H
#include <string>
#include <vector>
#include <map>
class CWordCompletion
{
CWordCompletion();
~CWordCompletion();
public:
/**
* This function initialized a singleton instance,
* if not yet done by a call to GetInstance()
*/
static void CreateInstance();
static CWordCompletion* GetInstance() { return singleton; }
static void DestroyInstance();
void AddWord(const std::string& word, bool startOfLine, bool unitName,
bool miniMap);
void RemoveWord(const std::string& word);
/// Returns partial matches
std::vector<std::string> Complete(std::string& msg) const;
private:
void Reset();
class WordProperties {
public:
WordProperties()
: startOfLine(false)
, unitName(false)
, miniMap(false)
{}
WordProperties(bool startOfLine, bool unitName, bool miniMap)
: startOfLine(startOfLine)
, unitName(unitName)
, miniMap(miniMap)
{}
bool startOfLine;
bool unitName;
bool miniMap;
};
static CWordCompletion* singleton;
std::map<std::string, WordProperties> words;
};
#define wordCompletion CWordCompletion::GetInstance()
#endif /* WORD_COMPLETION_H */
|