]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/scintilla/include/PropSet.h
Add support for custom scheme handling and virtual file systems to the OSX WebKit...
[wxWidgets.git] / src / stc / scintilla / include / PropSet.h
index 31da01f954244e13bf35759ba6243c0e575b7a83..c95202174f29bdbf96841ded89cfb4ccd9f62f35 100644 (file)
-// SciTE - Scintilla based Text Editor
-// PropSet.h - a java style properties file module
-// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
+// Scintilla source code edit control
+/** @file PropSet.h
+ ** An interface to the methods needed for access to property sets inside lexers.
+ **/
+// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
 
 #ifndef PROPSET_H
 #define PROPSET_H
 
-bool EqualCaseInsensitive(const char *a, const char *b);
-
-// Define another string class.
-// While it would be 'better' to use std::string, that doubles the executable size.
-
-inline char *StringDup(const char *s) {
-       if (!s)
-               return 0;
-       char *sNew = new char[strlen(s) + 1];
-       if (sNew)
-               strcpy(sNew, s);
-       return sNew;
-}
-
-class SString {
-       char *s;
-public:
-       SString() {
-               s = 0;
-       }
-       SString(const SString &source) {
-               s = StringDup(source.s);
-       }
-       SString(const char *s_) {
-               s = StringDup(s_);
-       }
-       SString(int i) {
-               char number[100];
-               sprintf(number, "%0d", i);
-               //itoa(i, number, 10);
-               s = StringDup(number);
-       }
-       ~SString() {
-               delete []s;
-               s = 0;
-       }
-       SString &operator=(const SString &source) {
-               if (this != &source) {
-                       delete []s;
-                       s = StringDup(source.s);
-               }
-               return *this;
-       }
-       bool operator==(const SString &other) const {
-               if ((s == 0) && (other.s == 0))
-                       return true;
-               if ((s == 0) || (other.s == 0))
-                       return false;
-               return strcmp(s, other.s) == 0;
-       }
-       bool operator==(const char *sother) const {
-               if ((s == 0) && (sother == 0))
-                       return true;
-               if ((s == 0) || (sother == 0))
-                       return false;
-               return strcmp(s, sother) == 0;
-       }
-       const char *c_str() const {
-               if (s)
-                       return s;
-               else
-                       return "";
-       }
-       int length() const {
-               if (s)
-                       return strlen(s);
-               else
-                       return 0;
-       }
-       char operator[](int i) {
-               if (s)
-                       return s[i];
-               else
-                       return '\0';
-       }
-       SString &operator +=(const char *sother) {
-               int len = length();
-               int lenOther = strlen(sother);
-               char *sNew = new char[len + lenOther + 1];
-               if (sNew) {
-                       if (s)
-                               memcpy(sNew, s, len);
-                       memcpy(sNew + len, sother, lenOther);
-                       sNew[len + lenOther] = '\0';
-                       delete []s;
-                       s = sNew;
-               }
-               return *this;
-       }
-       int value() {
-               if (s)
-                       return atoi(s);
-               else 
-                       return 0;
-       }
-};
-
-class PropSet {
-private:
-       char **vals;
-       int size;
-       int used;
-public:
-       PropSet *superPS;
-       PropSet();
-       ~PropSet();
-       void EnsureCanAddEntry();
-       void Set(const char *key, const char *val);
-       void Set(char *keyval);
-       SString Get(const char *key);
-       int GetInt(const char *key, int defaultValue=0);
-       SString GetWild(const char *keybase, const char *filename);
-       SString GetNewExpand(const char *keybase, const char *filename);
-       void Clear();
-       void ReadFromMemory(const char *data, int len);
-       void Read(const char *filename);
-};
+#ifdef SCI_NAMESPACE
+namespace Scintilla {
+#endif
 
-// This is a fixed length list of strings suitable for display  in combo boxes
-// as a memory of user entries
-template<int sz>
-class EntryMemory {
-       SString entries[sz];
+class PropertyGet {
 public:
-       void Insert(SString s) {
-               for (int i=0;i<sz;i++) {
-                       if (entries[i] == s) {
-                               for (int j=i;j>0;j--) {
-                                       entries[j] = entries[j-1];
-                               }
-                               entries[0] = s;
-                               return;
-                       }
-               }
-               for (int k=sz-1;k>0;k--) {
-                       entries[k] = entries[k-1];
-               }
-               entries[0] = s;
-       }
-       int Length() const {
-               int len = 0;
-               for (int i=0;i<sz;i++)
-                       if (entries[i].length())
-                               len++;
-               return len;
-       }
-       SString At(int n) const {
-               return entries[n];
-       }
+       virtual char *ToString() const=0;       // Caller must delete[] the return value
+       virtual int GetInt(const char *key, int defaultValue=0) const=0;
+       virtual ~PropertyGet() {}
 };
 
-class WordList {
-public:
-       // Each word contains at least one character - a empty word acts as sentinal at the end.
-       char **words;
-       char *list;
-       int len;
-       bool onlyLineEnds;      // Delimited by any white space or only line ends
-       int starts[256];
-       WordList(bool onlyLineEnds_ = false) : 
-               words(0), list(0), len(0), onlyLineEnds(onlyLineEnds_) {}
-       ~WordList() { Clear(); }
-       operator bool() { return list; }
-       const char *operator[](int ind) { return words[ind]; }
-       void Clear();
-       void Set(const char *s);
-       char *Allocate(int size);
-       void SetFromAllocated();
-       bool InList(const char *s);
-};
+#ifdef SCI_NAMESPACE
+}
+#endif
 
 #endif