Cleanup
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@288 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
abf7e68b87
commit
78eee44879
1 changed files with 19 additions and 77 deletions
|
|
@ -116,64 +116,6 @@ void format_string(char *str) {
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
#define INIT_MAXSIZE 64
|
#define INIT_MAXSIZE 64
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
|
||||||
// Pools. This is a list of available strings for memory allocation
|
|
||||||
// and deletion.
|
|
||||||
// ---------------------------------------------------------------
|
|
||||||
|
|
||||||
struct StrMem {
|
|
||||||
char *str;
|
|
||||||
int len;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define POOLSIZE 100
|
|
||||||
|
|
||||||
static StrMem pool[POOLSIZE];
|
|
||||||
static int pool_index = 0;
|
|
||||||
|
|
||||||
// Returns an item from the pool that can accomodate len
|
|
||||||
static char *get_pool(int len, int &newlen) {
|
|
||||||
int i,j;
|
|
||||||
char *nc;
|
|
||||||
if (pool_index < 1) {
|
|
||||||
newlen = len;
|
|
||||||
return new char[len];
|
|
||||||
}
|
|
||||||
i = pool_index-1;
|
|
||||||
j = 0;
|
|
||||||
while(i >= 0) {
|
|
||||||
if ((pool[i].len >= len) && (pool[i].len <= 4*len)) {
|
|
||||||
nc = pool[i].str;
|
|
||||||
newlen = pool[i].len;
|
|
||||||
pool[i].str = pool[pool_index-1].str;
|
|
||||||
pool[i].len = pool[pool_index-1].len;
|
|
||||||
pool_index--;
|
|
||||||
return nc;
|
|
||||||
}
|
|
||||||
j++;
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
newlen = len;
|
|
||||||
return new char[len];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Puts an item onto the pool
|
|
||||||
|
|
||||||
static void put_pool(char *str, int len) {
|
|
||||||
if (len < INIT_MAXSIZE) {
|
|
||||||
delete [] str;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (pool_index == POOLSIZE) {
|
|
||||||
delete [] pool[pool_index-1].str;
|
|
||||||
pool_index--;
|
|
||||||
}
|
|
||||||
pool[pool_index].str = str;
|
|
||||||
pool[pool_index].len = len;
|
|
||||||
if (pool_index != POOLSIZE)
|
|
||||||
pool_index++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// String::String()
|
// String::String()
|
||||||
//
|
//
|
||||||
|
|
@ -182,7 +124,7 @@ static void put_pool(char *str, int len) {
|
||||||
|
|
||||||
String::String() {
|
String::String() {
|
||||||
maxsize = INIT_MAXSIZE;
|
maxsize = INIT_MAXSIZE;
|
||||||
str = get_pool(maxsize,maxsize); // May return a pool that is larger
|
str = new char[maxsize];
|
||||||
str[0] = 0;
|
str[0] = 0;
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -200,7 +142,7 @@ String::String(const char *s) {
|
||||||
l = (int) strlen(s);
|
l = (int) strlen(s);
|
||||||
if ((l+1) > max) max = l+1;
|
if ((l+1) > max) max = l+1;
|
||||||
}
|
}
|
||||||
str = get_pool(max,maxsize);
|
str = new char[maxsize];
|
||||||
if (s) {
|
if (s) {
|
||||||
strcpy(str,s);
|
strcpy(str,s);
|
||||||
len = l;
|
len = l;
|
||||||
|
|
@ -217,7 +159,7 @@ String::String(const char *s) {
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
String::~String() {
|
String::~String() {
|
||||||
put_pool(str,maxsize);
|
delete [] str;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
|
@ -237,9 +179,9 @@ void String::add(const char *newstr) {
|
||||||
if (newlen >= maxsize-1) {
|
if (newlen >= maxsize-1) {
|
||||||
newmaxsize = 2*maxsize;
|
newmaxsize = 2*maxsize;
|
||||||
if (newlen >= newmaxsize -1) newmaxsize = newlen + 1;
|
if (newlen >= newmaxsize -1) newmaxsize = newlen + 1;
|
||||||
nstr = get_pool(newmaxsize,newmaxsize);
|
nstr = new char[newmaxsize];
|
||||||
strcpy(nstr,str);
|
strcpy(nstr,str);
|
||||||
put_pool(str,maxsize);
|
delete [] str;
|
||||||
maxsize = newmaxsize;
|
maxsize = newmaxsize;
|
||||||
str = nstr;
|
str = nstr;
|
||||||
}
|
}
|
||||||
|
|
@ -262,9 +204,9 @@ void String::add(char nc) {
|
||||||
if (newlen >= maxsize-1) {
|
if (newlen >= maxsize-1) {
|
||||||
newmaxsize = 2*maxsize;
|
newmaxsize = 2*maxsize;
|
||||||
if (newlen >= newmaxsize -1) newmaxsize = newlen + 1;
|
if (newlen >= newmaxsize -1) newmaxsize = newlen + 1;
|
||||||
nstr = get_pool(newmaxsize,newmaxsize);
|
nstr = new char[newmaxsize];
|
||||||
strcpy(nstr,str);
|
strcpy(nstr,str);
|
||||||
put_pool(str,maxsize);
|
delete [] str;
|
||||||
maxsize = newmaxsize;
|
maxsize = newmaxsize;
|
||||||
str = nstr;
|
str = nstr;
|
||||||
}
|
}
|
||||||
|
|
@ -290,9 +232,9 @@ void String::insert(const char *newstr) {
|
||||||
if (newlen >= maxsize-1) {
|
if (newlen >= maxsize-1) {
|
||||||
newmaxsize = 2*maxsize;
|
newmaxsize = 2*maxsize;
|
||||||
if (newlen >= newmaxsize -1) newmaxsize = newlen + 1;
|
if (newlen >= newmaxsize -1) newmaxsize = newlen + 1;
|
||||||
nstr = get_pool(newmaxsize,newmaxsize);
|
nstr = new char[newmaxsize];
|
||||||
strcpy(nstr,str);
|
strcpy(nstr,str);
|
||||||
put_pool(str,maxsize);
|
delete [] str;
|
||||||
maxsize = newmaxsize;
|
maxsize = newmaxsize;
|
||||||
str = nstr;
|
str = nstr;
|
||||||
}
|
}
|
||||||
|
|
@ -356,8 +298,8 @@ String &String::operator=(const char *s) {
|
||||||
if (s) {
|
if (s) {
|
||||||
newlen = strlen(s);
|
newlen = strlen(s);
|
||||||
if ((newlen >= maxsize) && (str)) {
|
if ((newlen >= maxsize) && (str)) {
|
||||||
put_pool(str,maxsize);
|
delete [] str;
|
||||||
str = get_pool(newlen+1,maxsize);
|
str = new char[newlen+1];
|
||||||
maxsize = newlen+1;
|
maxsize = newlen+1;
|
||||||
}
|
}
|
||||||
strcpy(str,s);
|
strcpy(str,s);
|
||||||
|
|
@ -406,7 +348,7 @@ void String::untabify() {
|
||||||
// Reset the internal state of this string
|
// Reset the internal state of this string
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
str = get_pool(maxsize,maxsize);
|
str = new char[maxsize];
|
||||||
str[0]= 0;
|
str[0]= 0;
|
||||||
|
|
||||||
// Now walk down the old string and expand tabs. Tabs are usually place
|
// Now walk down the old string and expand tabs. Tabs are usually place
|
||||||
|
|
@ -432,7 +374,7 @@ void String::untabify() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blow away the old string
|
// Blow away the old string
|
||||||
put_pool(s,oldmaxsize);
|
delete [] s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -457,7 +399,7 @@ void String::replace(const char *token, const char *rep) {
|
||||||
t = strstr(c,token);
|
t = strstr(c,token);
|
||||||
if (t) {
|
if (t) {
|
||||||
len = 0;
|
len = 0;
|
||||||
str = get_pool(maxsize,maxsize);
|
str = new char[maxsize];
|
||||||
while (t) {
|
while (t) {
|
||||||
// Found a token in string s
|
// Found a token in string s
|
||||||
// Dump characters into our string
|
// Dump characters into our string
|
||||||
|
|
@ -480,7 +422,7 @@ void String::replace(const char *token, const char *rep) {
|
||||||
// Attach rest of the string
|
// Attach rest of the string
|
||||||
if (*c)
|
if (*c)
|
||||||
this->add(c);
|
this->add(c);
|
||||||
put_pool(s,oldmaxsize);
|
delete [] s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -511,7 +453,7 @@ void String::replaceid(const char *token, const char *rep) {
|
||||||
t = strstr(c,token);
|
t = strstr(c,token);
|
||||||
if (t) {
|
if (t) {
|
||||||
len = 0;
|
len = 0;
|
||||||
str = get_pool(maxsize,maxsize);
|
str = new char[maxsize];
|
||||||
while (t) {
|
while (t) {
|
||||||
// Found a token in string s
|
// Found a token in string s
|
||||||
// Dump characters into our string
|
// Dump characters into our string
|
||||||
|
|
@ -544,7 +486,7 @@ void String::replaceid(const char *token, const char *rep) {
|
||||||
this->add(c);
|
this->add(c);
|
||||||
|
|
||||||
// Delete the old string
|
// Delete the old string
|
||||||
put_pool(s,oldmaxsize);
|
delete [] s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -563,7 +505,7 @@ void String::strip() {
|
||||||
int whitespace = 0;
|
int whitespace = 0;
|
||||||
int oldmaxsize = maxsize;
|
int oldmaxsize = maxsize;
|
||||||
|
|
||||||
str = get_pool(maxsize,maxsize); // Get a new string.
|
str = new char[maxsize];
|
||||||
len = 0;
|
len = 0;
|
||||||
|
|
||||||
c = s;
|
c = s;
|
||||||
|
|
@ -584,5 +526,5 @@ void String::strip() {
|
||||||
}
|
}
|
||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
put_pool(s,oldmaxsize);
|
delete [] s;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue