23 #include <wine/port.h> 38 #include "wine/list.h" 42 #define BUCKET_COUNT 509 43 #define DICT_HASH_MOD 1201 125 const WCHAR *str1, *str2;
233 IEnumVARIANT_AddRef(iface);
260 IDictionary_Release(&
This->dict->IDictionary_iface);
308 if (!
This->cur)
break;
373 else if (dict_enum->
cur ==
pair) {
390 *
obj = &
This->IDictionary_iface;
394 *
obj = &
This->classinfo.IProvideClassInfo_iface;
398 TRACE(
"Interface IDispatchEx not supported - returning NULL\n");
404 TRACE(
"Interface IObjectWithSite not supported - returning NULL\n");
436 IDictionary_RemoveAll(iface);
457 TRACE(
"(%p)->(%u %u %p)\n",
This, iTInfo, lcid, ppTInfo);
473 hr = ITypeInfo_GetIDsOfNames(
typeinfo, rgszNames, cNames, rgDispId);
489 lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
495 pDispParams, pVarResult, pExcepInfo, puArgErr);
521 return IDictionary_Add(iface,
key,
item);
535 return IDictionary_Add(iface,
key,
item);
548 return CTL_E_KEY_ALREADY_EXISTS;
628 hr = IDictionary_Add(iface, newkey, &
pair->item);
632 return IDictionary_Remove(iface,
key);
636 return IDictionary_Add(iface, newkey, &
empty);
686 return CTL_E_ELEMENT_NOT_FOUND;
704 if (
This->count == 0)
779 else if (!
isnan(flt)) {
838 IUnknown_Release(unk);
912 *
obj = &
This->IDictionary_iface;
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
static HRESULT WINAPI dict_enum_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **obj)
struct list buckets[BUCKET_COUNT]
FCRET TextCompare(FILECOMPARE *pFC, HANDLE *phMapping0, const LARGE_INTEGER *pcb0, HANDLE *phMapping1, const LARGE_INTEGER *pcb1)
GLuint64EXT GLuint GLuint GLenum GLenum GLuint GLuint GLenum GLuint GLuint key1
static HRESULT WINAPI dictionary_put_CompareMode(IDictionary *iface, CompareMethod method)
static HRESULT WINAPI dictionary_Keys(IDictionary *iface, VARIANT *keys)
struct outqueuenode * head
static ULONG WINAPI dict_enum_Release(IEnumVARIANT *iface)
static HRESULT WINAPI dictionary__NewEnum(IDictionary *iface, IUnknown **ret)
GLuint GLuint GLsizei count
static HRESULT WINAPI dict_enum_Skip(IEnumVARIANT *iface, ULONG count)
static ULONG WINAPI dictionary_Release(IDictionary *iface)
static HRESULT WINAPI dictionary_get_CompareMode(IDictionary *iface, CompareMethod *method)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
static HRESULT WINAPI dictionary_GetIDsOfNames(IDictionary *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static struct keyitem_pair * get_keyitem_pair(dictionary *dict, VARIANT *key)
void WINAPI VariantInit(VARIANTARG *pVarg)
static struct list * get_bucket_head(dictionary *dict, DWORD hash)
static HRESULT WINAPI dictionary_GetTypeInfoCount(IDictionary *iface, UINT *pctinfo)
HRESULT WINAPI Dictionary_CreateInstance(IClassFactory *factory, IUnknown *outer, REFIID riid, void **obj)
static void * heap_alloc(size_t len)
__WINE_SERVER_LIST_INLINE struct list * list_head(const struct list *list)
static DWORD get_ptr_hash(void *ptr)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
IEnumVARIANT IEnumVARIANT_iface
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
const GUID IID_IProvideClassInfo
#define LIST_FOR_EACH(cursor, list)
static DWORD get_str_hash(const WCHAR *str, CompareMethod method)
HRESULT get_typeinfo(enum type_id tid, ITypeInfo **ret)
static HRESULT WINAPI dictionary_get_HashVal(IDictionary *iface, VARIANT *key, VARIANT *hash)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
static HRESULT WINAPI dictionary_Items(IDictionary *iface, VARIANT *items)
static DWORD get_num_hash(FLOAT num)
static HRESULT WINAPI dictionary_GetTypeInfo(IDictionary *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static HRESULT WINAPI dictionary_get_Count(IDictionary *iface, LONG *count)
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
static const unsigned char dictionary[][3]
static BOOL is_matching_key(const dictionary *dict, const struct keyitem_pair *pair, const VARIANT *key, DWORD hash)
static const struct IDictionaryVtbl dictionary_vtbl
static HRESULT WINAPI dictionary_get_Item(IDictionary *iface, VARIANT *key, VARIANT *item)
static dictionary * impl_from_IDictionary(IDictionary *iface)
const IID IID_IObjectWithSite
static const IEnumVARIANTVtbl dictenumvtbl
void init_classinfo(const GUID *guid, IUnknown *outer, struct provideclassinfo *classinfo)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
static WCHAR * get_key_strptr(const VARIANT *key)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
static ITypeInfo * typeinfo[last_tid]
#define InterlockedDecrement
static HRESULT add_keyitem_pair(dictionary *dict, VARIANT *key, VARIANT *item)
_In_ DWORD _Out_ _In_ WORD wFlags
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
static HRESULT WINAPI dictionary_QueryInterface(IDictionary *iface, REFIID riid, void **obj)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
struct stdole::EXCEPINFO EXCEPINFO
__WINE_SERVER_LIST_INLINE int list_empty(const struct list *list)
static const char * debugstr_variant(const VARIANT *var)
static void notify_remove_pair(struct list *notifier, struct list *pair)
static VARIANTARG static DISPID
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define InterlockedIncrement
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static HRESULT WINAPI dict_enum_Reset(IEnumVARIANT *iface)
static HRESULT create_dict_enum(dictionary *, IUnknown **)
static HRESULT get_flt_hash(FLOAT flt, LONG *hash)
static int strcmp_key(const dictionary *dict, const VARIANT *key1, const VARIANT *key2)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static HRESULT WINAPI dictionary_Add(IDictionary *iface, VARIANT *key, VARIANT *item)
static ULONG WINAPI dict_enum_AddRef(IEnumVARIANT *iface)
struct stdole::DISPPARAMS DISPPARAMS
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
static struct dictionary_enum * impl_from_IEnumVARIANT(IEnumVARIANT *iface)
static HRESULT WINAPI dictionary_put_Key(IDictionary *iface, VARIANT *key, VARIANT *newkey)
static HRESULT WINAPI dictionary_RemoveAll(IDictionary *iface)
static void free_keyitem_pair(struct keyitem_pair *pair)
static HRESULT WINAPI dictionary_Invoke(IDictionary *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
#define CTL_E_ILLEGALFUNCTIONCALL
static HRESULT WINAPI dictionary_Remove(IDictionary *iface, VARIANT *key)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
WINE_DEFAULT_DEBUG_CHANNEL(storage)
static struct sockaddr_in sa
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
static HRESULT WINAPI dictionary_putref_Item(IDictionary *iface, VARIANT *Key, VARIANT *pRetItem)
static BOOL is_string_key(const VARIANT *key)
IDictionary IDictionary_iface
static HRESULT WINAPI dict_enum_Clone(IEnumVARIANT *iface, IEnumVARIANT **cloned)
static ULONG WINAPI dictionary_AddRef(IDictionary *iface)
static BOOL heap_free(void *mem)
static HRESULT WINAPI dictionary_Exists(IDictionary *iface, VARIANT *key, VARIANT_BOOL *exists)
static HRESULT WINAPI dict_enum_Next(IEnumVARIANT *iface, ULONG count, VARIANT *keys, ULONG *fetched)
static HRESULT WINAPI dictionary_put_Item(IDictionary *iface, VARIANT *key, VARIANT *item)