From b92d2cf30fc718f96f870e3b6e33545efc846f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Wed, 5 Dec 2012 19:36:45 -0500 Subject: [PATCH] libwinpr-utils/collections: stubbed more classes --- winpr/include/winpr/collections.h | 27 ++++ winpr/libwinpr/utils/CMakeLists.txt | 5 +- winpr/libwinpr/utils/collections/Dictionary.c | 133 ++++++++++++++++++ .../libwinpr/utils/collections/KeyValuePair.c | 48 +++++++ .../utils/collections/ListDictionary.c | 133 ++++++++++++++++++ 5 files changed, 345 insertions(+), 1 deletion(-) create mode 100644 winpr/libwinpr/utils/collections/Dictionary.c create mode 100644 winpr/libwinpr/utils/collections/KeyValuePair.c create mode 100644 winpr/libwinpr/utils/collections/ListDictionary.c diff --git a/winpr/include/winpr/collections.h b/winpr/include/winpr/collections.h index 65bd9e3f0..c775c1bee 100644 --- a/winpr/include/winpr/collections.h +++ b/winpr/include/winpr/collections.h @@ -120,4 +120,31 @@ WINPR_API int ArrayList_LastIndexOf(wArrayList* arrayList, void* obj, int startI WINPR_API wArrayList* ArrayList_New(BOOL synchronized); WINPR_API void ArrayList_Free(wArrayList* arrayList); +/* System.Collections.DictionaryBase */ + +struct _wDictionary +{ + BOOL synchronized; + HANDLE mutex; +}; +typedef struct _wDictionary wDictionary; + +/* System.Collections.Specialized.ListDictionary */ + +struct _wListDictionary +{ + BOOL synchronized; + HANDLE mutex; +}; +typedef struct _wListDictionary wListDictionary; + +/* System.Collections.Generic.KeyValuePair */ + +struct _wKeyValuePair +{ + void* key; + void* value; +}; +typedef struct _wKeyValuePair wKeyValuePair; + #endif /* WINPR_COLLECTIONS_H */ diff --git a/winpr/libwinpr/utils/CMakeLists.txt b/winpr/libwinpr/utils/CMakeLists.txt index a00ff0c6a..6b0e096f1 100644 --- a/winpr/libwinpr/utils/CMakeLists.txt +++ b/winpr/libwinpr/utils/CMakeLists.txt @@ -21,7 +21,10 @@ set(MODULE_PREFIX "WINPR_UTILS") set(${MODULE_PREFIX}_COLLECTIONS_SRCS collections/Queue.c collections/Stack.c - collections/ArrayList.c) + collections/ArrayList.c + collections/Dictionary.c + collections/ListDictionary.c + collections/KeyValuePair.c) set(${MODULE_PREFIX}_SRCS sam.c diff --git a/winpr/libwinpr/utils/collections/Dictionary.c b/winpr/libwinpr/utils/collections/Dictionary.c new file mode 100644 index 000000000..0cb5b8bcd --- /dev/null +++ b/winpr/libwinpr/utils/collections/Dictionary.c @@ -0,0 +1,133 @@ +/** + * WinPR: Windows Portable Runtime + * System.Collections.DictionaryBase + * + * Copyright 2012 Marc-Andre Moreau + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * C equivalent of the C# DictionaryBase Class: + * http://msdn.microsoft.com/en-us/library/system.collections.dictionarybase.aspx + */ + +/** + * Properties + */ + +/** + * Gets the number of key/value pairs contained in the Dictionary. + */ + +int Dictionary_Count(wDictionary* dictionary) +{ + return 0; +} + +/** + * Gets a value indicating whether the Dictionary has a fixed size. + */ + +BOOL Dictionary_IsFixedSized(wDictionary* dictionary) +{ + return FALSE; +} + +/** + * Gets a value indicating whether the Dictionary is read-only. + */ + +BOOL Dictionary_IsReadOnly(wDictionary* dictionary) +{ + return FALSE; +} + +/** + * Gets a value indicating whether the Dictionary is synchronized (thread safe). + */ + +BOOL Dictionary_IsSynchronized(wDictionary* dictionary) +{ + return dictionary->synchronized; +} + +/** + * Methods + */ + +/** + * Adds an entry with the specified key and value into the Dictionary. + */ + +void Dictionary_Add(wDictionary* dictionary, void* key, void* value) +{ + +} + +/** + * Removes all entries from the Dictionary. + */ + +void Dictionary_Clear(wDictionary* dictionary) +{ + +} + +/** + * Determines whether the Dictionary contains a specific key. + */ + +BOOL Dictionary_Contains(wDictionary* dictionary, void* key) +{ + return FALSE; +} + +/** + * Removes the entry with the specified key from the Dictionary. + */ + +void Dictionary_Remove(wDictionary* dictionary, void* key) +{ + +} + +/** + * Construction, Destruction + */ + +wDictionary* Dictionary_New(BOOL synchronized) +{ + wDictionary* dictionary = NULL; + + dictionary = (wDictionary*) malloc(sizeof(wDictionary)); + + if (dictionary) + { + dictionary->synchronized = synchronized; + } + + return dictionary; +} + +void Dictionary_Free(wDictionary* dictionary) +{ + free(dictionary); +} + diff --git a/winpr/libwinpr/utils/collections/KeyValuePair.c b/winpr/libwinpr/utils/collections/KeyValuePair.c new file mode 100644 index 000000000..e584008a0 --- /dev/null +++ b/winpr/libwinpr/utils/collections/KeyValuePair.c @@ -0,0 +1,48 @@ +/** + * WinPR: Windows Portable Runtime + * System.Collections.Generic.KeyValuePair + * + * Copyright 2012 Marc-Andre Moreau + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include + +/** + * C equivalent of the C# KeyValuePair Structure: + * http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx + */ + +wKeyValuePair* KeyValuePair_New(void* key, void* value) +{ + wKeyValuePair* keyValuePair; + + keyValuePair = (wKeyValuePair*) malloc(sizeof(wKeyValuePair)); + + keyValuePair->key = key; + keyValuePair->value = value; + + return keyValuePair; +} + +void KeyValuePair_Free(wKeyValuePair* keyValuePair) +{ + free(keyValuePair); +} diff --git a/winpr/libwinpr/utils/collections/ListDictionary.c b/winpr/libwinpr/utils/collections/ListDictionary.c new file mode 100644 index 000000000..2216384a7 --- /dev/null +++ b/winpr/libwinpr/utils/collections/ListDictionary.c @@ -0,0 +1,133 @@ +/** + * WinPR: Windows Portable Runtime + * System.Collections.Specialized.ListDictionary + * + * Copyright 2012 Marc-Andre Moreau + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * C equivalent of the C# ListDictionary Class: + * http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary.aspx + */ + +/** + * Properties + */ + +/** + * Gets the number of key/value pairs contained in the ListDictionary. + */ + +int ListDictionary_Count(wListDictionary* listDictionary) +{ + return 0; +} + +/** + * Gets a value indicating whether the ListDictionary has a fixed size. + */ + +BOOL ListDictionary_IsFixedSized(wListDictionary* listDictionary) +{ + return FALSE; +} + +/** + * Gets a value indicating whether the ListDictionary is read-only. + */ + +BOOL ListDictionary_IsReadOnly(wListDictionary* listDictionary) +{ + return FALSE; +} + +/** + * Gets a value indicating whether the ListDictionary is synchronized (thread safe). + */ + +BOOL ListDictionary_IsSynchronized(wListDictionary* listDictionary) +{ + return listDictionary->synchronized; +} + +/** + * Methods + */ + +/** + * Adds an entry with the specified key and value into the ListDictionary. + */ + +void ListDictionary_Add(wListDictionary* listDictionary, void* key, void* value) +{ + +} + +/** + * Removes all entries from the ListDictionary. + */ + +void ListDictionary_Clear(wListDictionary* listDictionary) +{ + +} + +/** + * Determines whether the ListDictionary contains a specific key. + */ + +BOOL ListDictionary_Contains(wListDictionary* listDictionary, void* key) +{ + return FALSE; +} + +/** + * Removes the entry with the specified key from the ListDictionary. + */ + +void ListDictionary_Remove(wListDictionary* listDictionary, void* key) +{ + +} + +/** + * Construction, Destruction + */ + +wListDictionary* ListDictionary_New(BOOL synchronized) +{ + wListDictionary* listDictionary = NULL; + + listDictionary = (wListDictionary*) malloc(sizeof(wListDictionary)); + + if (listDictionary) + { + listDictionary->synchronized = synchronized; + } + + return listDictionary; +} + +void ListDictionary_Free(wListDictionary* listDictionary) +{ + free(listDictionary); +} +