| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/scopedarray.h
 
- // Purpose:     interface of wxScopedArray
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxScopedArray
 
-     This is a simple scoped smart pointer array implementation that is similar to
 
-     the Boost smart pointers (see http://www.boost.org/) but rewritten to
 
-     use macros instead.
 
-     @b Example:
 
-     Below is an example of using a wxWidgets scoped smart pointer and pointer array.
 
-     @code
 
-     class MyClass { ... };
 
-     // declare a smart pointer to a MyClass called wxMyClassPtr
 
-     wxDECLARE_SCOPED_PTR(MyClass, wxMyClassPtr)
 
-     // declare a smart pointer to an array of chars
 
-     wxDECLARE_SCOPED_ARRAY(char, wxCharArray)
 
-     ...
 
-     // define the first pointer class, must be complete
 
-     wxDEFINE_SCOPED_PTR(MyClass, wxMyClassPtr)
 
-     // define the second pointer class
 
-     wxDEFINE_SCOPED_ARRAY(char, wxCharArray)
 
-     // create an object with a new pointer to MyClass
 
-     wxMyClassPtr theObj(new MyClass());
 
-     // reset the pointer (deletes the previous one)
 
-     theObj.reset(new MyClass());
 
-     // access the pointer
 
-     theObj->MyFunc();
 
-     // create an object with a new array of chars
 
-     wxCharArray theCharObj(new char[100]);
 
-     // access the array
 
-     theCharObj[0] = "!";
 
-     @endcode
 
-     <b>Declaring new smart pointer types:</b>
 
-     @code
 
-     wxDECLAR_SCOPED_ARRAY( TYPE,        // type of the values
 
-                            CLASSNAME ); // name of the class
 
-     @endcode
 
-     A smart pointer holds a pointer to an object (which must be complete when
 
-     wxDEFINE_SCOPED_ARRAY() is called).
 
-     The memory used by the object is deleted when the smart pointer goes out of
 
-     scope. The first argument of the macro is the pointer type, the second is the
 
-     name of the new smart pointer class being created. Below we will use wxScopedArray
 
-     to represent the scoped pointer array class, but the user may create the class with
 
-     any legal name.
 
-     @library{wxbase}
 
-     @category{smartpointers}
 
-     @see wxScopedPtr
 
- */
 
- class wxScopedArray
 
- {
 
- public:
 
-     /**
 
-         Creates the smart pointer with the given pointer or none if @NULL.  On
 
-         compilers that support it, this uses the explicit keyword.
 
-     */
 
-     wxScopedArray(type*  T = NULL);
 
-     /**
 
-         This operator gets the pointer stored in the smart pointer or returns @NULL if
 
-         there is none.
 
-     */
 
-     const T* get();
 
-     /**
 
-         This operator acts like the standard [] indexing operator for C++ arrays.  The
 
-         function does not do bounds checking.
 
-     */
 
-     const T& operator [](long int i);
 
-     /**
 
-         Deletes the currently held pointer and sets it to 'p' or to @NULL if no
 
-         arguments are specified. This function does check to make sure that the
 
-         pointer you are assigning is not the same pointer that is already stored.
 
-     */
 
-     reset(T* p  = NULL);
 
-     /**
 
-         Swap the pointer inside the smart pointer with @a ot. The pointer being swapped
 
-         must be of the same type (hence the same class name).
 
-     */
 
-     swap(wxScopedArray& ot);
 
- };
 
- /**
 
-     A scoped array template class.
 
-     This class is similar to boost scoped_array class:
 
-     http://www.boost.org/doc/libs/1_37_0/libs/smart_ptr/scoped_array.htm
 
-     Notice that objects of this class intentionally cannot be copied.
 
-     @library{wxbase}
 
-     @category{smartpointers}
 
-  */
 
- template <class T>
 
- class wxScopedArray
 
- {
 
- public:
 
-     /// The type of the array elements.
 
-     typedef T element_type;
 
-     /**
 
-         Constructor takes ownership of the given array.
 
-         If @a array is @NULL, reset() must presumably be called later.
 
-         @param array
 
-             An array allocated using @c new[] or @NULL.
 
-      */
 
-     explicit wxScopedArray(T * array = NULL);
 
-     /// Destructor destroy the array.
 
-     ~wxScopedArray();
 
-     /**
 
-         Conversion to a boolean expression (in a variant which is not
 
-         convertible to anything but a boolean expression).
 
-         If this class contains a valid array it will return @true, if it contains
 
-         a @NULL pointer it will return @false.
 
-     */
 
-     operator unspecified_bool_type() const;
 
-     /**
 
-         Change the array pointer stored.
 
-         The previously stored array is deleted.
 
-         @param array
 
-             An array allocated using @c new[] or @NULL.
 
-      */
 
-     void reset(T *array = NULL);
 
-     /**
 
-         Return the n-th element of the array.
 
-         Must not be called if the array has no valid pointer.
 
-      */
 
-     T& operator[](size_t n) const;
 
-     /**
 
-         Return the array pointer.
 
-         The returned pointer may be @NULL. It must not be deleted by the
 
-         caller, call @c reset(NULL) instead.
 
-      */
 
-     T *get() const;
 
-     /// Swaps the contents of this array with another one.
 
-     void swap(wxScopedArray &other);
 
- };
 
 
  |