home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ool_main.zip / ool / include / xdbasefi.H < prev    next >
C/C++ Source or Header  |  1997-08-12  |  2KB  |  63 lines

  1. #ifndef __XDBASEFILE_H__
  2. #define __XDBASEFILE_H__
  3.  
  4. /*===========================================================================*/
  5. /* OOL ------------------- the Open Object Library ------------------- r 1.0 */
  6. /*===========================================================================*/
  7. /*                              class: XDBaseFile                            */
  8. /*                       derived from: XObject                               */
  9. /*                        last update: 5/97                                  */
  10. /*                      programmed by: Stefan von Brauk (sbrauk@gwdg.de)     */
  11. /*===========================================================================*/
  12.  
  13.  
  14. #include "xfile.h"
  15. #include "xdbasefl.h"
  16.  
  17. #pragma pack(1)
  18.  
  19. typedef struct 
  20. {
  21.    char version; 
  22.    char date[3];
  23.    ULONG records;
  24.    USHORT headerSize;
  25.    USHORT recordSize;
  26. } dbHeader;
  27.  
  28. #pragma pack()
  29.  
  30. class _export_ XDBaseFile: public XObject
  31. {
  32.    friend class XDBaseRecord;
  33.    private:
  34.       XFile file;
  35.       dbHeader head;
  36.       XDBaseField ** fields;
  37.       USHORT fieldCount;
  38.       BOOL changed;
  39.       BOOL LoadSet( XDBaseRecord *);
  40.       BOOL RemoveSet( XDBaseRecord* );
  41.       BOOL SaveSet( XDBaseRecord *);
  42.       void AddField(char * name, UCHAR type, UCHAR length, UCHAR decPointer = 0);
  43.    public:
  44.       XDBaseFile( char * file, BOOL writeAccess = TRUE, BOOL createNew = FALSE);
  45.       ~XDBaseFile();
  46.       void AddCharacterField( char* name, UCHAR length);
  47.       void AddDateField( char * name);
  48.       void AddLogicField( char * name);
  49.       void AddNumericField( char* name, UCHAR length, UCHAR decimal = 0);
  50.       ULONG GetRecordCount() {return head.records;}
  51.       USHORT GetFieldCount() {return fieldCount;}
  52.       BOOL GetFieldName(USHORT index, XString *);
  53.       char GetFieldType(USHORT index) 
  54.                            { if(index >= fieldCount) return -1; return fields[index]->field.type; }
  55.       unsigned char GetFieldLength(USHORT index)
  56.                            { if(index >= fieldCount) return -1; return fields[index]->field.length; }
  57.       unsigned char GetFieldDecimalPoint(USHORT index)
  58.                            { if(index >= fieldCount) return -1; return fields[index]->field.dec_point; }
  59.       void SaveHeader(char * fileName);
  60. };
  61.  
  62. #endif
  63.