]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/any.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / any.h
index b7e1fe07258fcc04f53928aa9ce2573899f1f079..6862746c886273bbd5df78965306e53efca4439d 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        any.h
 // Purpose:     interface of wxAny
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 
     When compared to wxVariant, there are various internal implementation
     differences as well. For instance, wxAny only allocates separate data
-    object in heap for large (i.e. size in bytes more than
-    WX_ANY_VALUE_BUFFER_SIZE) or non-POD (Plain Old Data) data types.
-    Pointers, integers, bools etc. are fitted in the wxAny's internal buffer
-    without need for any extra allocation. It is possible that wxAny cannot
-    automatically determine if your own data structure is considered a
-    POD or not, so you may need to declare it as such explicitly, using
-    code like this:
+    object in heap for large objects (i.e. ones with size more than
+    WX_ANY_VALUE_BUFFER_SIZE, which at the time of writing is 16 bytes).
 
-    @code
-    #include "wx/meta/pod.h"
-    WX_DECLARE_TYPE_POD(MyPodStruct)
-    @endcode
-
-    Be extra careful what you declare as Plain Old Data. It must be such data
-    that can be copied with memcpy() without corrupting program integrity. For
-    instance, POD structures usually cannot contain pointers or references to
-    other data. wxRect, wxPoint, and wxSize are good examples of POD
-    classes.
-
-    Note that pointers to any and all types are already automatically
-    declared as Plain Old Data.
+    @note When performing conversions between strings and floating point
+        numbers, the representation of numbers in C locale is always used.
+        I.e. @code wxAny("1.23").GetAs<double>() @endcode will always work,
+        even if the current locale uses comma as decimal separator.
 
     @library{wxbase}
     @category{data}
@@ -159,14 +144,21 @@ public:
         Returns the value type as wxAnyValueType instance.
 
         @remarks You cannot reliably test whether two wxAnys are of
-                same value type by simply comparing return values
-                of wxAny::GetType(). Instead use
-                wxAnyValueType::CheckType<T>() template function.
+                 same value type by simply comparing return values
+                 of wxAny::GetType(). Instead, use wxAny::HasSameType().
+
+        @see HasSameType()
     */
     const wxAnyValueType* GetType() const;
 
     /**
-        Tests if wxAny is null (that is, whether there is data).
+        Returns @true if this and another wxAny have the same
+        value type.
+    */
+    bool HasSameType(const wxAny& other) const;
+
+    /**
+        Tests if wxAny is null (that is, whether there is no data).
     */
     bool IsNull() const;