home *** CD-ROM | disk | FTP | other *** search
/ C/C++ User's Journal & Wi…eveloper's Journal Tools / C-C__Users_Journal_and_Windows_Developers_Journal_Tools_1997.iso / windbase / windbase.exe / MEMSLC.3 / BAG.C < prev    next >
C/C++ Source or Header  |  1996-07-30  |  6KB  |  165 lines

  1. /*****************************************************************************\
  2. **                                                                           **
  3. **  WW     WW IIIIIIII NNN   NN DDDDDDD  BBBBBBB     AA     SSSSSS EEEEEEEE  **
  4. **  WW  W  WW    II    NNNN  NN DD    DD BB    BB  AA  AA  SS      EE        **
  5. **  WW  W  WW    II    NN NN NN DD    DD BBBBBBB  AAAAAAAA  SSSSSS EEEEEE    **
  6. **   WW W WW     II    NN  NNNN DD    DD BB    BB AA    AA      SS EE        **
  7. **    WWWWW   IIIIIIII NN   NNN DDDDDDD  BBBBBBB  AA    AA SSSSSS  EEEEEEEE  **
  8. **                                                                           **
  9. **   SSSSSS  OOOOOO  FFFFFFFF TTTTTTTT WW     WW    AA    RRRRRRR  EEEEEEEE  **
  10. **  SS      OO    OO FF          TT    WW  W  WW  AA  AA  RR    RR EE        **
  11. **   SSSSS  OO    OO FFFFF       TT    WW  W  WW AAAAAAAA RRRRRRR  EEEEEE    **
  12. **       SS OO    OO FF          TT     WW W WW  AA    AA RR   RR  EE        **
  13. **  SSSSSS   OOOOOO  FF          TT      WWWWW   AA    AA RR    RR EEEEEEEE  **
  14. **                                                                           **
  15. *********** NOTICE ************************************************************
  16. **        This file contains valuable trade secrets and proprietary          **
  17. **        assets of Windbase Software Inc.  Embodying substantial            **
  18. **        creative efforts and confidential information.  Unauthorized       **
  19. **        use, copying, decompiling, translating, disclosure or              **
  20. **        transfer, of any kind, is strictly prohibited.                     **
  21. **                                                                           **
  22. **        COPYRIGHT (C) 1992, 1993, 1994.  Windbase Software Inc.            **
  23. **        ALL RIGHTS RESERVED.                                               **
  24. \*****************************************************************************/
  25.  
  26. #include <stdio.h>
  27. #include <string.h>
  28. #include <malloc.h>
  29.  
  30. #include "../memsl.h"
  31.  
  32. #ifdef WBSTDC
  33.   int Compare(void *nullitem, char *item1, char *item2)
  34. #else
  35.   int Compare(nullitem, item1, item2)
  36.     void *nullitem;
  37.     char *item1,
  38.          *item2;
  39. #endif
  40.   {
  41.     WBTrcEntry(0,"Compare",("%p, %s, %s",nullitem,item1?item1:"NULL",item2?item2:"NULL"));
  42.  
  43.     nullitem = nullitem;
  44.  
  45.     WBTrcReturn(0,strcmp(item1,item2),("%d",strcmp(item1,item2)));
  46.   }
  47.  
  48. #ifdef WBSTDC
  49.   void Print(void *nullitem, char *item)
  50. #else
  51.   void Print(nullitem, item)
  52.     void *nullitem;
  53.     char *item;
  54. #endif
  55.   {
  56.     WBTrcEntry(0,"Print",("%p, %s",nullitem,item?item:"NULL"));
  57.  
  58.     nullitem = nullitem;
  59.  
  60.     printf("%s\n",item);
  61.  
  62.     WBTrcVReturn(0,(""));
  63.   }
  64.  
  65. #ifdef WBSTDC
  66.   void Delete(void *nullitem, char *item)
  67. #else
  68.   void Delete(nullitem, item)
  69.     void *nullitem;
  70.     char *item;
  71. #endif
  72.   {
  73.     WBTrcEntry(0,"Delete",("%p, %s",nullitem,item?item:"NULL"));
  74.  
  75.     nullitem = nullitem;
  76.  
  77.     free(item);
  78.  
  79.     WBTrcVReturn(0,(""));
  80.   }
  81.  
  82. #if defined(WBTRC_LEVEL1) || defined(WBTRC_LEVEL2)
  83.   #ifdef WBSTDC
  84.     int main(int argc, char **argv, char **envp)
  85.   #else
  86.     int main(argc, argv, envp)
  87.       int argc;
  88.       char **argv,
  89.            **envp;
  90.   #endif
  91. #else
  92.   #ifdef WBSTDC
  93.     int main(void)
  94.   #else
  95.     int main()
  96.   #endif
  97. #endif
  98.   {
  99.     FILE *file;
  100.     WBBAG *bag1, *bag2;
  101.     char str[41], *strptr;
  102.  
  103.     WBTrcMainEntry();
  104.  
  105.     if ((bag1 = WBBagOpen(NULL)) != NULL)
  106.       if ((bag2 = WBBagOpen(NULL)) != NULL)
  107.         {
  108. #ifdef FUNCTCAST
  109.           WBBagCompareF(bag1,NULL,(int (*)(void *, void *, void *))Compare);
  110.           WBBagExecuteF(bag1,NULL,(void (*)(void *, void *))Print);
  111.       WBBagDeleteF(bag1,NULL,(void (*)(void *, void *))Delete);
  112.       WBBagCompareF(bag2,NULL,(int (*)(void *, void *, void *))Compare);
  113.       WBBagExecuteF(bag2,NULL,(void (*)(void *, void *))Print);
  114.       WBBagDeleteF(bag2,NULL,(void (*)(void *, void *))Delete);
  115. #else
  116.           WBBagCompareF(bag1,NULL,(int (*)())Compare);
  117.           WBBagExecuteF(bag1,NULL,(void (*)())Print);
  118.       WBBagDeleteF(bag1,NULL,(void (*)())Delete);
  119.       WBBagCompareF(bag2,NULL,(int (*)())Compare);
  120.       WBBagExecuteF(bag2,NULL,(void (*)())Print);
  121.       WBBagDeleteF(bag2,NULL,(void (*)())Delete);
  122. #endif
  123.  
  124.           if ((file = fopen("data.dat","rt")) != NULL)
  125.             {
  126.               while (fgets(str,40,file))
  127.                 {
  128.                   if (*str && *(str+strlen(str)-1) == '\n')
  129.                     *(str+strlen(str)-1) = '\0';
  130.                   if ((strptr = malloc(strlen(str)+1)) != NULL)
  131.                     {
  132.                       strcpy(strptr,str);
  133.               if (WBBagAdd(bag1,strptr) == -1)
  134.                         free(strptr);
  135.                     }
  136.                 }
  137.               fclose(file);
  138.             }
  139.           if ((file = fopen("data2.dat","rt")) != NULL)
  140.             {
  141.               while (fgets(str,40,file))
  142.                 {
  143.                   if (*str && *(str+strlen(str)-1) == '\n')
  144.                     *(str+strlen(str)-1) = '\0';
  145.                   if ((strptr = malloc(strlen(str)+1)) != NULL)
  146.                     {
  147.                       strcpy(strptr,str);
  148.                       if (WBBagAdd(bag2,strptr) == -1)
  149.                         free(strptr);
  150.                     }
  151.                 }
  152.               fclose(file);
  153.         }
  154.           printf("Executing bag1\n");
  155.           WBBagExecute(bag1);
  156.           printf("Executing bag2\n");
  157.           WBBagExecute(bag2);
  158.           WBBagClose(bag1);
  159.           WBBagClose(bag2);
  160.         }
  161.     WBTrcReturn(0,0,("0"));
  162.   }
  163.  
  164.  
  165.