Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_Data_Fields.h

00001 /*
00002  * $Id: Fl_Data_Fields.h,v 1.18 2003/05/06 20:57:03 parshin Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Alexey Parshin
00016  * Email  : alexey@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
00019  *
00020  */
00021 
00022 #ifndef _FL_DATA_FIELDS_H_
00023 #define _FL_DATA_FIELDS_H_
00024 
00025 #include "Fl_Variant.h"
00026 #include "Fl_Ptr_List.h"
00027 #include "Fl_Flags.h"
00028 
00029 class Fl_Data_Fields;
00030 
00032 class FL_API Fl_Data_Field {
00033     friend class Fl_Data_Fields;
00034 public:
00035     Fl_Data_Field(const char *name);
00036 
00037     Fl_Variant value;
00038 
00049     int         width;
00050     int         precision;
00051     Fl_Flags    flags;
00052     bool        visible;
00053 
00054     const Fl_String &name() const                 { return m_name;           }
00055     Fl_Variant_Type type() const                  { return value.type();     }
00056 
00057     unsigned buffer_size() const                  { return value.size();     }
00058     unsigned data_size()   const                  { return m_dataSize;       }
00059     void data_size(unsigned sz)                   { m_dataSize = sz;         }
00060 
00061     bool is_null() const                          { return m_dataSize == 0;  }
00062 
00063     // convertors
00064     operator int () const                         { return as_int();         }
00065     operator double () const                      { return as_float();       }
00066     operator Fl_String () const                   { return as_string();      }
00067     operator Fl_Date_Time () const                { return as_datetime();    }
00068     operator const Fl_Image * () const            { return as_image();       }
00069 
00070     int as_int() const                                    { return value.as_int();   }
00071     double as_float() const                       { return value.as_float(); }
00072     Fl_String as_string() const; // converting to a string requires internal formatting..
00073     bool as_bool() const                                  { return value.as_bool();  }
00074     Fl_Date_Time as_date() const                      { return value.as_date();  }
00075     Fl_Date_Time as_datetime() const                  { return value.as_datetime(); }
00076     const Fl_Image *as_image() const                  { return value.as_image(); }
00077 
00078     // assignments
00079     Fl_Data_Field& operator = (int v)             { value = v; return *this; }
00080     Fl_Data_Field& operator = (double v)          { value = v; return *this; }
00081     Fl_Data_Field& operator = (Fl_String v)       { value = v; return *this; }
00082     Fl_Data_Field& operator = (Fl_Date_Time v)    { value = v; return *this; }
00083     Fl_Data_Field& operator = (const char *v)     { value = v; return *this; }
00084     Fl_Data_Field& operator = (const Fl_Image *v) { value = v; return *this; }
00085 
00086 protected:
00087     Fl_String  m_name;
00088     unsigned   m_dataSize;
00089 };
00090 
00092 class FL_API Fl_Data_Fields {
00093 public:
00094     Fl_Data_Fields() { m_userData = 0; }
00095     ~Fl_Data_Fields() { clear(); }
00096 
00097     void clear();
00098     unsigned count() const { return m_list.count(); }
00099     int  field_index(const char * fname) const;
00100 
00101     Fl_Data_Field& add(const char *fname);
00102     Fl_Data_Field& add(Fl_Data_Field *fld);
00103 
00104     const Fl_Data_Field& field(unsigned index) const;
00105     Fl_Data_Field&       field(unsigned index);
00106 
00107     const Fl_Data_Field& field(int index) const;
00108     Fl_Data_Field&       field(int index);
00109 
00110     const Fl_Data_Field& field(const char *fname) const;
00111     Fl_Data_Field&       field(const char *fname);
00112 
00113     Fl_Variant&       operator [] (int index);
00114     const Fl_Variant& operator [] (int index) const;
00115     Fl_Variant&       operator [] (const char *fname);
00116     const Fl_Variant& operator [] (const char *fname) const;
00117 
00118     void user_data(void *d) { m_userData = d; } 
00119     void *user_data() const { return m_userData; } 
00120 
00121 private:
00122     void             *m_userData;
00123     Fl_Ptr_List       m_list;
00124     static const Fl_Variant m_fieldNotFound;
00125 };
00126 
00127 #endif

Generated on Thu Jul 31 15:33:43 2003 for eFLTK by doxygen1.2.15