Rev 48160 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/* Prevent multiple inclusions. */#ifndef _STRING_CLASS_#define _STRING_CLASS_/* Eliminate any prior defintion of string. */#ifdef string#undef string#endif/* Define the new string type. */#define string strclass/* Include a few standard header files. */#include <stdio.h>#include <stdlib.h>#include <string.h>/** I/O functions.*/#define print(s) printf("%s",(char*)((string)s))/** C function defintions.*/#ifdef __cplusplusextern "C" {#endif/** Safe string utility functions.*/char *new_string(char *src);void del_string(char *str);long string_length(char *s);void copy_string(char *dest, char *src);int compare_strings(char *s1, char *s2);char *add_strings(char *s1, char *s2);char *char_to_string(char ch);char *int_to_string(long i);char *float_to_string(float f);#ifdef __cplusplus}#endif/** C defintions.*/#ifndef __cplusplustypedef char *string;/** C++ defintions.*/#else/** String class.*/class string{protected:char *str; /* the string itself */public:string(void) {str=new_string(NULL);}string(char *s) {str=new_string(s);}string(string& s) {str=new_string(s.str);}string(char ch) {str=new_string(char_to_string(ch));}string(int i) {str=new_string(int_to_string(i));}string(long i) {str=new_string(int_to_string(i));}string(float f) {str=new_string(float_to_string(f));}~string(void) {del_string(str);}char& operator [] (unsigned i) {return str[i];}operator char* (void) {return str;}string& operator = (string s2){if (str != s2.str) {del_string(str); str=new_string(s2.str);} return *this;}};inline string operator + (string s1, string s2){return add_strings(s1,s2);}inline string operator + (string s1, char *s2){return add_strings(s1,s2);}inline string operator + (char *s1, string s2){return add_strings(s1,s2);}inline string operator + (string s1, char ch){return add_strings(s1,char_to_string(ch));}inline string operator + (char ch, string s2){return add_strings(char_to_string(ch),s2);}inline string operator + (string s1, int i){return add_strings(s1,int_to_string(i));}inline string operator + (int i, string s2){return add_strings(int_to_string(i),s2);}inline string operator + (string s1, long i){return add_strings(s1,int_to_string(i));}inline string operator + (long i, string s2){return add_strings(int_to_string(i),s2);}inline string operator + (string s1, float f){return add_strings(s1,float_to_string(f));}inline string operator + (float f, string s2){return add_strings(float_to_string(f),s2);}inline int operator == (string s1, string s2){return (compare_strings(s1,s2) == 0);}inline int operator == (string s1, char *s2){return (compare_strings(s1,s2) == 0);}inline int operator == (char *s1, string s2){return (compare_strings(s1,s2) == 0);}inline int operator == (string s1, char ch){return (compare_strings(s1,char_to_string(ch)) == 0);}inline int operator == (char ch, string s2){return (compare_strings(char_to_string(ch),s2) == 0);}inline int operator == (string s1, int ch){return (compare_strings(s1,char_to_string(ch)) == 0);}inline int operator == (int ch, string s2){return (compare_strings(char_to_string(ch),s2) == 0);}inline int operator != (string s1, string s2){return compare_strings(s1,s2);}inline int operator != (string s1, char *s2){return compare_strings(s1,s2);}inline int operator != (char *s1, string s2){return compare_strings(s1,s2);}inline int operator != (string s1, char ch){return compare_strings(s1,char_to_string(ch));}inline int operator != (char ch, string s2){return compare_strings(char_to_string(ch),s2);}inline int operator != (string s1, int ch){return compare_strings(s1,char_to_string(ch));}inline int operator != (int ch, string s2){return compare_strings(char_to_string(ch),s2);}/** End of C++ defintions.*/#endif/** End of string class definition.*/#endif