home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbdatabs / cdate.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-14  |  5.0 KB  |  206 lines

  1. // ------------------------------- //
  2. // -------- Start of File -------- //
  3. // ------------------------------- //
  4. // ----------------------------------------------------------- // 
  5. // C++ Source Code File Name: cdate.cpp 
  6. // C++ Compiler Used: Microsoft visual C/C++ version 4.0 
  7. // Produced By: Doug Gaer   
  8. // File Creation Date: 09/21/1997 
  9. // Date Last Modified: 03/15/1999
  10. // ----------------------------------------------------------- // 
  11. // ------------- Program Description and Details ------------- // 
  12. // ----------------------------------------------------------- // 
  13. /*
  14. The CDate class is used turn a date string into into concrete
  15. data type.
  16. */
  17. // ----------------------------------------------------------- // 
  18. #include "string.h"
  19. #include "stdio.h"
  20. #include "cdate.h"
  21.  
  22. // String lenght for date strings
  23. const int MaxStrLen = 25;
  24.  
  25. CDate::CDate(const CDate& ob)
  26. {
  27.   Month = ob.Month;
  28.   Day = ob.Day;
  29.   Year = ob.Year;
  30. }
  31.  
  32. CDate& CDate::operator=(const CDate& ob)
  33. {
  34.   Month = ob.Month;
  35.   Day = ob.Day;
  36.   Year = ob.Year;
  37.   return *this;
  38. }
  39.  
  40. char *CDate::c_str()
  41. // Returns null terminated date string
  42. {
  43.   const int MaxStrLen = 25;
  44.   char date_str[MaxStrLen];
  45.   sprintf(date_str, "%u/%u/%u", (unsigned)Month,(unsigned)Day,(unsigned)Year);
  46.   int len = strlen(date_str);
  47.   char *buf = new char[len];
  48.   buf[len] = '\0';
  49.   memmove(buf, date_str, len);
  50.   return buf;
  51. }
  52.  
  53. const char *CDate::c_str() const
  54. // Returns null terminated date string
  55. {
  56.   const int MaxStrLen = 25;
  57.   char date_str[MaxStrLen];
  58.   sprintf(date_str, "%u/%u/%u", (unsigned)Month,(unsigned)Day,(unsigned)Year);
  59.   int len = strlen(date_str);
  60.   char *buf = new char[len];
  61.   buf[len] = '\0';
  62.   memmove(buf, date_str, len);
  63.   return buf;
  64. }
  65.  
  66. char *CDate::month_c_str()
  67. // Returns null terminated date string
  68. {
  69.   char date_str[MaxStrLen];
  70.   sprintf(date_str, "%u", (unsigned)Month);
  71.   int len = strlen(date_str);
  72.   char *buf = new char[len];
  73.   buf[len] = '\0';
  74.   memmove(buf, date_str, len);
  75.   return buf;
  76. }
  77.  
  78. const char *CDate::month_c_str() const
  79. // Returns null terminated date string
  80. {
  81.   char date_str[MaxStrLen];
  82.   sprintf(date_str, "%u", (unsigned)Month);
  83.   int len = strlen(date_str);
  84.   char *buf = new char[len];
  85.   buf[len] = '\0';
  86.   memmove(buf, date_str, len);
  87.   return buf;
  88. }
  89.  
  90. char *CDate::day_c_str()
  91. // Returns null terminated date string
  92. {
  93.   char date_str[MaxStrLen];
  94.   sprintf(date_str, "%u", (unsigned)Day);
  95.   int len = strlen(date_str);
  96.   char *buf = new char[len];
  97.   buf[len] = '\0';
  98.   memmove(buf, date_str, len);
  99.   return buf;
  100. }
  101.  
  102. const char *CDate::day_c_str() const
  103. // Returns null terminated date string
  104. {
  105.   char date_str[MaxStrLen];
  106.   sprintf(date_str, "%u", (unsigned)Day);
  107.   int len = strlen(date_str);
  108.   char *buf = new char[len];
  109.   buf[len] = '\0';
  110.   memmove(buf, date_str, len);
  111.   return buf;
  112. }
  113.  
  114. char *CDate::year_c_str()
  115. // Returns null terminated date string
  116. {
  117.   char date_str[MaxStrLen];
  118.   sprintf(date_str, "%u", (unsigned)Year);
  119.   int len = strlen(date_str);
  120.   char *buf = new char[len];
  121.   buf[len] = '\0';
  122.   memmove(buf, date_str, len);
  123.   return buf;
  124. }
  125.  
  126. const char *CDate::year_c_str() const
  127. // Returns null terminated date string
  128. {
  129.   char date_str[MaxStrLen];
  130.   sprintf(date_str, "%u", (unsigned)Year);
  131.   int len = strlen(date_str);
  132.   char *buf = new char[len];
  133.   buf[len] = '\0';
  134.   memmove(buf, date_str, len);
  135.   return buf;
  136. }
  137.  
  138. #ifdef __USE_CPP_IOSTREAM__
  139. ostream &operator<<(ostream &os, const CDate &ob)
  140. {
  141.   os << (unsigned)ob.Month << "/"
  142.      << (unsigned)ob.Day << "/"
  143.      << ob.Year;
  144.   return os;
  145. }
  146.  
  147. void operator>>(istream &is, CDate &ob)
  148. {
  149.   unsigned  buf;
  150.  
  151.   cout << "Month (XX):  ";
  152.   is >> buf;
  153.   ob.SetMonth((__UBYTE__)buf);
  154.  
  155.   cout << "Day (XX):    ";
  156.   is >> buf;
  157.   ob.SetDay((__UBYTE__)buf);
  158.  
  159.   cout << "Year (XXXX): ";
  160.   is >> buf;
  161.   ob.SetYear(buf);
  162. }
  163. #endif // __USE_CPP_IOSTREAM__
  164.  
  165. int operator==(const CDate &a, const CDate &b)
  166. {
  167.   if(a.Year == b.Year) return 1;
  168.   if(a.Year == b.Year && a.Month == b.Month) return 1;
  169.   if(a.Year == b.Year && a.Month == b.Month && a.Day == b.Day) return 1;
  170.   if(a.Month == b.Month) return 1;
  171.   if(a.Month == b.Month && a.Day == b.Day) return 1;
  172.   if(a.Day == b.Day) return 1;
  173.   return 0;
  174. }
  175.  
  176. int operator!=(const CDate &a, const CDate &b)
  177. {
  178.   if(a.Year != b.Year) return 1;
  179.   if(a.Year != b.Year && a.Month != b.Month) return 1;
  180.   if(a.Year != b.Year && a.Month != b.Month && a.Day != b.Day) return 1;
  181.   if(a.Month != b.Month) return 1;
  182.   if(a.Month != b.Month && a.Day != b.Day) return 1;
  183.   if(a.Day != b.Day) return 1;
  184.   return 0;
  185. }
  186.  
  187. int operator<(const CDate &a, const CDate &b)
  188. {
  189.   if(a.Year < b.Year) return 1;
  190.   if(a.Year == b.Year) {
  191.     if(a.Month < b.Month) {
  192.       return 1;
  193.     }
  194.     if(a.Month == b.Month) {
  195.       if(a.Day < b.Day) return 1;
  196.     }
  197.   }
  198.   
  199.   return 0;
  200. }
  201. // ----------------------------------------------------------- //
  202. // ------------------------------- //
  203. // --------- End of File --------- //
  204. // ------------------------------- //
  205.  
  206.