Initial community commit

This commit is contained in:
Jef 2024-09-24 14:54:57 +02:00
parent 537bcbc862
commit fc06254474
16440 changed files with 4239995 additions and 2 deletions

View file

@ -0,0 +1,56 @@
#ifndef __BIGSTRING_H
#define __BIGSTRING_H
/*
A class tor concatenate chunks of texts into one big pool. This is much faster than using String if you are adding
a lot of tiny pieces into one giant block (a typical cases of this is when writing xml). Upon request for the value,
the class allocates one big block of memory and copies all the strings into it serially (as opposed to String
reallocating the entire block at each concatenation). Note that because of the type of implementation BigString has
to use, you cannot get the full block as a return value to your concatenations and assignments (+= and = return void).
To do this, request the value explicitely (this should be kept to a strict minimum or the advantage of BigString over
String will disapear)
*/
#include <bfc/string/bfcstring.h>
#include <bfc/ptrlist.h>
class BigString {
public:
BigString();
virtual ~BigString();
operator const char *() /*const*/ { return getValue(); }
const char *getValue() /*const*/;
char *getNonConstVal() { return (char *)getValue(); }
void setValue(const char *val);
// copy assignment operator
BigString& operator =(/*const*/ BigString &s) {
if (this != &s)
setValue(s);
return *this;
}
void operator =(const char *newval) { setValue(newval); }
void operator +=(const char *addval) {
cat(addval);
}
int isempty();
void reset();
void catn(const char *s, int n);
void cat(const char *s);
char lastChar();
char firstChar();
int getLineCount();
private:
PtrList<String> strings;
char *mem;
int m_linecount;
};
#endif