Files

178 lines
2.2 KiB
C
Raw Permalink Normal View History

2025-11-17 10:28:09 +01:00
#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 );
}
}