41#define BUCKET_COUNT 509
42#define DICT_HASH_MOD 1201
300 IEnumVARIANT_AddRef(iface);
314 TRACE(
"%p, refcount %lu.\n", iface,
ref);
323 TRACE(
"%p, refcount %lu.\n", iface,
ref);
328 IDictionary_Release(&
This->dict->IDictionary_iface);
376 if (!
This->cur)
break;
417 if (!(
object =
calloc(1,
sizeof(*
object))))
425 IDictionary_AddRef(&
dict->IDictionary_iface);
441 else if (dict_enum->
cur ==
pair) {
467 TRACE(
"Interface IDispatchEx not supported - returning NULL\n");
473 TRACE(
"Interface IObjectWithSite not supported - returning NULL\n");
492 TRACE(
"%p, refcount %lu.\n", iface,
ref);
502 TRACE(
"%p, refcount %lu.\n", iface,
ref);
506 IDictionary_RemoveAll(iface);
515 TRACE(
"%p, %p.\n", iface, pctinfo);
523 TRACE(
"%p, %u, %lx, %p.\n", iface, iTInfo,
lcid, ppTInfo);
534 TRACE(
"%p, %s, %p, %u, %lx, %p.\n", iface,
debugstr_guid(
riid), rgszNames, cNames,
lcid, rgDispId);
539 hr = ITypeInfo_GetIDsOfNames(
typeinfo, rgszNames, cNames, rgDispId);
548 EXCEPINFO *pExcepInfo,
UINT *puArgErr)
553 TRACE(
"%p, %ld, %s, %lx, %d, %p, %p, %p, %p.\n", iface, dispIdMember,
debugstr_guid(
riid),
554 lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
559 hr = ITypeInfo_Invoke(
typeinfo, iface, dispIdMember,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
603 return IDictionary_Add(iface,
key,
item);
616 return CTL_E_KEY_ALREADY_EXISTS;
698 hr = IDictionary_Add(iface, newkey, &
pair->item);
702 return IDictionary_Remove(iface,
key);
706 return IDictionary_Add(iface, newkey, &
empty);
757 return CTL_E_ELEMENT_NOT_FOUND;
773 TRACE(
"%p.\n", iface);
851 else if (!
isnan(flt)) {
914 IUnknown_Release(unk);
980 if (!(
object =
calloc(1,
sizeof(*
object))))
985 object->method = BinaryCompare;
991 *
ret = &
object->IDictionary_iface;
static struct sockaddr_in sa
struct outqueuenode * head
HRESULT get_typeinfo(enum type_id tid, ITypeInfo **ret)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static const WCHAR empty[1]
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
static HRESULT create_dict_enum(struct dictionary *, IUnknown **)
static void notify_remove_pair(struct list *notifier, struct list *pair)
static BOOL is_ptr_key(const VARIANT *key)
static HRESULT WINAPI dict_enum_Skip(IEnumVARIANT *iface, ULONG count)
static HRESULT WINAPI dictionary_QueryInterface(IDictionary *iface, REFIID riid, void **obj)
static HRESULT WINAPI dictionary_GetIDsOfNames(IDictionary *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static ULONG WINAPI dict_enum_AddRef(IEnumVARIANT *iface)
static DWORD get_str_hash(const WCHAR *str, CompareMethod method)
static HRESULT WINAPI dictionary_get_HashVal(IDictionary *iface, VARIANT *key, VARIANT *hash)
static WCHAR * get_key_strptr(const VARIANT *key)
static struct dictionary * impl_from_IDictionary(IDictionary *iface)
static HRESULT WINAPI dictionary__NewEnum(IDictionary *iface, IUnknown **ret)
static HRESULT WINAPI dict_enum_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **obj)
static HRESULT WINAPI dictionary_GetTypeInfo(IDictionary *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static const struct IDictionaryVtbl dictionary_vtbl
static HRESULT WINAPI dictionary_get_Item(IDictionary *iface, VARIANT *key, VARIANT *item)
static ULONG WINAPI dictionary_AddRef(IDictionary *iface)
static HRESULT WINAPI dictionary_Items(IDictionary *iface, VARIANT *items)
static int strcmp_key(const struct dictionary *dict, const VARIANT *key1, const VARIANT *key2)
HRESULT WINAPI Dictionary_CreateInstance(IClassFactory *factory, IUnknown *outer, REFIID riid, void **ret)
static struct keyitem_pair * get_keyitem_pair(struct dictionary *dict, VARIANT *key)
static void free_keyitem_pair(struct keyitem_pair *pair)
static BOOL is_matching_key(const struct dictionary *dict, const struct keyitem_pair *pair, const VARIANT *key, DWORD hash)
static const IEnumVARIANTVtbl dictenumvtbl
static DWORD get_num_hash(FLOAT num)
static HRESULT get_flt_hash(FLOAT flt, LONG *hash)
static HRESULT WINAPI dict_enum_Clone(IEnumVARIANT *iface, IEnumVARIANT **cloned)
static ULONG WINAPI dictionary_Release(IDictionary *iface)
static BOOL is_string_key(const VARIANT *key)
static HRESULT WINAPI dictionary_Remove(IDictionary *iface, VARIANT *key)
static HRESULT WINAPI dict_enum_Next(IEnumVARIANT *iface, ULONG count, VARIANT *keys, ULONG *fetched)
static HRESULT WINAPI dictionary_putref_Item(IDictionary *iface, VARIANT *key, VARIANT *item)
static struct list * get_bucket_head(struct dictionary *dict, DWORD hash)
static HRESULT WINAPI dictionary_Invoke(IDictionary *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI dictionary_put_Item(IDictionary *iface, VARIANT *key, VARIANT *item)
static HRESULT WINAPI dictionary_Add(IDictionary *iface, VARIANT *key, VARIANT *item)
static HRESULT WINAPI dictionary_put_Key(IDictionary *iface, VARIANT *key, VARIANT *newkey)
static BOOL is_numeric_key(const VARIANT *key)
static HRESULT WINAPI dictionary_Keys(IDictionary *iface, VARIANT *keys)
static HRESULT add_keyitem_pair(struct dictionary *dict, VARIANT *key, VARIANT *item)
static DWORD get_ptr_hash(void *ptr)
static BOOL numeric_key_eq(const VARIANT *key1, const VARIANT *key2)
static ULONG WINAPI dict_enum_Release(IEnumVARIANT *iface)
static HRESULT WINAPI dictionary_Exists(IDictionary *iface, VARIANT *key, VARIANT_BOOL *exists)
static HRESULT WINAPI dictionary_RemoveAll(IDictionary *iface)
static HRESULT WINAPI dict_enum_Reset(IEnumVARIANT *iface)
static HRESULT WINAPI dictionary_put_CompareMode(IDictionary *iface, CompareMethod method)
static HRESULT WINAPI dictionary_GetTypeInfoCount(IDictionary *iface, UINT *pctinfo)
static HRESULT WINAPI dictionary_get_CompareMode(IDictionary *iface, CompareMethod *method)
static struct dictionary_enum * impl_from_IEnumVARIANT(IEnumVARIANT *iface)
static HRESULT WINAPI dictionary_get_Count(IDictionary *iface, LONG *count)
static const char * debugstr_variant(const VARIANT *var)
GLuint GLuint GLsizei count
GLuint64EXT GLuint GLuint GLenum GLenum GLuint GLuint GLenum GLuint GLuint key1
GLfloat GLfloat GLfloat v2
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
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
const IID IID_IObjectWithSite
static VARIANTARG static DISPID
#define CTL_E_ILLEGALFUNCTIONCALL
const GUID IID_IProvideClassInfo
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
void init_classinfo(const GUID *guid, IUnknown *outer, struct provideclassinfo *classinfo)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
#define LIST_FOR_EACH(cursor, list)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
IEnumVARIANT IEnumVARIANT_iface
struct list buckets[BUCKET_COUNT]
struct provideclassinfo classinfo
IDictionary IDictionary_iface
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, const VARIANTARG *pvargSrc)
void WINAPI VariantInit(VARIANTARG *pVarg)
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags