File: AutoCompleter.h

package info (click to toggle)
bzflag 2.0.13.20080902-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 27,564 kB
  • ctags: 34,716
  • sloc: cpp: 139,842; ansic: 14,510; sh: 10,715; makefile: 2,454; perl: 477; php: 428; python: 345; objc: 243; xml: 24
file content (74 lines) | stat: -rw-r--r-- 2,245 bytes parent folder | download
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* bzflag
 * Copyright (c) 1993 - 2008 Tim Riker
 *
 * This package is free software;  you can redistribute it and/or
 * modify it under the terms of the license found in the file
 * named COPYING that should have accompanied this file.
 *
 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef AUTOCOMPLETER_H
#define AUTOCOMPLETER_H

#include <string>
#include <vector>



/** This class will try to complete strings to registered words. */
class AutoCompleter {
  public:
    /** Use this function to register a new word that strings should be
	checked against and possibly completed to. Empty strings will not
	be registered. */
    void registerWord(const std::string& str, bool quoteString = false);

    /** Use this function to unregister a word. If the word hasn't been
	registered previously nothing will happen. */
    void unregisterWord(const std::string& str);

    /** This function will search the list of registered words and see if
	the given string can be completed to any of those words. If the string
	can be completed to several words, their largest common prefix will
	be returned. */
    std::string complete(const std::string& str, std::string* matches = NULL);

  protected:
    class WordRecord {
      public:
	WordRecord(const std::string& str, bool quoteString);
	bool operator<(const WordRecord&) const;
	bool operator==(const WordRecord&) const;
	bool operator!=(const WordRecord&) const;
      public:
	std::string word;
	bool quoteString;
    };
    std::vector<WordRecord> words;
};


/** This class will try to complete strings to registered words.
    It starts with a bunch of common /-commands */
class DefaultCompleter : public AutoCompleter {
  public:
    /** ctor sets default words */
    DefaultCompleter();

    /** This function sets the list of registered words to a default which
	consists of some /-commands; possible other words are removed */
    void setDefaults();
};

#endif

// Local Variables: ***
// mode:C++ ***
// tab-width: 8 ***
// c-basic-offset: 2 ***
// indent-tabs-mode: t ***
// End: ***
// ex: shiftwidth=2 tabstop=8