Initial commit
This commit is contained in:
178
application/source/text.c
Executable file
178
application/source/text.c
Executable file
@@ -0,0 +1,178 @@
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <array.h>
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
|
||||
|
||||
class text{
|
||||
|
||||
char * value;
|
||||
|
||||
|
||||
int usevalue = -1;
|
||||
|
||||
int length;
|
||||
|
||||
int capacity = 500;
|
||||
|
||||
|
||||
int operator==( text * b ) {
|
||||
|
||||
if( strcmp( this->value, b->value ) == 0 ) {
|
||||
|
||||
return 1;
|
||||
|
||||
} else {
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
text * operator+=( char * b ) {
|
||||
|
||||
this->append( b );
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
void constructor( char * value ) {
|
||||
|
||||
this->length = strlen( value );
|
||||
|
||||
if( this->length > this->capacity ) {
|
||||
|
||||
this->capacity = this->length * 2;
|
||||
|
||||
}
|
||||
|
||||
this->value = malloc( sizeof( char ) * this->capacity );
|
||||
|
||||
strcpy( this->value, value );
|
||||
}
|
||||
|
||||
char get( int index ) {
|
||||
|
||||
return this->value[ index ];
|
||||
|
||||
}
|
||||
|
||||
void resize( int size ) {
|
||||
|
||||
this->value = realloc( this->value, size );
|
||||
|
||||
this->capacity = size;
|
||||
|
||||
}
|
||||
|
||||
text * append( char * value ) {
|
||||
|
||||
int originalLength = this->length;
|
||||
|
||||
int newValueLength = strlen( value );
|
||||
|
||||
this->length += newValueLength;
|
||||
|
||||
if( this->length > this->capacity ) {
|
||||
|
||||
this->resize( this->length * 2 );
|
||||
|
||||
}
|
||||
|
||||
memcpy( this->value + originalLength, value, newValueLength + 1 );
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
text * appendBinary( char * value, int size ) {
|
||||
|
||||
int originalLength = this->length;
|
||||
|
||||
int newValueLength = size;
|
||||
|
||||
this->length += newValueLength;
|
||||
|
||||
if( this->length > this->capacity ) {
|
||||
|
||||
this->resize( this->length * 2 );
|
||||
|
||||
}
|
||||
|
||||
memcpy( this->value + originalLength, value, newValueLength + 1 );
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
|
||||
text * appendObject( text * object ) {
|
||||
|
||||
int originalLength = this->length;
|
||||
|
||||
int newValueLength = object->length;
|
||||
|
||||
this->length += newValueLength;
|
||||
|
||||
if( this->length > this->capacity ) {
|
||||
|
||||
this->resize( this->length * 2 );
|
||||
|
||||
}
|
||||
|
||||
memcpy(this->value + originalLength, object->value, newValueLength + 1);
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
text * concatenate( char * value ) {
|
||||
|
||||
text * copy = new text( this->value );
|
||||
|
||||
strcat( copy->value, value );
|
||||
|
||||
return copy;
|
||||
|
||||
}
|
||||
|
||||
char * toNative() {
|
||||
|
||||
return this->value;
|
||||
|
||||
}
|
||||
|
||||
char * whiteSpace( int whiteSpaceCount ) {
|
||||
|
||||
char * output = malloc( 400 );
|
||||
|
||||
for (int i = 0; i < whiteSpaceCount; ++i)
|
||||
{
|
||||
|
||||
strcat( output, " " );
|
||||
|
||||
}
|
||||
|
||||
return output;
|
||||
|
||||
}
|
||||
|
||||
void free() {
|
||||
|
||||
free( this->value );
|
||||
|
||||
free( this );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user