Changeset 4a24650 in OpenModelica
- Timestamp:
- 2022-05-18T09:38:16+02:00 (2 years ago)
- Branches:
- maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, maintenance/v1.23, master
- Children:
- 648929c, c8f0c9e
- Parents:
- d632ee4a
- git-author:
- phannebohm <phannebohm@…> (05/18/22 09:38:16)
- git-committer:
- GitHub <noreply@…> (05/18/22 09:38:16)
- Location:
- OMCompiler/SimulationRuntime/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
OMCompiler/SimulationRuntime/c/simulation/solver/events.c
re4b7953 r4a24650 355 355 while(listLen(&tmpEventList) > 0) 356 356 { 357 /* TODO do this directly w/o free-malloc */358 357 long event_id = *((long*)listFirstData(&tmpEventList)); 359 listPopFront(&tmpEventList); 360 listPushFront(eventList, &event_id); 361 358 listPushFrontNodeNoCopy(eventList, listPopFrontNode(&tmpEventList)); 362 359 infoStreamPrint(LOG_ZEROCROSSINGS, 0, "Event id: %ld", event_id); 363 360 } -
OMCompiler/SimulationRuntime/c/simulation/solver/nonlinearValuesList.c
r83be5f2b r4a24650 75 75 { 76 76 elem = (VALUE*) listFirstData(tmpList->valueList); 77 list PopFront(tmpList->valueList);77 listRemoveFront(tmpList->valueList); 78 78 } 79 79 freeList(tmpList->valueList); -
OMCompiler/SimulationRuntime/c/simulation/solver/synchronous.c
r30bf2469 r4a24650 292 292 type = nextTimer->type; 293 293 activationTime = nextTimer->activationTime; 294 list PopFront(data->simulationInfo->intvlTimers);294 listRemoveFront(data->simulationInfo->intvlTimers); 295 295 switch(type) 296 296 { … … 375 375 type = nextTimer->type; 376 376 activationTime = nextTimer->activationTime; 377 list PopFront(data->simulationInfo->intvlTimers);377 listRemoveFront(data->simulationInfo->intvlTimers); 378 378 switch(type) 379 379 { -
OMCompiler/SimulationRuntime/c/util/list.c
rcaa3fcca r4a24650 42 42 43 43 44 /** 45 * @brief Allocates memory for a new empty list 46 * 47 * @param itemSize Size of data 48 * @return list Pointer to list 49 */ 44 50 LIST *allocList(unsigned int itemSize) 45 51 { … … 55 61 } 56 62 63 /** 64 * @brief Frees list and everything inside it 65 * 66 * @param list Pointer to list 67 */ 57 68 void freeList(LIST *list) 58 69 { … … 64 75 } 65 76 77 /** 78 * @brief Frees node and data inside node 79 * 80 * @param node Pointer to node 81 */ 66 82 void freeNode(LIST_NODE *node) 67 83 { … … 70 86 } 71 87 88 /** 89 * @brief Copies data into new tmpNode and pushes tmpNode to the front of list 90 * 91 * @param list Pointer to list 92 * @param data Pointer to data (copied) 93 */ 72 94 void listPushFront(LIST *list, const void *data) 73 95 { … … 90 112 } 91 113 114 /** 115 * @brief Pushes node to the front of list 116 * 117 * @param list Pointer to list 118 * @param node Pointer to node (not copied) 119 */ 120 void listPushFrontNodeNoCopy(LIST *list, LIST_NODE *node) 121 { 122 assertStreamPrint(NULL, 0 != list, "invalid list-pointer"); 123 assertStreamPrint(NULL, 0 != node, "invalid list-node"); 124 125 node->next = list->first; 126 ++(list->length); 127 list->first = node; 128 if(!list->last) 129 list->last = list->first; 130 } 131 132 /** 133 * @brief Copies data into new tmpNode and pushes tmpNode to the back of list 134 * 135 * @param list Pointer to list 136 * @param data Pointer to data (copied) 137 */ 92 138 void listPushBack(LIST *list, const void *data) 93 139 { … … 114 160 } 115 161 162 /** 163 * @brief Copies data into new tmpNode and inserts tmpNode into list after prevNode 164 * 165 * @param list Pointer to list 166 * @param prevNode Pointer to previous node 167 * @param data Pointer to data (copied) 168 */ 116 169 void listInsert(LIST *list, LIST_NODE* prevNode, const void *data) 117 170 { … … 131 184 } 132 185 186 /** 187 * @brief Returns the length of list 188 * 189 * @param list Pointer to list 190 * @return length of list 191 */ 133 192 int listLen(LIST *list) 134 193 { … … 137 196 } 138 197 198 /** 199 * @brief Returns data of first node in list 200 * 201 * @param list Pointer to list 202 * @return Pointer to data of first node in list 203 */ 139 204 void *listFirstData(LIST *list) 140 205 { … … 144 209 } 145 210 211 /** 212 * @brief Returns data of last node in list 213 * 214 * @param list Pointer to list 215 * @return Pointer to data of last node in list 216 */ 146 217 void *listLastData(LIST *list) 147 218 { … … 151 222 } 152 223 153 void listPopFront(LIST *list) 154 { 155 if(list) 224 /** 225 * @brief Returns first node and pops node from list 226 * 227 * @param list Pointer to list 228 * @return node Pointer to node (must be freed by caller) 229 */ 230 LIST_NODE *listPopFrontNode(LIST *list) 231 { 232 assertStreamPrint(NULL, 0 != list, "invalid list-pointer"); 233 assertStreamPrint(NULL, 0 != list->first, "empty list"); 234 235 LIST_NODE *node = list->first; 236 list->first = node->next; 237 //node->next = NULL; 238 --(list->length); 239 if(!list->first) 240 list->last = list->first; 241 return node; 242 } 243 244 /** 245 * @brief Removes and frees first node from list 246 * 247 * @param list Pointer to list 248 */ 249 void listRemoveFront(LIST *list) 250 { 251 assertStreamPrint(NULL, 0 != list, "invalid list-pointer"); 252 if(list->first) 156 253 { 157 if(list->first) 158 { 159 LIST_NODE *tmpNode = list->first->next; 160 freeNode(list->first); 161 162 list->first = tmpNode; 163 --(list->length); 164 if(!list->first) 165 list->last = list->first; 166 } 254 LIST_NODE *tmpNode = list->first->next; 255 freeNode(list->first); 256 257 list->first = tmpNode; 258 --(list->length); 259 if(!list->first) 260 list->last = list->first; 167 261 } 168 262 } 169 263 264 /** 265 * @brief Frees all nodes and their data in list 266 * 267 * @param list Pointer to list 268 */ 170 269 void listClear(LIST *list) 171 270 { … … 188 287 } 189 288 289 /** 290 * @brief Removes and frees nodes from list starting from node 291 * 292 * used only in simulation/solver/nonlinearValuesList 293 * 294 * @param list Pointer to list 295 * @param node Pointer to node 296 */ 190 297 void removeNodes(LIST* list, LIST_NODE *node) 191 298 { … … 199 306 } 200 307 308 /** 309 * @brief Retruns first node of list 310 * 311 * @param list Pointer to list 312 * @return Pointer to first node 313 */ 201 314 LIST_NODE *listFirstNode(LIST *list) 202 315 { … … 206 319 } 207 320 321 /** 322 * @brief Returns next node after node (used for iterating over list) 323 * 324 * @param node Pointer to node 325 * @return Pointer to next node 326 */ 208 327 LIST_NODE *listNextNode(LIST_NODE *node) 209 328 { … … 214 333 } 215 334 335 /** 336 * @brief Returns node data 337 * 338 * @param node Pointer to node 339 * @return Pointer to data 340 */ 216 341 void *listNodeData(LIST_NODE *node) 217 342 { … … 221 346 } 222 347 348 /* not sure about this, looks dangerous */ 223 349 void updateNodeData(LIST *list, LIST_NODE *node, const void *data) 224 350 { … … 230 356 } 231 357 358 /* not sure about this, looks dangerous */ 232 359 LIST_NODE* updateNodeNext(LIST *list, LIST_NODE *node, LIST_NODE *newNext) 233 360 { … … 240 367 } 241 368 369 /* not sure about this, looks dangerous */ 242 370 void updatelistFirst(LIST* list, LIST_NODE *node) 243 371 { … … 247 375 } 248 376 377 /* not sure about this, looks dangerous */ 249 378 void updatelistLength(LIST* list, unsigned int newLength) 250 379 { -
OMCompiler/SimulationRuntime/c/util/list.h
rcaa3fcca r4a24650 61 61 62 62 void listPushFront(LIST *list, const void *data); 63 void listPushFrontNodeNoCopy(LIST *list, LIST_NODE *node); 63 64 void listPushBack(LIST *list, const void *data); 64 65 void listInsert(LIST *list, LIST_NODE* prevNode, const void *data); … … 69 70 void *listLastData(LIST *list); 70 71 71 void listPopFront(LIST *list); 72 LIST_NODE *listPopFrontNode(LIST *list); 73 void listRemoveFront(LIST *list); 72 74 73 75 void listClear(LIST *list);
Note: See TracChangeset
for help on using the changeset viewer.