~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/windowscodecs/propertybag.c

Version: ~ [ wine-1.5.30 ] ~ [ wine-1.5.29 ] ~ [ wine-1.5.28 ] ~ [ wine-1.5.27 ] ~ [ wine-1.5.26 ] ~ [ wine-1.5.25 ] ~ [ wine-1.5.24 ] ~ [ wine-1.5.23 ] ~ [ wine-1.5.22 ] ~ [ wine-1.5.21 ] ~ [ wine-1.5.20 ] ~ [ wine-1.5.19 ] ~ [ wine-1.5.18 ] ~ [ wine-1.5.17 ] ~ [ wine-1.5.16 ] ~ [ wine-1.5.15 ] ~ [ wine-1.5.14 ] ~ [ wine-1.5.13 ] ~ [ wine-1.5.12 ] ~ [ wine-1.5.11 ] ~ [ wine-1.5.10 ] ~ [ wine-1.5.9 ] ~ [ wine-1.5.8 ] ~ [ wine-1.5.7 ] ~ [ wine-1.4.1 ] ~ [ wine-1.5.6 ] ~ [ wine-1.5.5 ] ~ [ wine-1.5.4 ] ~ [ wine-1.5.3 ] ~ [ wine-1.5.2 ] ~ [ wine-1.5.1 ] ~ [ wine-1.5.0 ] ~ [ wine-1.4 ] ~ [ wine-1.4-rc6 ] ~ [ wine-1.4-rc5 ] ~ [ wine-1.4-rc4 ] ~ [ wine-1.4-rc3 ] ~ [ wine-1.4-rc2 ] ~ [ wine-1.4-rc1 ] ~ [ wine-1.3.37 ] ~ [ wine-1.3.36 ] ~ [ wine-1.3.35 ] ~ [ wine-1.3.34 ] ~ [ wine-1.3.33 ] ~ [ wine-1.3.32 ] ~ [ wine-1.3.31 ] ~ [ wine-1.3.30 ] ~ [ wine-1.3.29 ] ~ [ wine-1.3.28 ] ~ [ wine-1.3.27 ] ~ [ wine-1.3.26 ] ~ [ wine-1.3.25 ] ~ [ wine-1.3.24 ] ~ [ wine-1.3.23 ] ~ [ wine-1.3.22 ] ~ [ wine-1.3.21 ] ~ [ wine-1.3.20 ] ~ [ wine-1.3.19 ] ~ [ wine-1.3.18 ] ~ [ wine-1.2.3 ] ~ [ wine-1.3.17 ] ~ [ wine-1.3.16 ] ~ [ wine-1.3.15 ] ~ [ wine-1.3.14 ] ~ [ wine-1.3.13 ] ~ [ wine-1.3.12 ] ~ [ wine-1.3.11 ] ~ [ wine-1.3.10 ] ~ [ wine-1.3.9 ] ~ [ wine-1.2.2 ] ~ [ wine-1.3.8 ] ~ [ wine-1.3.7 ] ~ [ wine-1.3.6 ] ~ [ wine-1.3.5 ] ~ [ wine-1.2.1 ] ~ [ wine-1.3.4 ] ~ [ wine-1.3.3 ] ~ [ wine-1.3.2 ] ~ [ wine-1.3.1 ] ~ [ wine-1.3.0 ] ~ [ wine-1.2 ] ~ [ wine-1.2-rc7 ] ~ [ wine-1.2-rc6 ] ~ [ wine-1.2-rc5 ] ~ [ wine-1.2-rc4 ] ~ [ wine-1.2-rc3 ] ~ [ wine-1.2-rc2 ] ~ [ wine-1.2-rc1 ] ~ [ wine-1.1.44 ] ~ [ wine-1.1.43 ] ~ [ wine-1.1.42 ] ~ [ wine-1.1.41 ] ~ [ wine-1.1.40 ] ~ [ wine-1.1.39 ] ~ [ wine-1.1.38 ] ~ [ wine-1.1.37 ] ~ [ wine-1.1.36 ] ~ [ wine-1.1.35 ] ~ [ wine-1.1.34 ] ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Copyright 2009 Vincent Povirk for CodeWeavers
  3  *
  4  * This library is free software; you can redistribute it and/or
  5  * modify it under the terms of the GNU Lesser General Public
  6  * License as published by the Free Software Foundation; either
  7  * version 2.1 of the License, or (at your option) any later version.
  8  *
  9  * This library is distributed in the hope that it will be useful,
 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 12  * Lesser General Public License for more details.
 13  *
 14  * You should have received a copy of the GNU Lesser General Public
 15  * License along with this library; if not, write to the Free Software
 16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 17  */
 18 
 19 #include "config.h"
 20 
 21 #include <stdarg.h>
 22 
 23 #define COBJMACROS
 24 
 25 #include "windef.h"
 26 #include "winbase.h"
 27 #include "objbase.h"
 28 #include "wincodec.h"
 29 
 30 #include "wincodecs_private.h"
 31 
 32 #include "wine/debug.h"
 33 
 34 WINE_DEFAULT_DEBUG_CHANNEL(wincodecs);
 35 
 36 typedef struct PropertyBag {
 37     IPropertyBag2 IPropertyBag2_iface;
 38     LONG ref;
 39 } PropertyBag;
 40 
 41 static inline PropertyBag *impl_from_IPropertyBag2(IPropertyBag2 *iface)
 42 {
 43     return CONTAINING_RECORD(iface, PropertyBag, IPropertyBag2_iface);
 44 }
 45 
 46 static HRESULT WINAPI PropertyBag_QueryInterface(IPropertyBag2 *iface, REFIID iid,
 47     void **ppv)
 48 {
 49     PropertyBag *This = impl_from_IPropertyBag2(iface);
 50     TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
 51 
 52     if (!ppv) return E_INVALIDARG;
 53 
 54     if (IsEqualIID(&IID_IUnknown, iid) ||
 55         IsEqualIID(&IID_IPropertyBag2, iid))
 56     {
 57         *ppv = This;
 58     }
 59     else
 60     {
 61         *ppv = NULL;
 62         return E_NOINTERFACE;
 63     }
 64 
 65     IUnknown_AddRef((IUnknown*)*ppv);
 66     return S_OK;
 67 }
 68 
 69 static ULONG WINAPI PropertyBag_AddRef(IPropertyBag2 *iface)
 70 {
 71     PropertyBag *This = impl_from_IPropertyBag2(iface);
 72     ULONG ref = InterlockedIncrement(&This->ref);
 73 
 74     TRACE("(%p) refcount=%u\n", iface, ref);
 75 
 76     return ref;
 77 }
 78 
 79 static ULONG WINAPI PropertyBag_Release(IPropertyBag2 *iface)
 80 {
 81     PropertyBag *This = impl_from_IPropertyBag2(iface);
 82     ULONG ref = InterlockedDecrement(&This->ref);
 83 
 84     TRACE("(%p) refcount=%u\n", iface, ref);
 85 
 86     if (ref == 0)
 87     {
 88         HeapFree(GetProcessHeap(), 0, This);
 89     }
 90 
 91     return ref;
 92 }
 93 
 94 static HRESULT WINAPI PropertyBag_Read(IPropertyBag2 *iface, ULONG cProperties,
 95     PROPBAG2 *pPropBag, IErrorLog *pErrLog, VARIANT *pvarValue, HRESULT *phrError)
 96 {
 97     FIXME("(%p,%u,%p,%p,%p,%p): stub\n", iface, cProperties, pPropBag, pErrLog, pvarValue, phrError);
 98     return E_NOTIMPL;
 99 }
100 
101 static HRESULT WINAPI PropertyBag_Write(IPropertyBag2 *iface, ULONG cProperties,
102     PROPBAG2 *pPropBag, VARIANT *pvarValue)
103 {
104     FIXME("(%p,%u,%p,%p): stub\n", iface, cProperties, pPropBag, pvarValue);
105     return E_NOTIMPL;
106 }
107 
108 static HRESULT WINAPI PropertyBag_CountProperties(IPropertyBag2 *iface, ULONG *pcProperties)
109 {
110     FIXME("(%p,%p): stub\n", iface, pcProperties);
111     return E_NOTIMPL;
112 }
113 
114 static HRESULT WINAPI PropertyBag_GetPropertyInfo(IPropertyBag2 *iface, ULONG iProperty,
115     ULONG cProperties, PROPBAG2 *pPropBag, ULONG *pcProperties)
116 {
117     FIXME("(%p,%u,%u,%p,%p): stub\n", iface, iProperty, cProperties, pPropBag, pcProperties);
118     return E_NOTIMPL;
119 }
120 
121 static HRESULT WINAPI PropertyBag_LoadObject(IPropertyBag2 *iface, LPCOLESTR pstrName,
122     DWORD dwHint, IUnknown *pUnkObject, IErrorLog *pErrLog)
123 {
124     FIXME("(%p,%s,%u,%p,%p): stub\n", iface, debugstr_w(pstrName), dwHint, pUnkObject, pErrLog);
125     return E_NOTIMPL;
126 }
127 
128 static const IPropertyBag2Vtbl PropertyBag_Vtbl = {
129     PropertyBag_QueryInterface,
130     PropertyBag_AddRef,
131     PropertyBag_Release,
132     PropertyBag_Read,
133     PropertyBag_Write,
134     PropertyBag_CountProperties,
135     PropertyBag_GetPropertyInfo,
136     PropertyBag_LoadObject
137 };
138 
139 HRESULT CreatePropertyBag2(IPropertyBag2 **ppPropertyBag2)
140 {
141     PropertyBag *This;
142 
143     This = HeapAlloc(GetProcessHeap(), 0, sizeof(PropertyBag));
144     if (!This) return E_OUTOFMEMORY;
145 
146     This->IPropertyBag2_iface.lpVtbl = &PropertyBag_Vtbl;
147     This->ref = 1;
148 
149     *ppPropertyBag2 = &This->IPropertyBag2_iface;
150 
151     return S_OK;
152 }
153 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.