| 1216 | } |
| 1217 | |
| 1218 | XN_C_API XnStatus xnNodeInfoListRemove(XnNodeInfoList* pList, XnNodeInfoListIterator it) |
| 1219 | { |
| 1220 | XN_VALIDATE_INPUT_PTR(pList); |
| 1221 | XN_VALIDATE_INPUT_PTR(it.pCurrent); |
| 1222 | |
| 1223 | XnNodeInfoListNode* pPrev = it.pCurrent->pPrev; |
| 1224 | XnNodeInfoListNode* pNext = it.pCurrent->pNext; |
| 1225 | |
| 1226 | // connect previous and next elements |
| 1227 | if (pPrev == NULL) |
| 1228 | { |
| 1229 | pList->pFirst = pNext; |
| 1230 | } |
| 1231 | else |
| 1232 | { |
| 1233 | pPrev->pNext = pNext; |
| 1234 | } |
| 1235 | |
| 1236 | if (pNext == NULL) |
| 1237 | { |
| 1238 | pList->pLast = pPrev; |
| 1239 | } |
| 1240 | else |
| 1241 | { |
| 1242 | pNext->pPrev = pPrev; |
| 1243 | } |
| 1244 | |
| 1245 | // free it |
| 1246 | it.pCurrent->pPrev = NULL; |
| 1247 | it.pCurrent->pNext = NULL; |
| 1248 | xnNodeInfoFree(it.pCurrent->pCurrent); |
| 1249 | xnOSFree(it.pCurrent); |
| 1250 | |
| 1251 | return (XN_STATUS_OK); |
| 1252 | } |
| 1253 | |
| 1254 | XN_C_API XnStatus xnNodeInfoListClear(XnNodeInfoList* pList) |
| 1255 | { |
no test coverage detected