]>
git.saurik.com Git - wxWidgets.git/blob - src/msw/ole/safearray.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: msw/ole/safearray.cpp
3 // Purpose: Implementation of wxSafeArrayBase class.
7 // Copyright: (c) 2012 wxWidgets development team
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
11 // ============================================================================
13 // ============================================================================
15 // ----------------------------------------------------------------------------
17 // ----------------------------------------------------------------------------
19 // for compilers that support precompilation, includes "wx.h".
20 #include "wx/wxprec.h"
27 #include "wx/variant.h"
30 #include "wx/msw/ole/safearray.h"
32 // ============================================================================
34 // ============================================================================
36 // ----------------------------------------------------------------------------
38 // ----------------------------------------------------------------------------
40 void wxSafeArrayBase::Destroy()
45 HRESULT hr
= SafeArrayDestroy(m_array
);
48 wxLogApiError(wxS("SafeArrayDestroy()"), hr
);
54 SAFEARRAY
* wxSafeArrayBase::Detach()
56 wxCHECK_MSG( m_array
, NULL
, wxS("Uninitialized safe array") );
59 SAFEARRAY
* array
= m_array
;
64 size_t wxSafeArrayBase::GetDim() const
68 return SafeArrayGetDim(m_array
);
71 bool wxSafeArrayBase::GetLBound(size_t dim
, long& bound
) const
73 wxCHECK_MSG( m_array
, false, wxS("Uninitialized safe array") );
74 wxCHECK_MSG( dim
> 0, false, wxS("Invalid dimension index") );
76 HRESULT hr
= SafeArrayGetLBound(m_array
, dim
, &bound
);
79 wxLogApiError(wxS("SafeArrayGetLBound()"), hr
);
85 bool wxSafeArrayBase::GetUBound(size_t dim
, long& bound
) const
87 wxCHECK_MSG( m_array
, false, wxS("Uninitialized safe array") );
88 wxCHECK_MSG( dim
> 0, false, wxS("Invalid dimension index") );
90 HRESULT hr
= SafeArrayGetUBound(m_array
, dim
, &bound
);
93 wxLogApiError(wxS("SafeArrayGetUBound()"), hr
);
99 size_t wxSafeArrayBase::GetCount(size_t dim
) const
103 if ( GetLBound(dim
, lBound
) && GetUBound(dim
, uBound
) )
104 return uBound
- lBound
+ 1;
108 bool wxSafeArrayBase::Lock()
110 wxCHECK_MSG( m_array
, false, wxS("Uninitialized safe array") );
112 HRESULT hr
= SafeArrayLock(m_array
);
115 wxLogApiError(wxS("SafeArrayLock()"), hr
);
121 bool wxSafeArrayBase::Unlock()
123 wxCHECK_MSG( m_array
, false, wxS("Uninitialized safe array") );
125 HRESULT hr
= SafeArrayUnlock(m_array
);
128 wxLogApiError(wxS("SafeArrayUnlock()"), hr
);