void StringsListEdit (void) { STRING *p, *q; AGAIN_P: for (p = pStringsList; p != NULL; p = p -> pNext) { if(p->nUserNum != IS_IN_TABLE) { if (p -> nRecognized == 0 && p -> yBottom - p -> yTop + 1 < pCurrentBlock -> nAverageHeight) { if (p == pStringsList) { StringRemove (p); goto AGAIN_P; } else if (p == pStringsListEnd) { StringRemove (p); break; } else { p = p -> pPrev; StringRemove (p -> pNext); } } } AGAIN_Q: for (q = p -> pNext; q != NULL; q = q -> pNext) { if (StringIncludes (p, q)) { if (q -> xLeft < p -> xLeft) p -> xLeft = q -> xLeft; if (q -> xRight > q -> xRight) p -> xRight = q -> xRight; StringRemove (q); goto AGAIN_Q; } } } }
void StringsRemoveTrash (void) { STRING *pString; STRING *pNext; pString = pStringsList; while (pString != NULL) { pNext = pString -> pNext; if (StringIsTrash (pString)) StringRemove (pString); pString = pNext; } }
strresult_t StringNRemove(string_t * ap_this, u32_t a_at, u32_t a_size) { return StringRemove(ap_this,a_at,a_at+a_size-1); }