#include #include #include #include #include #include #include class char{ int operator==( char * b ) { return this->compare( b ); } void operator+=( char * b ) { // not proper strcat( this, b ); } char * operator+( char * b ) { return this->concatenate( b ); } int compare( char * b ) { return strcmp( this, b ) == 0; } char * concatenate( char * b ) { int lengthA = strlen( this ); int lengthB = strlen( b ); char * pointer = this; char * copy = ( char * ) malloc( ( lengthA + lengthB + 1 ) * sizeof( char ) ); int idx = 0; while ( * pointer != '\0' ){ copy[idx++] = *pointer++; } pointer = &b[0]; while ( * pointer != '\0' ){ copy[idx++] = *pointer++; } copy[ idx++ ] = '\0'; return ©[0]; } int includes( char * compare ) { if ( strstr( this, compare ) != NULL ) { return 1; } else { return 0; } } char * clone( ) { char * newCopy = malloc( sizeof( char ) * strlen( this ) ); strcpy( newCopy, this ); return newCopy; } char * copy( ) { char * newCopy = malloc( sizeof( char ) * strlen( this ) ); strcpy( newCopy, this ); return newCopy; } struct array * split( char * needle ) { char * haystack = this->clone(); struct array * keys = new array(); int count = 0; char * tmp = haystack; char * token = strtok( haystack, needle ); int i = 0; while ( token ) { array_add( keys, token ); //printf("strtok: %s \n", token ); token = (char *) strtok( NULL, needle ); } return keys; } char * removeWhitespaceLeft() { char * s = this; while(isspace(*s)) s++; return s; } char * removeWhitespaceRight() { char * s = this; char* back = s + strlen(s); while( isspace( *--back ) ); *( back + 1 ) = '\0'; return s; } char * removeWhitespace( ) { return this->removeWhitespaceLeft()->removeWhitespaceRight(); } }