00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _FL_DATA_SOURCE_H_
00023 #define _FL_DATA_SOURCE_H_
00024
00025 #include "Fl_Variant.h"
00026 #include "Fl_Data_Fields.h"
00027
00028 class Fl_Group;
00029
00031 class FL_API Fl_Data_Source {
00032 friend class Fl_Group;
00033 public:
00034
00035 Fl_Data_Source(Fl_Group *group) { m_parent = group; }
00036 virtual ~Fl_Data_Source() {}
00037
00038 void parent(Fl_Group *p) { m_parent = p; }
00039 Fl_Group *parent() { return m_parent; }
00040
00041
00042 virtual const Fl_Variant& operator [] (const char *field_name) const = 0;
00043 virtual Fl_Variant& operator [] (const char *field_name) = 0;
00044
00045
00046 virtual unsigned record_count() const = 0;
00047
00048
00049 virtual unsigned field_count() const = 0;
00050 virtual int field_index(const char *) const { return -1; }
00051
00052
00053 virtual const Fl_Variant& operator [] (int) const = 0;
00054 virtual Fl_Variant& operator [] (int) = 0;
00055
00056 virtual const Fl_Data_Field& field (int field_index) const = 0;
00057 virtual Fl_Data_Field& field (int field_index) = 0;
00058 virtual void *user_data() const { return 0L; }
00059
00060 virtual bool read_field(const char *fname,Fl_Variant& value) = 0;
00061 virtual bool write_field(const char *fname,const Fl_Variant& fvalue) = 0;
00062
00063
00064 virtual bool open() { return false; }
00065 virtual bool close() { return false; }
00066 virtual bool first() { return false; }
00067 virtual bool next() { return false; }
00068 virtual bool prior() { return false; }
00069 virtual bool last() { return false; }
00070 virtual bool find(Fl_Variant position) { return false; }
00071 virtual bool eof() const { return false; }
00072
00073
00074 bool load();
00075
00076 bool save();
00077
00078 protected:
00079
00080 virtual bool load_data() = 0;
00081 virtual bool save_data() = 0;
00082 Fl_Group* m_parent;
00083 };
00084
00085 #endif