Changeset 4a24650 in OpenModelica


Ignore:
Timestamp:
2022-05-18T09:38:16+02:00 (2 years ago)
Author:
GitHub <noreply@…>
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)
Message:

[janitor] Refactor listPop in list.c (#8964)

  • [janitor] Refactor listPop in list.c
  • Add function descriptions
Location:
OMCompiler/SimulationRuntime/c
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • OMCompiler/SimulationRuntime/c/simulation/solver/events.c

    re4b7953 r4a24650  
    355355  while(listLen(&tmpEventList) > 0)
    356356  {
    357     /* TODO do this directly w/o free-malloc */
    358357    long event_id = *((long*)listFirstData(&tmpEventList));
    359     listPopFront(&tmpEventList);
    360     listPushFront(eventList, &event_id);
    361 
     358    listPushFrontNodeNoCopy(eventList, listPopFrontNode(&tmpEventList));
    362359    infoStreamPrint(LOG_ZEROCROSSINGS, 0, "Event id: %ld", event_id);
    363360  }
  • OMCompiler/SimulationRuntime/c/simulation/solver/nonlinearValuesList.c

    r83be5f2b r4a24650  
    7575    {
    7676      elem = (VALUE*) listFirstData(tmpList->valueList);
    77       listPopFront(tmpList->valueList);
     77      listRemoveFront(tmpList->valueList);
    7878    }
    7979    freeList(tmpList->valueList);
  • OMCompiler/SimulationRuntime/c/simulation/solver/synchronous.c

    r30bf2469 r4a24650  
    292292    type = nextTimer->type;
    293293    activationTime = nextTimer->activationTime;
    294     listPopFront(data->simulationInfo->intvlTimers);
     294    listRemoveFront(data->simulationInfo->intvlTimers);
    295295    switch(type)
    296296    {
     
    375375    type = nextTimer->type;
    376376    activationTime = nextTimer->activationTime;
    377     listPopFront(data->simulationInfo->intvlTimers);
     377    listRemoveFront(data->simulationInfo->intvlTimers);
    378378    switch(type)
    379379    {
  • OMCompiler/SimulationRuntime/c/util/list.c

    rcaa3fcca r4a24650  
    4242
    4343
     44/**
     45 * @brief Allocates memory for a new empty list
     46 *
     47 * @param itemSize    Size of data
     48 * @return list       Pointer to list
     49 */
    4450LIST *allocList(unsigned int itemSize)
    4551{
     
    5561}
    5662
     63/**
     64 * @brief Frees list and everything inside it
     65 *
     66 * @param list    Pointer to list
     67 */
    5768void freeList(LIST *list)
    5869{
     
    6475}
    6576
     77/**
     78 * @brief Frees node and data inside node
     79 *
     80 * @param node    Pointer to node
     81 */
    6682void freeNode(LIST_NODE *node)
    6783{
     
    7086}
    7187
     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 */
    7294void listPushFront(LIST *list, const void *data)
    7395{
     
    90112}
    91113
     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 */
     120void 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 */
    92138void listPushBack(LIST *list, const void *data)
    93139{
     
    114160}
    115161
     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 */
    116169void listInsert(LIST *list, LIST_NODE* prevNode, const void *data)
    117170{
     
    131184}
    132185
     186/**
     187 * @brief Returns the length of list
     188 *
     189 * @param list    Pointer to list
     190 * @return        length of list
     191 */
    133192int listLen(LIST *list)
    134193{
     
    137196}
    138197
     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 */
    139204void *listFirstData(LIST *list)
    140205{
     
    144209}
    145210
     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 */
    146217void *listLastData(LIST *list)
    147218{
     
    151222}
    152223
    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 */
     230LIST_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 */
     249void listRemoveFront(LIST *list)
     250{
     251  assertStreamPrint(NULL, 0 != list, "invalid list-pointer");
     252  if(list->first)
    156253  {
    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;
    167261  }
    168262}
    169263
     264/**
     265 * @brief Frees all nodes and their data in list
     266 *
     267 * @param list    Pointer to list
     268 */
    170269void listClear(LIST *list)
    171270{
     
    188287}
    189288
     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 */
    190297void removeNodes(LIST* list, LIST_NODE *node)
    191298{
     
    199306}
    200307
     308/**
     309 * @brief Retruns first node of list
     310 *
     311 * @param list    Pointer to list
     312 * @return        Pointer to first node
     313 */
    201314LIST_NODE *listFirstNode(LIST *list)
    202315{
     
    206319}
    207320
     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 */
    208327LIST_NODE *listNextNode(LIST_NODE *node)
    209328{
     
    214333}
    215334
     335/**
     336 * @brief Returns node data
     337 *
     338 * @param node    Pointer to node
     339 * @return        Pointer to data
     340 */
    216341void *listNodeData(LIST_NODE *node)
    217342{
     
    221346}
    222347
     348/* not sure about this, looks dangerous */
    223349void updateNodeData(LIST *list, LIST_NODE *node, const void *data)
    224350{
     
    230356}
    231357
     358/* not sure about this, looks dangerous */
    232359LIST_NODE* updateNodeNext(LIST *list, LIST_NODE *node, LIST_NODE *newNext)
    233360{
     
    240367}
    241368
     369/* not sure about this, looks dangerous */
    242370void updatelistFirst(LIST* list, LIST_NODE *node)
    243371{
     
    247375}
    248376
     377/* not sure about this, looks dangerous */
    249378void updatelistLength(LIST* list, unsigned int newLength)
    250379{
  • OMCompiler/SimulationRuntime/c/util/list.h

    rcaa3fcca r4a24650  
    6161
    6262  void listPushFront(LIST *list, const void *data);
     63  void listPushFrontNodeNoCopy(LIST *list, LIST_NODE *node);
    6364  void listPushBack(LIST *list, const void *data);
    6465  void listInsert(LIST *list, LIST_NODE* prevNode, const void *data);
     
    6970  void *listLastData(LIST *list);
    7071
    71   void listPopFront(LIST *list);
     72  LIST_NODE *listPopFrontNode(LIST *list);
     73  void listRemoveFront(LIST *list);
    7274
    7375  void listClear(LIST *list);
Note: See TracChangeset for help on using the changeset viewer.