Changeset 10631 for trunk/src


Ignore:
Timestamp:
Oct 8, 2004, 11:35:16 AM (21 years ago)
Author:
cinc
Message:

Added stubs for

SafeArrayGetRecordInfo()
SafeArraySetRecordInfo()
SafeArrayCreateEx()

Added from Wine:

SafeArraySetIID()
SafeArrayGetIID()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/oleaut32/safearray.c

    r9400 r10631  
    124124
    125125
     126/***********************************************************************
     127 *              SafeArrayCreateEx (OLEAUT32.42)
     128*
     129 * Create a new SafeArray.
     130 *
     131 * PARAMS
     132 *  vt        [I] Type to store in the safe array
     133 *  cDims     [I] Number of array dimensions
     134 *  rgsabound [I] Bounds of the array dimensions
     135 *  pvExtra   [I] Extra data
     136 *
     137 * RETURNS
     138 *  Success: A pointer to a new array object.
     139 *  Failure: NULL, if any parameter is invalid or memory allocation fails.
     140 *
     141 * NOTES
     142 * See SafeArray.
     143 */
     144SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound, LPVOID pvExtra)
     145#ifdef __WIN32OS2__
     146{
     147  FIXME("%s: Not implemented! (returning E_NOTIMPL)", __FUNCTION__);
     148  return E_NOTIMPL;
     149}
     150#else
     151{
     152  ULONG ulSize = 0;
     153  IRecordInfo* iRecInfo = (IRecordInfo*)pvExtra;
     154  SAFEARRAY* psa;
     155 
     156  TRACE("(%d->%s,%d,%p,%p)\n", vt, debugstr_vt(vt), cDims, rgsabound, pvExtra);
     157 
     158  if (vt == VT_RECORD)
     159  {
     160    if  (!iRecInfo)
     161      return NULL;
     162    IRecordInfo_GetSize(iRecInfo, &ulSize);
     163  }
     164  psa = SAFEARRAY_Create(vt, cDims, rgsabound, ulSize);
     165
     166  if (pvExtra)
     167  {
     168    switch(vt)
     169    {
     170      case VT_RECORD:
     171        SafeArraySetRecordInfo(psa, pvExtra);
     172        break;
     173      case VT_UNKNOWN:
     174      case VT_DISPATCH:
     175        SafeArraySetIID(psa, pvExtra);
     176        break;
     177    }
     178  }
     179  return psa;
     180}
     181#endif
     182
     183/***********************************************************************
     184 *              SafeArraySetIID (OLEAUT32.57)
     185*
     186 * Set the IID for a SafeArray.
     187 *
     188 * PARAMS
     189 *  psa  [I] Array to set the IID from
     190 *  guid [I] IID
     191 *
     192 * RETURNS
     193 *  Success: S_OK. The IID is stored with the array
     194 *  Failure: An HRESULT error code indicating the error.
     195 *
     196 * NOTES
     197 * See SafeArray.
     198 */
     199HRESULT WINAPI SafeArraySetIID(SAFEARRAY *psa, REFGUID guid)
     200{
     201  GUID* dest = (GUID*)psa;
     202
     203  TRACE("(%p,%s)\n", psa, debugstr_guid(guid));
     204
     205  if (!psa || !guid || !(psa->fFeatures & FADF_HAVEIID))
     206    return E_INVALIDARG;
     207
     208  dest[-1] = *guid;
     209  return S_OK;
     210}
     211
     212
     213/***********************************************************************
     214 *              SafeArrayGetIID (OLEAUT32.67)
     215 *
     216 * Get the IID from a SafeArray.
     217 *
     218 * PARAMS
     219 *  psa   [I] Array to get the ID from
     220 *  pGuid [O] Destination for the IID
     221 *
     222 * RETURNS
     223 *  Success: S_OK. pRinfo contains the IID, or NULL if there was none.
     224 *  Failure: An HRESULT error code indicating the error.
     225 *
     226 * NOTES
     227 * See SafeArray.
     228 */
     229HRESULT WINAPI SafeArrayGetIID(SAFEARRAY *psa, GUID *pGuid)
     230{
     231  GUID* src = (GUID*)psa;
     232
     233  TRACE("(%p,%p)\n", psa, pGuid);
     234
     235  if (!psa || !pGuid || !(psa->fFeatures & FADF_HAVEIID))
     236    return E_INVALIDARG;
     237
     238  *pGuid = src[-1];
     239  return S_OK;
     240}
     241
     242
     243/***********************************************************************
     244 *              SafeArraySetRecordInfo (OLEAUT32.45)
     245 */
     246#ifdef __WIN32OS2__
     247HRESULT WINAPI SafeArraySetRecordInfo(void* pFixMe, void* pFixMe2)
     248#else
     249HRESULT WINAPI SafeArraySetRecordInfo(SAFEARRAY* psa,  IRecordInfo *  psaboundNew)
     250#endif
     251{
     252  FIXME("%s: Not implemented! (returning E_NOTIMPL)", __FUNCTION__);
     253  return E_NOTIMPL;
     254}
     255
     256
     257/***********************************************************************
     258 *              SafeArrayGetRecordInfo (OLEAUT32.45)
     259 */
     260/* IRecordInfo helpers */
     261#ifdef __WIN32OS2__
     262HRESULT WINAPI SafeArrayGetRecordInfo(void* pFixMe, void** ppFixMe)
     263#else
     264HRESULT WINAPI SafeArrayGetRecordInfo(SAFEARRAY* psa,IRecordInfo** prinfo)
     265#endif
     266{
     267  FIXME("%s: Not implemented! (returning E_NOTIMPL)", __FUNCTION__);
     268  return E_NOTIMPL;
     269}
     270
     271
    126272/*************************************************************************
    127273 *              SafeArrayAllocDescriptor (OLEAUT32.36)
Note: See TracChangeset for help on using the changeset viewer.