/* @todo maybe it is better to combine chunk_get_next and chunk_get_prev * into a common function However this should be done with the preprocessor * to avoid addition check conditions that would be evaluated in the * while loop of the calling function */ chunk_t *chunk_get_next(chunk_t *cur, nav_t nav) { if (cur == NULL) { return(NULL); } chunk_t *pc = g_cl.GetNext(cur); if ((pc == NULL) || (nav == CNAV_ALL)) { return(pc); } if (cur->flags & PCF_IN_PREPROC) { /* If in a preproc, return NULL if trying to leave */ if ((pc->flags & PCF_IN_PREPROC) == 0) { return(NULL); } return(pc); } /* Not in a preproc, skip any preproc */ while ((pc != NULL) && (pc->flags & PCF_IN_PREPROC)) { pc = g_cl.GetNext(pc); } return(pc); }
/* @todo maybe it is better to combine chunk_get_next and chunk_get_prev * into a common function However this should be done with the preprocessor * to avoid addition check conditions that would be evaluated in the * while loop of the calling function */ chunk_t *chunk_get_next(chunk_t *cur, scope_e scope) { if (cur == nullptr) { return(nullptr); } chunk_t *pc = g_cl.GetNext(cur); if (pc == nullptr || scope == scope_e::ALL) { return(pc); } if (cur->flags & PCF_IN_PREPROC) { // If in a preproc, return nullptr if trying to leave if ((pc->flags & PCF_IN_PREPROC) == 0) { return(nullptr); } return(pc); } // Not in a preproc, skip any preproc while (pc != nullptr && (pc->flags & PCF_IN_PREPROC)) { pc = g_cl.GetNext(pc); } return(pc); }