w*h interface revisions

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55892 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2008-09-25 21:31:45 +00:00
parent 674d80a76f
commit e25cd7750c
3 changed files with 640 additions and 546 deletions

View File

@@ -1,33 +1,35 @@
/////////////////////////////////////////////////////////////////////////////
// Name: weakref.h
// Purpose: interface of wxWeakRefDynamic<T>
// Purpose: interface of wxWeakRefDynamic<T>, wxWeakRef<T>
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
@class wxWeakRefDynamic<T>
wxWeakRefDynamic<T> is a template class for weak references that is used in
the same way as wxWeakRef<T>. The only difference is that wxWeakRefDynamic
defaults to using @c dynamic_cast for establishing the object
reference (while wxWeakRef defaults to @c static_cast).
defaults to using @c dynamic_cast for establishing the object reference
(while wxWeakRef defaults to @c static_cast).
So, wxWeakRef will detect a type mismatch during compile time and will
have a little better run-time performance. The role of wxWeakRefDynamic
is to handle objects which derived type one does not know.
@note wxWeakRef<T> selects an implementation based on the static type
of T. If T does not have wxTrackable statically, it defaults to to a mixed-
mode operation, where it uses @c dynamic_cast as the last measure (if
available from the compiler and enabled when building wxWidgets).
@note wxWeakRef<T> selects an implementation based on the static type of T.
If T does not have wxTrackable statically, it defaults to to a mixed-
mode operation, where it uses @c dynamic_cast as the last measure
(if available from the compiler and enabled when building wxWidgets).
For general cases, wxWeakRef<T> is the better choice.
For API documentation, see: wxWeakRef<T>
For API documentation, see: wxWeakRef<T>.
@library{wxcore}
@category{FIXME}
@nolibrary
@category{misc}
*/
template<typename T>
class wxWeakRefDynamic<T>
@@ -39,12 +41,12 @@ public:
/**
@class wxWeakRef<T>
wxWeakRef is a template class for weak references to wxWidgets objects,
such as wxEvtHandler, wxWindow and
wxObject. A weak reference behaves much like an ordinary
pointer, but when the object pointed is destroyed, the weak reference is
automatically reset to a @NULL pointer.
wxWeakRef<T> is a template class for weak references to wxWidgets objects,
such as wxEvtHandler, wxWindow and wxObject.
A weak reference behaves much like an ordinary pointer, but when the object
pointed is destroyed, the weak reference is automatically reset to a @NULL pointer.
wxWeakRef<T> can be used whenever one must keep a pointer to an object
that one does not directly own, and that may be destroyed before the object
@@ -53,7 +55,7 @@ public:
wxWeakRef<T> is a small object and the mechanism behind it is fast
(@b O(1)). So the overall cost of using it is small.
Example
Example:
@code
wxWindow *wnd = new wxWindow( parent, wxID_ANY, "wxWindow" );
@@ -69,10 +71,11 @@ public:
wxASSERT( wr==NULL );
@endcode
wxWeakRef<T> works for any objects that are derived from wxTrackable. By default,
wxEvtHandler and wxWindow derive from wxTrackable. However, wxObject does not, so
types like wxFont and wxColour are not trackable. The example below shows how to
create a wxObject derived class that is trackable:
wxWeakRef<T> works for any objects that are derived from wxTrackable.
By default, wxEvtHandler and wxWindow derive from wxTrackable.
However, wxObject does not, so types like wxFont and wxColour are not
trackable. The example below shows how to create a wxObject derived class
that is trackable:
@code
class wxMyTrackableObject : public wxObject, public wxTrackable
@@ -88,14 +91,13 @@ public:
typedef wxWeakRef<wxWindow> wxWindowRef;
@endcode
@library{wxbase}
@category{FIXME}
@nolibrary
@category{misc}
@see wxSharedPtr<T>, wxScopedPtr<T>
*/
template<typename T>
class wxWeakRef<T>
class wxWeakRef<T> : public wxTrackerNode
{
public:
/**
@@ -115,8 +117,8 @@ public:
/**
Called when the tracked object is destroyed. Be default sets
internal pointer to @NULL. You need to call this method if
you override it.
internal pointer to @NULL.
You need to call this method if you override it.
*/
virtual void OnObjectDestroy();
@@ -137,21 +139,21 @@ public:
T* operator =(wxWeakRef<T>& wr);
/**
Implicit conversion to T*. Returns pointer to the tracked
object or @NULL.
Implicit conversion to T*.
Returns pointer to the tracked object or @NULL.
*/
T* operator*() const;
/**
Returns a reference to the tracked object. If the internal pointer is @NULL
this method will cause an assert in debug mode.
Returns a reference to the tracked object.
If the internal pointer is @NULL this method will cause an assert in debug mode.
*/
T operator*() const;
T& operator*() const;
/**
Smart pointer member access. Returns a pointer to the
tracked object. If the internal pointer is @NULL this
method will cause an assert in debug mode.
Smart pointer member access.
Returns a pointer to the tracked object.
If the internal pointer is @NULL this method will cause an assert in debug mode.
*/
T* operator-();

View File

@@ -9,8 +9,8 @@
/**
@class wxTempFileOutputStream
wxTempFileOutputStream is an output stream based on wxTempFile. It
provides a relatively safe way to replace the contents of the
wxTempFileOutputStream is an output stream based on wxTempFile.
It provides a relatively safe way to replace the contents of the
existing file.
@library{wxbase}
@@ -23,18 +23,19 @@ class wxTempFileOutputStream : public wxOutputStream
public:
/**
Associates wxTempFileOutputStream with the file to be replaced and opens it.
You should use
wxStreamBase::IsOk to verify if the constructor succeeded.
Call Commit() or wxOutputStream::Close to
replace the old file and close this one. Calling Discard()
(or allowing the destructor to do it) will discard the changes.
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
Call Commit() or wxOutputStream::Close() to replace the old file and close
this one. Calling Discard() (or allowing the destructor to do it) will
discard the changes.
*/
wxTempFileOutputStream(const wxString& fileName);
/**
Validate changes: deletes the old file of the given name and renames the new
file to the old name. Returns @true if both actions succeeded. If @false is
returned it may unfortunately mean two quite different things: either that
file to the old name. Returns @true if both actions succeeded.
If @false is returned it may unfortunately mean two quite different things: either that
either the old file couldn't be deleted or that the new file couldn't be renamed
to the old name.
*/
@@ -52,14 +53,12 @@ public:
/**
@class wxFFileOutputStream
This class represents data written to a file. There are actually
two such groups of classes: this one is based on wxFFile
whereas wxFileInputStream is based in
the wxFile class.
This class represents data written to a file.
There are actually two such groups of classes: this one is based on wxFFile
whereas wxFileInputStream is based in the wxFile class.
Note that wxOutputStream::SeekO
can seek beyond the end of the stream (file) and will thus not return
@e wxInvalidOffset for that.
Note that wxOutputStream::SeekO() can seek beyond the end of the stream
(file) and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@@ -69,15 +68,21 @@ public:
class wxFFileOutputStream : public wxOutputStream
{
public:
//@{
/**
Initializes a file stream in write-only mode using the file descriptor @e fp.
*/
wxFFileOutputStream(const wxString& filename,
const wxString& mode = "wb");
const wxString& mode = "w+b");
/**
Initializes a file stream in write-only mode using the file I/O object file.
*/
wxFFileOutputStream(wxFFile& file);
/**
Initializes a file stream in write-only mode using the file descriptor fp.
*/
wxFFileOutputStream(FILE* fp);
//@}
/**
Destructor.
@@ -95,14 +100,12 @@ public:
/**
@class wxFileOutputStream
This class represents data written to a file. There are actually
two such groups of classes: this one is based on wxFile
whereas wxFFileInputStream is based in
the wxFFile class.
This class represents data written to a file.
There are actually two such groups of classes: this one is based on wxFile
whereas wxFFileInputStream is based in the wxFFile class.
Note that wxOutputStream::SeekO
can seek beyond the end of the stream (file) and will thus not return
@e wxInvalidOffset for that.
Note that wxOutputStream::SeekO() can seek beyond the end of the stream
(file) and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@@ -112,14 +115,20 @@ public:
class wxFileOutputStream : public wxOutputStream
{
public:
//@{
/**
Creates a new file with ofilename name and initializes the stream in write-only mode.
*/
wxFileOutputStream(const wxString& ofileName);
/**
Initializes a file stream in write-only mode using the file I/O object file.
*/
wxFileOutputStream(wxFile& file);
/**
Initializes a file stream in write-only mode using the file descriptor @e fd.
*/
wxFileOutputStream(const wxString& ofileName);
wxFileOutputStream(wxFile& file);
wxFileOutputStream(int fd);
//@}
/**
Destructor.
@@ -137,14 +146,12 @@ public:
/**
@class wxFileInputStream
This class represents data read in from a file. There are actually
two such groups of classes: this one is based on wxFile
whereas wxFFileInputStream is based in
the wxFFile class.
This class represents data read in from a file.
There are actually two such groups of classes: this one is based on wxFile
whereas wxFFileInputStream is based in the wxFFile class.
Note that wxInputStream::SeekI
can seek beyond the end of the stream (file) and will thus not return
@e wxInvalidOffset for that.
Note that wxInputStream::SeekI() can seek beyond the end of the stream (file)
and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@@ -154,14 +161,20 @@ public:
class wxFileInputStream : public wxInputStream
{
public:
//@{
/**
Opens the specified file using its ifilename name in read-only mode.
*/
wxFileInputStream(const wxString& ifileName);
/**
Initializes a file stream in read-only mode using the file I/O object file.
*/
wxFileInputStream(wxFile& file);
/**
Initializes a file stream in read-only mode using the specified file descriptor.
*/
wxFileInputStream(const wxString& ifileName);
wxFileInputStream(wxFile& file);
wxFileInputStream(int fd);
//@}
/**
Destructor.
@@ -179,14 +192,12 @@ public:
/**
@class wxFFileInputStream
This class represents data read in from a file. There are actually
two such groups of classes: this one is based on wxFFile
whereas wxFileInputStream is based in
the wxFile class.
This class represents data read in from a file.
There are actually two such groups of classes: this one is based on wxFFile
whereas wxFileInputStream is based in the wxFile class.
Note that wxInputStream::SeekI
can seek beyond the end of the stream (file) and will thus not return
@e wxInvalidOffset for that.
Note that wxInputStream::SeekI() can seek beyond the end of the stream (file)
and will thus not return ::wxInvalidOffset for that.
@library{wxbase}
@category{streams}
@@ -196,16 +207,21 @@ public:
class wxFFileInputStream : public wxInputStream
{
public:
//@{
/**
Initializes a file stream in read-only mode using the specified file pointer @e
fp.
Opens the specified file using its filename name using the specified mode.
*/
wxFFileInputStream(const wxString& filename,
const wxString& mode = "rb");
/**
Initializes a file stream in read-only mode using the file I/O object file.
*/
wxFFileInputStream(wxFFile& file);
/**
Initializes a file stream in read-only mode using the specified file pointer @a fp.
*/
wxFFileInputStream(FILE* fp);
//@}
/**
Destructor.
@@ -223,9 +239,10 @@ public:
/**
@class wxFFileStream
@todo describe this class.
@library{wxbase}
@category{FIXME}
@category{streams}
@see wxStreamBuffer
*/
@@ -234,7 +251,7 @@ class wxFFileStream : public wxFFileOutputStream
public:
/**
Initializes a new file stream in read-write mode using the specified
@e iofilename name.
@a iofilename name.
*/
wxFFileStream(const wxString& iofileName, const wxString& mode = "w+b");
};
@@ -244,9 +261,10 @@ public:
/**
@class wxFileStream
@todo describe this class.
@library{wxbase}
@category{FIXME}
@category{streams}
@see wxStreamBuffer
*/
@@ -255,7 +273,7 @@ class wxFileStream : public wxFileOutputStream
public:
/**
Initializes a new file stream in read-write mode using the specified
@e iofilename name.
@a iofilename name.
*/
wxFileStream(const wxString& iofileName);
};

File diff suppressed because it is too large Load Diff