home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / Software / TemaCD / tcvpa / data1.cab / MyFileGroup / INCLUDE / FmtParse.hpp < prev    next >
C/C++ Source or Header  |  1999-06-03  |  2KB  |  74 lines

  1. #ifndef _INC_FMTPARSE_HPP
  2. #define _INC_FMTPARSE_HPP
  3.  
  4. // **********************************************************************
  5. struct TC_2xLong 
  6. {
  7. public:  unsigned long l1 ;
  8. public:  unsigned long l2 ;
  9.  
  10. }; // end of class TC_2xLong
  11.  
  12. // **********************************************************************
  13. typedef TC_TArrayCPP <TC_2xLong> TCArray2xLong;
  14.  
  15. // **********************************************************************
  16. struct TC_FmtToken 
  17. {
  18. public:  unsigned long mask ;
  19. public:  char t ;
  20. public:  char has_val ;
  21. public:  long min_val ;
  22. public:  long max_val ;
  23. public:  char ordered ;
  24.  
  25. }; // end of class TC_FmtToken
  26.  
  27. // **********************************************************************
  28. enum TCFmtTokTypes {
  29.  tok_Undef,
  30.  tok_Str,
  31.  tok_Num,
  32.  tok_Sym,
  33.  tok_End,
  34. };
  35. TC_COREEX_EXPORT void tcStrARepeat (TC_CString &s, char * val, int cnt)  ;
  36.  
  37. // **********************************************************************
  38. class TC_COREEX_EXPORT TC_CFmtParse 
  39. {
  40. private:  char * m_Fmt ;
  41. private:  TC_FmtToken * m_Tokens ;
  42. private:  TCArray2xLong m_Values ;
  43. private:  TCArrayLONG m_Order ;
  44. public:   TC_CFmtParse (char * fmt, TC_FmtToken * tokens)  ;
  45. private:  BOOL TokStrVal (TC_FmtToken * tok, char * &ptr)  ;
  46. private:  BOOL TokNumVal (TC_FmtToken * tok, char * &ptr)  ;
  47. private:  TC_FmtToken * GetToken (char t)  ;
  48. private:  unsigned long GetValue (long mask)  ;
  49. public:  void GetStrValue (long mask, TC_CString & s)  ;
  50. public:  long GetNumValue (long mask)  ;
  51. public:  int GetOrderedCnt () 
  52. {
  53. return m_Order.Count();
  54. } // end of func
  55. // **********************************************************************
  56.  
  57. public:  unsigned long GetOrderedMask (int idx) 
  58. {
  59. if(idx < 0 || idx > m_Order.Count())
  60.     return 0;
  61. return m_Order[idx];
  62. } // end of func
  63. // **********************************************************************
  64.  
  65. public:  void SetFmt (char * fmt)  ;
  66. public:  unsigned long Parse ()  ;
  67. public: static int NextToken (char *&ptr, TC_CString &dest, TCFmtTokTypes &tokType, char * syms=0)  ;
  68.  
  69. }; // end of class TC_CFmtParse
  70.  
  71. // **********************************************************************
  72.  
  73. #endif // _INC_FMTPARSE_HPP
  74.