]> git.saurik.com Git - wxWidgets.git/commitdiff
Added variant.h/cpp; changed variable names in object.h; added some functions
authorJulian Smart <julian@anthemion.co.uk>
Sat, 12 Sep 1998 17:31:48 +0000 (17:31 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sat, 12 Sep 1998 17:31:48 +0000 (17:31 +0000)
to wxStringList; added wxTrue and wxFalse to supress some warnings; some bugs fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

13 files changed:
include/wx/confbase.h
include/wx/debug.h
include/wx/defs.h
include/wx/fontdlg.h
include/wx/gdicmn.h
include/wx/generic/laywin.h
include/wx/help.h
include/wx/list.h
include/wx/msw/gauge.h
include/wx/msw/slider.h
include/wx/object.h
include/wx/toolbar.h
include/wx/variant.h [new file with mode: 0644]

index 961d4c3ff8adfd00b78aaf85d8e2bd7f1e6f8c7a..7cc1d07729542f3d86f91083328b8a2f2eaf73e1 100644 (file)
@@ -276,14 +276,14 @@ private:
 #if defined(__WXMSW__) && wxCONFIG_WIN32_NATIVE
   #ifdef __WIN32__
     #define wxConfig  wxRegConfig
-    #define classwxConfig classwxRegConfig
+    #define sm_classwxConfig sm_classwxRegConfig
   #else  //WIN16
     #define wxConfig  wxIniConfig
-    #define classwxConfig classwxIniConfig
+    #define sm_classwxConfig sm_classwxIniConfig
   #endif
 #else // either we're under Unix or wish to use files even under Windows
   #define wxConfig  wxFileConfig
-  #define classwxConfig classwxFileConfig
+  #define sm_classwxConfig sm_classwxFileConfig
 #endif
 
 
index 816caa0324f31c8335aef14c2fccf02072a7d57e..99758d1f7a444a2c96d6b57fa6bc09f33844c9f6 100644 (file)
@@ -65,9 +65,9 @@
 #endif  //WXDEBUG
 
   /// special form of assert: always triggers it (in debug mode)
-#define   wxFAIL                 wxASSERT(0)
+#define   wxFAIL                 wxASSERT(wxFalse)
   /// FAIL with some message
-#define   wxFAIL_MSG(msg)        wxASSERT_MSG(0, msg)
+#define   wxFAIL_MSG(msg)        wxASSERT_MSG(wxFalse, msg)
 //@}
 
 // NB: these macros work also in release mode!
index 843ea408c80c7b602e12080233f4978920c9dbf6..c4ff0facb3a9d8561fa15f6adbc4b96ff4d3070b 100644 (file)
@@ -230,6 +230,10 @@ enum  ErrCode
 /// size of statically declared array
 #define WXSIZEOF(array)   (sizeof(array)/sizeof(array[0]))
 
+// Use of these suppresses some compiler warnings
+WXDLLEXPORT_DATA(extern const bool) wxTrue;
+WXDLLEXPORT_DATA(extern const bool) wxFalse;
+
 // ----------------------------------------------------------------------------
 // compiler and OS identification
 // ----------------------------------------------------------------------------
index 20445e884257d56314e21b1bea3c1caa04002f84..f851cd8ee96f5de7314439724d23b5033b35ed6d 100644 (file)
@@ -6,23 +6,23 @@
 #elif defined(__WXMOTIF__)
 #include "wx/generic/fontdlgg.h"
 #   define wxFontDialog wxGenericFontDialog
-#   define classwxFontDialog classwxGenericFontDialog
+#   define sm_classwxFontDialog sm_classwxGenericFontDialog
 #elif defined(__WXGTK__)
 #include "wx/generic/fontdlgg.h"
 #   define wxFontDialog wxGenericFontDialog
-#   define classwxFontDialog classwxGenericFontDialog
+#   define sm_classwxFontDialog sm_classwxGenericFontDialog
 #elif defined(__WXQT__)
 #include "wx/generic/fontdlgg.h"
 #   define wxFontDialog wxGenericFontDialog
-#   define classwxFontDialog classwxGenericFontDialog
+#   define sm_classwxFontDialog sm_classwxGenericFontDialog
 #elif defined(__WXMAC__)
 #include "wx/generic/fontdlgg.h"
 #   define wxFontDialog wxGenericFontDialog
-#   define classwxFontDialog classwxGenericFontDialog
+#   define sm_classwxFontDialog sm_classwxGenericFontDialog
 #elif defined(__WXSTUBS__)
 #include "wx/generic/fontdlgg.h"
 #   define wxFontDialog wxGenericFontDialog
-#   define classwxFontDialog classwxGenericFontDialog
+#   define sm_classwxFontDialog sm_classwxGenericFontDialog
 #endif
 
 #endif
index 17517cce8a39808b1ddc31358019d0af002b453a..d726d44c1eb22ecefeb824272394cd4e1fe4791e 100644 (file)
@@ -326,21 +326,27 @@ extern wxSize WXDLLEXPORT wxGetDisplaySize();
 
 extern void WXDLLEXPORT wxSetCursor(const wxCursor& cursor);
 
-// Useful macro for create icons portably
+// Useful macro for creating icons portably
 
 #ifdef __WXMSW__
-# define wxICON(X) wxIcon(X##_icon);
-#elif defined(__X__)
-# define wxICON(X) wxIcon(X##_bits, X##_width, X##_height);
+// Load from a resource
+# define wxICON(X) wxIcon("" #X "")
+
+#elif defined(__WXGTK__)
+// Initialize from an included XPM
+# define wxICON(X) wxIcon(X##_xpm)
 #else
-# define wxICON    wxIcon
+
+// This will usually mean something on any platform
+# define wxICON(X) wxIcon("" #X "")
 #endif
 
 /*
   Example:
-  #define wxbuild_icon "wxbuild"
-  wxIcon *icon = new wxICON(wxbuild);
+    wxIcon *icon = new wxICON(mondrian);
+  expands into:
+    wxIcon *icon = new wxIcon("mondrian"); // On wxMSW
+    wxIcon *icon = new wxIcon(mondrian_xpm);   // On wxGTK
  */
 
 class WXDLLEXPORT wxResourceCache: public wxList
index fcfc87a53dcd5ce32033a22703d54d0858eb31e2..cc2f79ce8bded4650b355fd390e8ae3f1a91d0f9 100644 (file)
@@ -63,6 +63,7 @@ public:
         SetEventType(wxEVT_QUERY_LAYOUT_INFO);
         m_requestedLength = 0;
         m_flags = 0;
+        m_id = id;
         m_alignment = wxLAYOUT_TOP;
         m_orientation = wxLAYOUT_HORIZONTAL;
     }
@@ -107,6 +108,7 @@ public:
     {
         SetEventType(wxEVT_CALCULATE_LAYOUT);
         m_flags = 0;
+       m_id = id;
     }
 // Read by the app
     inline void SetFlags(int flags) { m_flags = flags; }
index 71bff121f68ac8e829fbd77f5238ef8bdfb1ae93..36c6b04e41f50aa29d3d994c0083fe130da10bf3 100644 (file)
 
 #ifdef __WXMSW__
 #define wxHelpController wxWinHelpController
-#define classwxHelpController classwxWinHelpController
+#define sm_classwxHelpController sm_classwxWinHelpController
 #elif defined(__WXGTK__)
 #define wxHelpController wxHTMLHelpController
-#define classwxHelpController classwxHTMLHelpController
+#define sm_classwxHelpController sm_classwxHTMLHelpController
 #else
 #define wxHelpController wxXLPHelpController
-#define classwxHelpController classwxXLPHelpController
+#define sm_classwxHelpController sm_classwxXLPHelpController
 #endif
 
 #endif
index 9f3753d37caea358330a8ca73307e2aff66902b4..1a04556ba98c3b31b07c2fe2d72e9a622772f911 100644 (file)
@@ -97,17 +97,17 @@ class WXDLLEXPORT wxList: public wxObject
   bool DeleteObject(wxObject *object);  // Finds object pointer and
                                         // deletes node (and object if
                                         // DeleteContents is on)
-  void Clear(void);                     // Delete all nodes
+  virtual void Clear(void);             // Delete all nodes
 
   inline wxNode *First(void) const { return first_node; }
   inline wxNode *Last(void) const { return last_node; }
   wxNode *Nth(int i) const;                  // nth node counting from 0
 
   // Keyed search
-  wxNode *Find(long key) const;
-  wxNode *Find(const char *key) const;
+  virtual wxNode *Find(long key) const;
+  virtual wxNode *Find(const char *key) const;
 
-  wxNode *Member(wxObject *object) const;
+  virtual wxNode *Member(wxObject *object) const;
 
   inline void DeleteContents(int destroy) { destroy_data = destroy; }
                                              // Instruct it to destroy user data
@@ -129,6 +129,7 @@ class WXDLLEXPORT wxStringList: public wxList
 
  public:
   wxStringList(void);
+  wxStringList(const wxStringList& list);
   wxStringList(const char *first ...);
   ~wxStringList(void);
 
@@ -137,6 +138,9 @@ class WXDLLEXPORT wxStringList: public wxList
   virtual char **ListToArray(bool new_copies = FALSE) const;
   virtual void Sort(void);
   virtual bool Member(const char *s) const;
+  virtual void Clear(void);
+  void operator= (const wxStringList& list);
+  char* operator[] (int i) const;
 };
 
 #endif
index 0751cada22767de81676f5acbae7b3bc8b277350..3b5569a769a1229e3b8099241dac80158f443bd1 100644 (file)
 #ifdef __WIN95__
 #include "wx/msw/gauge95.h"
 #define wxGauge wxGauge95
-#define classwxGauge classwxGauge95
+#define sm_classwxGauge sm_classwxGauge95
 #else
 #include "wx/msw/gaugemsw.h"
 #define wxGauge wxGaugeMSW
-#define classwxGauge classwxGaugeMSW
+#define sm_classwxGauge sm_classwxGaugeMSW
 #endif
 
 #endif
index 07ae35865836c42c82ccd7dc8554f450ecd16239..95cf43b5f6b615717d374869c8ec1dc059ddd13a 100644 (file)
 #ifdef __WIN95__
 #include "wx/msw/slider95.h"
 #define wxSlider wxSlider95
-#define classwxSlider classwxSlider95
+#define sm_classwxSlider sm_classwxSlider95
 #else
 #include "wx/msw/slidrmsw.h"
 #define wxSlider wxSliderMSW
-#define classwxSlider classwxSliderMSW
+#define sm_classwxSlider sm_classwxSliderMSW
 #endif
 
 #endif
index de08899955124c201ca58ec216e3267bda0878fc..319022cdfe519ee4bfc10290a94838de7725ed9a 100644 (file)
@@ -59,7 +59,7 @@ class WXDLLEXPORT wxClassInfo
    inline wxObjectConstructorFn GetConstructor() const { return m_objectConstructor; }
    inline wxClassInfo* GetFirst() const { return sm_first; }
    inline wxClassInfo* GetNext() const { return m_next; }
-   bool IsKindOf(wxClassInfo *info);
+   bool IsKindOf(wxClassInfo *info) const;
 
    static wxClassInfo *FindClass(char *c);
 
@@ -96,7 +96,7 @@ wxObject* WXDLLEXPORT wxCreateStoredObject( wxInputStream& stream );
 #define DECLARE_DYNAMIC_CLASS(name) \
  public:\
   static wxClassInfo sm_class##name;\
-  wxClassInfo *GetClassInfo() \
+  wxClassInfo *GetClassInfo() const \
    { return &name::sm_class##name; }
 
 #define DECLARE_ABSTRACT_CLASS(name) DECLARE_DYNAMIC_CLASS(name)
@@ -174,9 +174,9 @@ class WXDLLEXPORT wxObject
   wxObject(void);
   virtual ~wxObject(void);
 
-  virtual wxClassInfo *GetClassInfo(void) { return &sm_classwxObject; }
+  virtual wxClassInfo *GetClassInfo(void) const { return &sm_classwxObject; }
 
-  bool IsKindOf(wxClassInfo *info);
+  bool IsKindOf(wxClassInfo *info) const;
 
 #if WXDEBUG && USE_MEMORY_TRACING
   void * operator new (size_t size, char * fileName = NULL, int lineNum = 0);
index 3e09456f594782028c3887458630dc76622e5568..e2499addee1266b373de61e583f83238ef710b8c 100644 (file)
@@ -6,11 +6,11 @@
 #if defined(__WXMSW__) && defined(__WIN95__)
 #   include "wx/msw/tbar95.h"
 #   define wxToolBar wxToolBar95
-#   define classwxToolBar classwxToolBar95
+#   define sm_classwxToolBar sm_classwxToolBar95
 #elif defined(__WXMSW__)
 #   include "wx/msw/tbarmsw.h"
 #   define wxToolBar wxToolBarMSW
-#   define classwxToolBar classwxToolBarMSW
+#   define sm_classwxToolBar sm_classwxToolBarMSW
 #elif defined(__WXGTK__)
 #   include "wx/gtk/tbargtk.h"
 #elif defined(__WXQT__)
diff --git a/include/wx/variant.h b/include/wx/variant.h
new file mode 100644 (file)
index 0000000..e165f87
--- /dev/null
@@ -0,0 +1,202 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        variant.h
+// Purpose:     wxVariant class, container for any type
+// Author:      Julian Smart
+// Modified by:
+// Created:     10/09/98
+// RCS-ID:      $Id$
+// Copyright:   (c)
+// Licence:    wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_VARIANT_H_
+#define _WX_VARIANT_H_
+
+#ifdef __GNUG__
+#pragma interface "variant.h"
+#endif
+
+#include "wx/defs.h"
+#include "wx/object.h"
+#include "wx/string.h"
+#include "wx/list.h"
+
+#if USE_IOSTREAMH
+#include <iostream.h>
+#else
+#include <iostream>
+#endif
+
+/*
+ * wxVariantData stores the actual data in a wxVariant object,
+ * to allow it to store any type of data.
+ * Derive from this to provide custom data handling.
+ *
+ * TODO: in order to replace wxPropertyValue, we would need
+ * to consider adding constructors that take pointers to C++ variables,
+ * or removing that functionality from the wxProperty library.
+ * Essentially wxPropertyValue takes on some of the wxValidator functionality
+ * by storing pointers and not just actual values, allowing update of C++ data
+ * to be handled automatically. Perhaps there's another way of doing this without
+ * overloading wxVariant with unnecessary functionality.
+ */
+
+class WXDLLEXPORT wxVariantData: public wxObject
+{
+DECLARE_ABSTRACT_CLASS(wxVariantData)
+public:
+
+// Construction & destruction
+    wxVariantData() {};
+
+// Override these to provide common functionality
+    // Copy to data
+    virtual void Copy(wxVariantData& data) = 0;
+    virtual bool Eq(wxVariantData& data) const = 0;
+    virtual bool Write(ostream& str) const = 0;
+    virtual bool Write(wxString& str) const = 0;
+    virtual bool Read(istream& str) = 0;
+    virtual bool Read(wxString& str) = 0;
+    // What type is it? Return a string name.
+    virtual wxString GetType() const = 0;
+};
+
+/*
+ * wxVariant can store any kind of data, but has some basic types
+ * built in.
+ * NOTE: this eventually should have a reference-counting implementation.
+ * PLEASE, if you change it to ref-counting, make sure it doesn't involve bloating
+ * this class too much.
+ */
+
+class WXDLLEXPORT wxVariant: public wxObject
+{
+DECLARE_DYNAMIC_CLASS(wxVariant)
+public:
+
+// Construction & destruction
+    wxVariant();
+    wxVariant(double val);
+    wxVariant(long val);
+    wxVariant(bool val);
+    wxVariant(char val);
+    wxVariant(const wxString& val);
+    wxVariant(const char* val); // Necessary or VC++ assumes bool!
+/* Causes ambiguity
+    wxVariant(const wxStringList& val);
+*/
+    wxVariant(const wxList& val); // List of variants
+    wxVariant(const wxVariant& variant);
+    wxVariant(wxVariantData* data); // User-defined data
+    ~wxVariant();
+
+// Generic operators
+    // Assignment
+    void operator= (const wxVariant& variant);
+
+    // Assignment using data, e.g.
+    // myVariant = new wxStringVariantData("hello");
+    void operator= (wxVariantData* variantData);
+    bool operator== (const wxVariant& variant) const;
+    bool operator!= (const wxVariant& variant) const;
+
+// Specific operators
+    bool operator== (double value) const;
+    bool operator!= (double value) const;
+    void operator= (double value) ;
+    bool operator== (long value) const;
+    bool operator!= (long value) const;
+    void operator= (long value) ;
+    bool operator== (char value) const;
+    bool operator!= (char value) const;
+    void operator= (char value) ;
+    bool operator== (bool value) const;
+    bool operator!= (bool value) const;
+    void operator= (bool value) ;
+    bool operator== (const wxString& value) const;
+    bool operator!= (const wxString& value) const;
+    void operator= (const wxString& value) ;
+    void operator= (const char* value) ; // Necessary or VC++ assumes bool!
+    bool operator== (const wxStringList& value) const;
+    bool operator!= (const wxStringList& value) const;
+    void operator= (const wxStringList& value) ;
+    bool operator== (const wxList& value) const;
+    bool operator!= (const wxList& value) const;
+    void operator= (const wxList& value) ;
+
+    // Treat a list variant as an array
+    wxVariant operator[] (size_t idx) const;
+    wxVariant& operator[] (size_t idx) ;
+
+    // Implicit conversion to a wxString
+    inline operator wxString () const {  return MakeString(); }
+    wxString MakeString() const;
+
+    // Other implicit conversions
+    inline operator double () const {  return GetDouble(); }
+    inline operator long () const {  return GetLong(); }
+    inline operator bool () const {  return GetBool(); }
+
+// Accessors
+    // Tests whether there is data
+    inline bool IsNull() const { return (m_data == (wxVariantData*) NULL); }
+
+    wxVariantData* GetData() const { return m_data; }
+    void SetData(wxVariantData* data) ;
+
+    // Returns a string representing the type of the variant,
+    // e.g. "string", "bool", "stringlist", "list", "double", "long"
+    wxString GetType() const;
+
+    bool IsType(const wxString& type) const;
+
+    // Return the number of elements in a list
+    int GetCount() const;
+
+// Value accessors
+    double GetReal() const ;
+    inline double GetDouble() const { return GetReal(); };
+    long GetInteger() const ;
+    inline long GetLong() const { return GetInteger(); };
+    char GetChar() const ;
+    bool GetBool() const ;
+    wxString GetString() const ;
+    wxList& GetList() const ;
+    wxStringList& GetStringList() const ;
+
+// Operations
+    // Make NULL (i.e. delete the data)
+    void MakeNull();
+
+    // Make empty list
+    void NullList();
+
+    // Append to list
+    void Append(const wxVariant& value);
+
+    // Insert at front of list
+    void Insert(const wxVariant& value);
+
+    // Returns TRUE if the variant is a member of the list
+    bool Member(const wxVariant& value) const;
+
+    // Deletes the nth element of the list
+    bool Delete(int item);
+
+    // Clear list
+    void ClearList();
+
+// Type conversion
+    bool Convert(long* value) const;
+    bool Convert(bool* value) const;
+    bool Convert(double* value) const;
+    bool Convert(wxString* value) const;
+    bool Convert(char* value) const;
+
+// Attributes
+protected:
+    wxVariantData*  m_data;
+};
+
+#endif
+    // _WX_VARIANT_H_