diff options
author | nyamatongwe <unknown> | 2000-12-10 08:50:46 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2000-12-10 08:50:46 +0000 |
commit | 8c4a40255a8645a3ee49872ea0b35753660f92cf (patch) | |
tree | 5b57a1eafe9a9ee8f92d489255fe0fc7c1ffbe25 /include | |
parent | 7d1048716cf8f23541893649cb83be8ee6db2847 (diff) | |
download | scintilla-mirror-8c4a40255a8645a3ee49872ea0b35753660f92cf.tar.gz |
Moved SString class out nto its own header.
Moved file functionality from PropSet to PropSetFile subclass which is
part of SciTE rather than Scintilla so Scintilla has no file IO.
Diffstat (limited to 'include')
-rw-r--r-- | include/PropSet.h | 174 | ||||
-rw-r--r-- | include/SString.h | 216 |
2 files changed, 218 insertions, 172 deletions
diff --git a/include/PropSet.h b/include/PropSet.h index 47f99a0d5..e2d04e8ee 100644 --- a/include/PropSet.h +++ b/include/PropSet.h @@ -5,179 +5,11 @@ #ifndef PROPSET_H #define PROPSET_H +#include "SString.h" bool EqualCaseInsensitive(const char *a, const char *b); -#if PLAT_WIN -#define strcasecmp stricmp -#define strncasecmp strnicmp -#endif - -// Define another string class. -// While it would be 'better' to use std::string, that doubles the executable size. - -inline char *StringDup(const char *s, int len=-1) { - if (!s) - return 0; - if (len == -1) - len = strlen(s); - char *sNew = new char[len + 1]; - if (sNew) { - strncpy(sNew, s, len); - sNew[len] = '\0'; - } - return sNew; -} - -class SString { - char *s; - int ssize; -public: - typedef const char* const_iterator; - typedef int size_type; - static size_type npos; - const char* begin(void) const { - return s; - } - const char* end(void) const { - return &s[ssize]; - } - size_type size(void) const { - if (s) - return ssize; - else - return 0; - } - SString &assign(const char* sother, int size_ = -1) { - char *t = s; - s = StringDup(sother,size_); - ssize = (s) ? strlen(s) : 0; - delete []t; - return *this; - } - SString &assign(const SString& sother, int size_ = -1) { - return assign(sother.s,size_); - } - SString &assign(const_iterator ibeg, const_iterator iend) { - return assign(ibeg,iend - ibeg); - } - SString() { - s = 0; - ssize = 0; - } - SString(const SString &source) { - s = StringDup(source.s); - ssize = (s) ? strlen(s) : 0; - } - SString(const char *s_) { - s = StringDup(s_); - ssize = (s) ? strlen(s) : 0; - } - SString(int i) { - char number[100]; - sprintf(number, "%0d", i); - s = StringDup(number); - ssize = (s) ? strlen(s) : 0; - } - ~SString() { - delete []s; - s = 0; - ssize = 0; - } - SString &operator=(const SString &source) { - if (this != &source) { - delete []s; - s = StringDup(source.s); - ssize = (s) ? strlen(s) : 0; - } - 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 SString &other) const { - return !operator==(other); - } - 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; - } - bool operator!=(const char *sother) const { - return !operator==(sother); - } - 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) const { - if (s) - return s[i]; - else - return '\0'; - } - SString &operator +=(const char *sother) { - return append(sother,-1); - } - SString &operator +=(const SString &sother) { - return append(sother.s,sother.ssize); - } - SString &operator +=(char ch) { - return append(&ch,1); - } - SString &append(const char* sother, int lenOther) { - int len = length(); - if(lenOther < 0) - lenOther = strlen(sother); - char *sNew = new char[len + lenOther + 1]; - if (sNew) { - if (s) - memcpy(sNew, s, len); - strncpy(&sNew[len], sother, lenOther); - sNew[len + lenOther] = '\0'; - delete []s; - s = sNew; - ssize = (s) ? strlen(s) : 0; - } - return *this; - } - int value() const { - if (s) - return atoi(s); - else - return 0; - } - void substitute(char find, char replace) { - char *t = s; - while (t) { - t = strchr(t, find); - if (t) - *t = replace; - } - } - // I don't think this really belongs here -- Neil - void correctPath() { -#ifdef unix - substitute('\\', '/'); -#else - substitute('/', '\\'); -#endif - } -}; +bool isprefix(const char *target, const char *prefix); struct Property { unsigned int hash; @@ -204,8 +36,6 @@ public: 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, const char *directoryForImports=0); - void Read(const char *filename, const char *directoryForImports); }; class WordList { diff --git a/include/SString.h b/include/SString.h new file mode 100644 index 000000000..bdc4548ba --- /dev/null +++ b/include/SString.h @@ -0,0 +1,216 @@ +// SciTE - Scintilla based Text Editor +// SString.h - a simple string class +// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org> +// The License.txt file describes the conditions under which this software may be distributed. + +#ifndef SSTRING_H +#define SSTRING_H + +#if PLAT_WIN +#define strcasecmp stricmp +#define strncasecmp strnicmp +#endif + +// Define another string class. +// While it would be 'better' to use std::string, that doubles the executable size. + +inline char *StringDup(const char *s, int len=-1) { + if (!s) + return 0; + if (len == -1) + len = strlen(s); + char *sNew = new char[len + 1]; + if (sNew) { + strncpy(sNew, s, len); + sNew[len] = '\0'; + } + return sNew; +} + +class SString { + char *s; + int ssize; +public: + typedef const char* const_iterator; + typedef int size_type; + static size_type npos; + const char* begin(void) const { + return s; + } + const char* end(void) const { + return &s[ssize]; + } + size_type size(void) const { + if (s) + return ssize; + else + return 0; + } + SString &assign(const char* sother, int size_ = -1) { + char *t = s; + s = StringDup(sother,size_); + ssize = (s) ? strlen(s) : 0; + delete []t; + return *this; + } + SString &assign(const SString& sother, int size_ = -1) { + return assign(sother.s,size_); + } + SString &assign(const_iterator ibeg, const_iterator iend) { + return assign(ibeg,iend - ibeg); + } + SString() { + s = 0; + ssize = 0; + } + SString(const SString &source) { + s = StringDup(source.s); + ssize = (s) ? strlen(s) : 0; + } + SString(const char *s_) { + s = StringDup(s_); + ssize = (s) ? strlen(s) : 0; + } + SString(int i) { + char number[100]; + sprintf(number, "%0d", i); + s = StringDup(number); + ssize = (s) ? strlen(s) : 0; + } + ~SString() { + delete []s; + s = 0; + ssize = 0; + } + SString &operator=(const SString &source) { + if (this != &source) { + delete []s; + s = StringDup(source.s); + ssize = (s) ? strlen(s) : 0; + } + 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 SString &other) const { + return !operator==(other); + } + 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; + } + bool operator!=(const char *sother) const { + return !operator==(sother); + } + 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) const { + if (s) + return s[i]; + else + return '\0'; + } + SString &operator +=(const char *sother) { + return append(sother,-1); + } + SString &operator +=(const SString &sother) { + return append(sother.s,sother.ssize); + } + SString &operator +=(char ch) { + return append(&ch,1); + } + SString &append(const char* sother, int lenOther) { + int len = length(); + if(lenOther < 0) + lenOther = strlen(sother); + char *sNew = new char[len + lenOther + 1]; + if (sNew) { + if (s) + memcpy(sNew, s, len); + strncpy(&sNew[len], sother, lenOther); + sNew[len + lenOther] = '\0'; + delete []s; + s = sNew; + ssize = (s) ? strlen(s) : 0; + } + return *this; + } + int value() const { + if (s) + return atoi(s); + else + return 0; + } + void substitute(char find, char replace) { + char *t = s; + while (t) { + t = strchr(t, find); + if (t) + *t = replace; + } + } + //added by ajkc - 08122000 + char charAt(int i) { + return s[i]; + } + //added by ajkc - 08122000 + SString substring(int startPos, int endPos = -1) { + SString result; + + //do some checks first so we do the "right" thing + if (endPos > this->size() || endPos == -1) + endPos = this->size(); + + if (startPos < 0) + startPos = 0; + + if (startPos == endPos) { + //result += s[startPos]; + result += ""; // Why? -- Neil + return result; + } + + if (startPos > endPos) { + int tmp = endPos; + endPos = startPos; + startPos = tmp; + } + + //printf("SString: substring startPos %d endPos %d\n",startPos,endPos); + for (int i = startPos; i < endPos; i++) { + //printf("SString: substring %d: %c\n",i,s[i]); + result += s[i]; + } + + //printf("SString: substring: returning: %s\n", result.c_str()); + return result; + } + // I don't think this really belongs here -- Neil + void correctPath() { +#ifdef unix + substitute('\\', '/'); +#else + substitute('/', '\\'); +#endif + } +}; + +#endif |