Contents

11. Appendix A mychar.cpp

In the web-browser, save this file as 'Text' type.


//*****************************************************************
// Copyright policy is GNU/GPL but additional restriction is 
// that you include author's name and email on all copies
// Author : Al Dev Email: alavoor@yahoo.com
//*****************************************************************

// To prevent memory problems - a char class to manage character variables
// Always prefer to use  mychar or string class instead of char[] or char *

#ifdef DEBUG_MYCHAR

#include <stdlib.h>  // for putenv
#include "mychar.h"

/////////////////////////////////////////////////
// A example program to demo usage of mychar 
/////////////////////////////////////////////////

int main(int argc, char **argv)
{
        char p_name[1024];
        sprintf(p_name, "PROGRAM_NAME=%s", argv[0]);
        putenv(p_name);
        print_total_memsize(); // in the beginning
        mychar aa, bb;

        bb.str_cpy("  bbSTRing  ");

        // Testing the + operator
        aa + " rhs ";
        fprintf(stdout, "\n0) aa.val is :%sEOF\n", aa.val);

        // Testing the = operator
        aa = " lhs " ;
        fprintf(stdout, "0) aa.val is :%sEOF\n", aa.val);

        // Testing the + operator
        //" lhs " + aa;
        //fprintf(stdout, "0) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa.to_upper();
        fprintf(stdout, "1) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa.to_lower();
        fprintf(stdout, "2) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa.ltrim();
        fprintf(stdout, "3) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa.rtrim();
        fprintf(stdout, "4) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa.trim();
        fprintf(stdout, "5) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = aa + " testing newlines \n\n\n\n";
        aa.chop();
        fprintf(stdout, "5-1) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = aa + " rhs ";
        fprintf(stdout, "6) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa;
        fprintf(stdout, "7) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 ";
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(bb.val);
        aa = " lhs " + aa + " rhs " + " 9989 " + " 33 " + aa + bb;
        fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(" AA value ");
        aa = bb + "alkja " + " 99djd " ;
        fprintf(stdout, "9) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(" AA value ");
        aa = (mychar) "alkja " + " 99djd " ;
        fprintf(stdout, "10) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(" AA value ");
        aa += (mychar) " al dev test kkk... " + " al2 slkj" + " al3333 ";
        fprintf(stdout, "11) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(" AA value ");
        aa = aa + " add aa " + aa + aa + aa + " 1111 " + " 2222 " + aa + aa + aa + " 3333 ";
        fprintf(stdout, "12) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy("12345678");
        aa.reverse();
        fprintf(stdout, "13) aa.val is :%sEOF\n", aa.val);

        aa.str_cpy(" AA value ");
        aa = aa + " add aa " + aa + 1111 +" "+ 2222 + " " + 3.344 + aa;
        fprintf(stdout, "14) aa.val is :%sEOF\n", aa.val);

        // Test equal to operators
        aa.str_cpy(" AA value ");
        mychar cc(" AA value ");
        if (aa == cc)
                fprintf(stdout, "\naa=%s and cc=%s are equal!!\n", aa.val, cc.val);
        else
                fprintf(stdout, "\naa=%s and cc=%s are NOT equal!!\n", aa.val, cc.val);
        cc = "CC";
        if (aa == cc)
                fprintf(stdout, "\naa=%s and cc=%s are equal!!\n", aa.val, cc.val);
        else
                fprintf(stdout, "\naa=%s and cc=%s are NOT equal!!\n", aa.val, cc.val);
        if (aa == " AA value ")
                fprintf(stdout, "\naa=%s and string are equal!!\n", aa.val);
        else
                fprintf(stdout, "\naa=%s and string are NOT equal!!\n", aa.val);
        if (aa == " AA valuexxx ")
                fprintf(stdout, "\naa=%s and string are equal!!\n", aa.val);
        else
                fprintf(stdout, "\naa=%s and string are NOT equal!!\n", aa.val);

        // You can use aa.val like a 'char *' variable in programs !!
        fprintf(stdout, "\n ");
        for (unsigned long tmpii = 0; tmpii < aa.length(); tmpii++)
        {
                fprintf(stdout, "aa.val[%ld]=%c ", tmpii, aa.val[tmpii]);
        }
        fprintf(stdout, "\n");

        // Using pointers on 'char *' val ...
        fprintf(stdout, "\n ");
        for (; *aa.val != 0; aa.val++)
        {
                fprintf(stdout, "aa.val=%c ", *aa.val);
        }
        fprintf(stdout, "\n");

        print_total_memsize(); // in the end
        exit(0);
}
#endif // DEBUG_MYCHAR


Contents