Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of azure_c_shared_utility by
list.c@0:fa2de1b79154, 2016-04-08 (annotated)
- Committer:
- Azure.IoT Build
- Date:
- Fri Apr 08 12:01:36 2016 -0700
- Revision:
- 0:fa2de1b79154
- Child:
- 7:1af47e3a19b6
1.0.4
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Azure.IoT Build | 0:fa2de1b79154 | 1 | // Copyright (c) Microsoft. All rights reserved. |
| Azure.IoT Build | 0:fa2de1b79154 | 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. |
| Azure.IoT Build | 0:fa2de1b79154 | 3 | |
| Azure.IoT Build | 0:fa2de1b79154 | 4 | #include <stdlib.h> |
| Azure.IoT Build | 0:fa2de1b79154 | 5 | #ifdef _CRTDBG_MAP_ALLOC |
| Azure.IoT Build | 0:fa2de1b79154 | 6 | #include <crtdbg.h> |
| Azure.IoT Build | 0:fa2de1b79154 | 7 | #endif |
| Azure.IoT Build | 0:fa2de1b79154 | 8 | #include <stdbool.h> |
| Azure.IoT Build | 0:fa2de1b79154 | 9 | |
| Azure.IoT Build | 0:fa2de1b79154 | 10 | #include "azure_c_shared_utility/gballoc.h" |
| Azure.IoT Build | 0:fa2de1b79154 | 11 | #include "azure_c_shared_utility/list.h" |
| Azure.IoT Build | 0:fa2de1b79154 | 12 | |
| Azure.IoT Build | 0:fa2de1b79154 | 13 | typedef struct LIST_ITEM_INSTANCE_TAG |
| Azure.IoT Build | 0:fa2de1b79154 | 14 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 15 | const void* item; |
| Azure.IoT Build | 0:fa2de1b79154 | 16 | void* next; |
| Azure.IoT Build | 0:fa2de1b79154 | 17 | } LIST_ITEM_INSTANCE; |
| Azure.IoT Build | 0:fa2de1b79154 | 18 | |
| Azure.IoT Build | 0:fa2de1b79154 | 19 | typedef struct LIST_INSTANCE_TAG |
| Azure.IoT Build | 0:fa2de1b79154 | 20 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 21 | LIST_ITEM_INSTANCE* head; |
| Azure.IoT Build | 0:fa2de1b79154 | 22 | } LIST_INSTANCE; |
| Azure.IoT Build | 0:fa2de1b79154 | 23 | |
| Azure.IoT Build | 0:fa2de1b79154 | 24 | LIST_HANDLE list_create(void) |
| Azure.IoT Build | 0:fa2de1b79154 | 25 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 26 | LIST_INSTANCE* result; |
| Azure.IoT Build | 0:fa2de1b79154 | 27 | |
| Azure.IoT Build | 0:fa2de1b79154 | 28 | /* Codes_SRS_LIST_01_001: [list_create shall create a new list and return a non-NULL handle on success.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 29 | result = (LIST_INSTANCE*)malloc(sizeof(LIST_INSTANCE)); |
| Azure.IoT Build | 0:fa2de1b79154 | 30 | if (result != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 31 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 32 | /* Codes_SRS_LIST_01_002: [If any error occurs during the list creation, list_create shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 33 | result->head = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 34 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 35 | |
| Azure.IoT Build | 0:fa2de1b79154 | 36 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 37 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 38 | |
| Azure.IoT Build | 0:fa2de1b79154 | 39 | void list_destroy(LIST_HANDLE list) |
| Azure.IoT Build | 0:fa2de1b79154 | 40 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 41 | /* Codes_SRS_LIST_01_004: [If the list argument is NULL, no freeing of resources shall occur.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 42 | if (list != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 43 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 44 | LIST_INSTANCE* list_instance = (LIST_INSTANCE*)list; |
| Azure.IoT Build | 0:fa2de1b79154 | 45 | |
| Azure.IoT Build | 0:fa2de1b79154 | 46 | while (list_instance->head != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 47 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 48 | LIST_ITEM_INSTANCE* current_item = list_instance->head; |
| Azure.IoT Build | 0:fa2de1b79154 | 49 | list_instance->head = current_item->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 50 | free(current_item); |
| Azure.IoT Build | 0:fa2de1b79154 | 51 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 52 | |
| Azure.IoT Build | 0:fa2de1b79154 | 53 | /* Codes_SRS_LIST_01_003: [list_destroy shall free all resources associated with the list identified by the handle argument.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 54 | free(list_instance); |
| Azure.IoT Build | 0:fa2de1b79154 | 55 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 56 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 57 | |
| Azure.IoT Build | 0:fa2de1b79154 | 58 | LIST_ITEM_HANDLE list_add(LIST_HANDLE list, const void* item) |
| Azure.IoT Build | 0:fa2de1b79154 | 59 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 60 | LIST_ITEM_INSTANCE* result; |
| Azure.IoT Build | 0:fa2de1b79154 | 61 | |
| Azure.IoT Build | 0:fa2de1b79154 | 62 | /* Codes_SRS_LIST_01_006: [If any of the arguments is NULL, list_add shall not add the item to the list and return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 63 | if ((list == NULL) || |
| Azure.IoT Build | 0:fa2de1b79154 | 64 | (item == NULL)) |
| Azure.IoT Build | 0:fa2de1b79154 | 65 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 66 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 67 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 68 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 69 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 70 | LIST_INSTANCE* list_instance = (LIST_INSTANCE*)list; |
| Azure.IoT Build | 0:fa2de1b79154 | 71 | result = (LIST_ITEM_INSTANCE*)malloc(sizeof(LIST_ITEM_INSTANCE)); |
| Azure.IoT Build | 0:fa2de1b79154 | 72 | |
| Azure.IoT Build | 0:fa2de1b79154 | 73 | if (result == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 74 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 75 | /* Codes_SRS_LIST_01_007: [If allocating the new list node fails, list_add shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 76 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 77 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 78 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 79 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 80 | /* Codes_SRS_LIST_01_005: [list_add shall add one item to the tail of the list and on success it shall return a handle to the added item.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 81 | result->next = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 82 | result->item = item; |
| Azure.IoT Build | 0:fa2de1b79154 | 83 | |
| Azure.IoT Build | 0:fa2de1b79154 | 84 | if (list_instance->head == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 85 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 86 | list_instance->head = result; |
| Azure.IoT Build | 0:fa2de1b79154 | 87 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 88 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 89 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 90 | LIST_ITEM_INSTANCE* current = list_instance->head; |
| Azure.IoT Build | 0:fa2de1b79154 | 91 | while (current->next != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 92 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 93 | current = current->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 94 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 95 | |
| Azure.IoT Build | 0:fa2de1b79154 | 96 | current->next = result; |
| Azure.IoT Build | 0:fa2de1b79154 | 97 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 98 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 99 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 100 | |
| Azure.IoT Build | 0:fa2de1b79154 | 101 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 102 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 103 | |
| Azure.IoT Build | 0:fa2de1b79154 | 104 | int list_remove(LIST_HANDLE list, LIST_ITEM_HANDLE item) |
| Azure.IoT Build | 0:fa2de1b79154 | 105 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 106 | int result; |
| Azure.IoT Build | 0:fa2de1b79154 | 107 | |
| Azure.IoT Build | 0:fa2de1b79154 | 108 | /* Codes_SRS_LIST_01_024: [If any of the arguments list or item_handle is NULL, list_remove shall fail and return a non-zero value.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 109 | if ((list == NULL) || |
| Azure.IoT Build | 0:fa2de1b79154 | 110 | (item == NULL)) |
| Azure.IoT Build | 0:fa2de1b79154 | 111 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 112 | result = __LINE__; |
| Azure.IoT Build | 0:fa2de1b79154 | 113 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 114 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 115 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 116 | LIST_INSTANCE* list_instance = (LIST_INSTANCE*)list; |
| Azure.IoT Build | 0:fa2de1b79154 | 117 | LIST_ITEM_INSTANCE* current_item = list_instance->head; |
| Azure.IoT Build | 0:fa2de1b79154 | 118 | LIST_ITEM_INSTANCE* previous_item = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 119 | |
| Azure.IoT Build | 0:fa2de1b79154 | 120 | while (current_item != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 121 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 122 | if (current_item == item) |
| Azure.IoT Build | 0:fa2de1b79154 | 123 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 124 | if (previous_item != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 125 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 126 | previous_item->next = current_item->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 127 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 128 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 129 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 130 | list_instance->head = current_item->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 131 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 132 | |
| Azure.IoT Build | 0:fa2de1b79154 | 133 | free(current_item); |
| Azure.IoT Build | 0:fa2de1b79154 | 134 | |
| Azure.IoT Build | 0:fa2de1b79154 | 135 | break; |
| Azure.IoT Build | 0:fa2de1b79154 | 136 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 137 | previous_item = current_item; |
| Azure.IoT Build | 0:fa2de1b79154 | 138 | current_item = current_item->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 139 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 140 | |
| Azure.IoT Build | 0:fa2de1b79154 | 141 | if (current_item == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 142 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 143 | /* Codes_SRS_LIST_01_025: [If the item item_handle is not found in the list, then list_remove shall fail and return a non-zero value.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 144 | result = __LINE__; |
| Azure.IoT Build | 0:fa2de1b79154 | 145 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 146 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 147 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 148 | /* Codes_SRS_LIST_01_023: [list_remove shall remove a list item from the list and on success it shall return 0.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 149 | result = 0; |
| Azure.IoT Build | 0:fa2de1b79154 | 150 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 151 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 152 | |
| Azure.IoT Build | 0:fa2de1b79154 | 153 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 154 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 155 | |
| Azure.IoT Build | 0:fa2de1b79154 | 156 | LIST_ITEM_HANDLE list_get_head_item(LIST_HANDLE list) |
| Azure.IoT Build | 0:fa2de1b79154 | 157 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 158 | LIST_ITEM_HANDLE result; |
| Azure.IoT Build | 0:fa2de1b79154 | 159 | |
| Azure.IoT Build | 0:fa2de1b79154 | 160 | if (list == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 161 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 162 | /* Codes_SRS_LIST_01_009: [If the list argument is NULL, list_get_head_item shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 163 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 164 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 165 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 166 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 167 | LIST_INSTANCE* list_instance = (LIST_INSTANCE*)list; |
| Azure.IoT Build | 0:fa2de1b79154 | 168 | |
| Azure.IoT Build | 0:fa2de1b79154 | 169 | /* Codes_SRS_LIST_01_008: [list_get_head_item shall return the head of the list.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 170 | /* Codes_SRS_LIST_01_010: [If the list is empty, list_get_head_item_shall_return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 171 | result = list_instance->head; |
| Azure.IoT Build | 0:fa2de1b79154 | 172 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 173 | |
| Azure.IoT Build | 0:fa2de1b79154 | 174 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 175 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 176 | |
| Azure.IoT Build | 0:fa2de1b79154 | 177 | LIST_ITEM_HANDLE list_get_next_item(LIST_ITEM_HANDLE item_handle) |
| Azure.IoT Build | 0:fa2de1b79154 | 178 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 179 | LIST_ITEM_HANDLE result; |
| Azure.IoT Build | 0:fa2de1b79154 | 180 | |
| Azure.IoT Build | 0:fa2de1b79154 | 181 | if (item_handle == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 182 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 183 | /* Codes_SRS_LIST_01_019: [If item_handle is NULL then list_get_next_item shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 184 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 185 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 186 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 187 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 188 | /* Codes_SRS_LIST_01_018: [list_get_next_item shall return the next item in the list following the item item_handle.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 189 | result = ((LIST_ITEM_INSTANCE*)item_handle)->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 190 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 191 | |
| Azure.IoT Build | 0:fa2de1b79154 | 192 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 193 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 194 | |
| Azure.IoT Build | 0:fa2de1b79154 | 195 | const void* list_item_get_value(LIST_ITEM_HANDLE item_handle) |
| Azure.IoT Build | 0:fa2de1b79154 | 196 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 197 | const void* result; |
| Azure.IoT Build | 0:fa2de1b79154 | 198 | |
| Azure.IoT Build | 0:fa2de1b79154 | 199 | if (item_handle == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 200 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 201 | /* Codes_SRS_LIST_01_021: [If item_handle is NULL, list_item_get_value shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 202 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 203 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 204 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 205 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 206 | /* Codes_SRS_LIST_01_020: [list_item_get_value shall return the value associated with the list item identified by the item_handle argument.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 207 | result = ((LIST_ITEM_INSTANCE*)item_handle)->item; |
| Azure.IoT Build | 0:fa2de1b79154 | 208 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 209 | |
| Azure.IoT Build | 0:fa2de1b79154 | 210 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 211 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 212 | |
| Azure.IoT Build | 0:fa2de1b79154 | 213 | LIST_ITEM_HANDLE list_find(LIST_HANDLE list, LIST_MATCH_FUNCTION match_function, const void* match_context) |
| Azure.IoT Build | 0:fa2de1b79154 | 214 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 215 | LIST_ITEM_HANDLE result; |
| Azure.IoT Build | 0:fa2de1b79154 | 216 | |
| Azure.IoT Build | 0:fa2de1b79154 | 217 | if ((list == NULL) || |
| Azure.IoT Build | 0:fa2de1b79154 | 218 | (match_function == NULL)) |
| Azure.IoT Build | 0:fa2de1b79154 | 219 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 220 | /* Codes_SRS_LIST_01_012: [If the list or the match_function argument is NULL, list_find shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 221 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 222 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 223 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 224 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 225 | LIST_INSTANCE* list_instance = (LIST_INSTANCE*)list; |
| Azure.IoT Build | 0:fa2de1b79154 | 226 | LIST_ITEM_INSTANCE* current = list_instance->head; |
| Azure.IoT Build | 0:fa2de1b79154 | 227 | |
| Azure.IoT Build | 0:fa2de1b79154 | 228 | /* Codes_SRS_LIST_01_011: [list_find shall iterate through all items in a list and return the first one that satisfies a certain match function.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 229 | while (current != NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 230 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 231 | /* Codes_SRS_LIST_01_014: [list find shall determine whether an item satisfies the match criteria by invoking the match function for each item in the list until a matching item is found.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 232 | /* Codes_SRS_LIST_01_013: [The match_function shall get as arguments the list item being attempted to be matched and the match_context as is.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 233 | if (match_function((LIST_ITEM_HANDLE)current, match_context) == true) |
| Azure.IoT Build | 0:fa2de1b79154 | 234 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 235 | /* Codes_SRS_LIST_01_017: [If the match function returns true, list_find shall consider that item as matching.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 236 | break; |
| Azure.IoT Build | 0:fa2de1b79154 | 237 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 238 | |
| Azure.IoT Build | 0:fa2de1b79154 | 239 | /* Codes_SRS_LIST_01_016: [If the match function returns false, list_find shall consider that item as not matching.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 240 | current = current->next; |
| Azure.IoT Build | 0:fa2de1b79154 | 241 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 242 | |
| Azure.IoT Build | 0:fa2de1b79154 | 243 | if (current == NULL) |
| Azure.IoT Build | 0:fa2de1b79154 | 244 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 245 | /* Codes_SRS_LIST_01_015: [If the list is empty, list_find shall return NULL.] */ |
| Azure.IoT Build | 0:fa2de1b79154 | 246 | result = NULL; |
| Azure.IoT Build | 0:fa2de1b79154 | 247 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 248 | else |
| Azure.IoT Build | 0:fa2de1b79154 | 249 | { |
| Azure.IoT Build | 0:fa2de1b79154 | 250 | result = current; |
| Azure.IoT Build | 0:fa2de1b79154 | 251 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 252 | } |
| Azure.IoT Build | 0:fa2de1b79154 | 253 | |
| Azure.IoT Build | 0:fa2de1b79154 | 254 | return result; |
| Azure.IoT Build | 0:fa2de1b79154 | 255 | } |
