00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _FL_MEMORY_DS_H_
00022 #define _FL_MEMORY_DS_H_
00023
00024 #include <efltk/Fl_Data_Fields.h>
00025 #include <efltk/Fl_Data_Source.h>
00026 #include <efltk/Fl_Exception.h>
00027
00029 class FL_API Fl_Memory_DS : public Fl_Data_Source {
00030 protected:
00031
00032 Fl_Memory_DS() : Fl_Data_Source(0L), m_current(0L), m_currentIndex(-1) { }
00033 public:
00034
00035 virtual ~Fl_Memory_DS() { close(); }
00036 virtual void clear();
00037
00038
00039 virtual const Fl_Variant& operator [] (const char *field_name) const;
00040 virtual Fl_Variant& operator [] (const char *field_name);
00041
00042 virtual const Fl_Data_Field& field (int field_index) const;
00043 virtual Fl_Data_Field& field (int field_index);
00044 virtual void *user_data() const { return m_current->user_data(); }
00045
00046
00047 virtual unsigned field_count() const;
00048 virtual int field_index(const char *field_name) const;
00049
00050
00051 virtual unsigned record_count() const;
00052
00053
00054 virtual const Fl_Variant& operator [] (int) const;
00055 virtual Fl_Variant& operator [] (int);
00056
00057 virtual bool read_field(const char *fname,Fl_Variant& fvalue);
00058 virtual bool write_field(const char *fname,const Fl_Variant& fvalue);
00059
00060
00061 virtual bool open() { fl_throw("Not implemented yet"); }
00062 virtual bool close();
00063 virtual bool first();
00064 virtual bool next();
00065 virtual bool prior();
00066 virtual bool last();
00067 virtual bool find(Fl_Variant position);
00068 virtual bool eof() const { return m_eof; }
00069
00070 protected:
00071
00072 virtual bool load_data() { return true; }
00073 virtual bool save_data() { return true; }
00074
00075 Fl_Ptr_List m_list;
00076 Fl_Data_Fields *m_current;
00077 int m_currentIndex;
00078 bool m_eof;
00079 };
00080
00081 #endif