Lines Matching defs:pvec

127 #define VEC_EXPAND(pvec) vecExpand(&(pvec)->mcCapacity, &(pvec)->mpvaElements, \
128 (pvec)->mcbElement)
131 DECLINLINE(void) vecClearObj(VECTOR_OBJ *pvec)
135 for (i = 0; i < pvec->mcElements; ++i)
136 pvec->mpfnCleanup(VEC_GET_ELEMENT_OBJ(pvec->mpvaElements,
137 pvec->mcbElement, i));
138 pvec->mcElements = 0;
142 DECLINLINE(void) vecClearPtr(VECTOR_PTR *pvec)
146 for (i = 0; i < pvec->mcElements; ++i)
147 pvec->mpfnCleanup(VEC_GET_ELEMENT_PTR(pvec->mpvaElements, i));
148 pvec->mcElements = 0;
152 DECLINLINE(void) vecCleanupObj(VECTOR_OBJ *pvec)
154 vecClearObj(pvec);
155 RTMemFree(pvec->mpvaElements);
156 pvec->mpvaElements = NULL;
160 DECLINLINE(void) vecCleanupPtr(VECTOR_PTR *pvec)
162 vecClearPtr(pvec);
163 RTMemFree(pvec->mpvaElements);
164 pvec->mpvaElements = NULL;
168 #define VEC_INIT(pvec, cbElement, uTypeHash, pfnCleanup) \
169 pvec->mcElements = pvec->mcCapacity = 0; \
170 pvec->mcbElement = cbElement; \
171 pvec->muTypeHash = uTypeHash; \
172 pvec->mpfnCleanup = pfnCleanup ? pfnCleanup : vecNoCleanup; \
173 pvec->mpvaElements = NULL;
176 DECLINLINE(void) vecInitObj(VECTOR_OBJ *pvec, size_t cbElement,
179 VEC_INIT(pvec, cbElement, uTypeHash, pfnCleanup)
183 DECLINLINE(void) vecInitPtr(VECTOR_PTR *pvec, size_t cbElement,
186 VEC_INIT(pvec, cbElement, uTypeHash, pfnCleanup)
190 DECLINLINE(int) vecPushBackObj(VECTOR_OBJ *pvec, unsigned uTypeHash,
194 AssertReturn(pvec->muTypeHash == uTypeHash, VERR_INVALID_PARAMETER);
195 if ( pvec->mcElements == pvec->mcCapacity
196 && RT_FAILURE((rc2 = VEC_EXPAND(pvec))))
198 memcpy(VEC_GET_ELEMENT_OBJ(pvec->mpvaElements, pvec->mcbElement,
199 pvec->mcElements), pvElement, pvec->mcbElement);
200 ++pvec->mcElements;
205 DECLINLINE(int) vecPushBackPtr(VECTOR_PTR *pvec, unsigned uTypeHash,
209 AssertReturn(pvec->muTypeHash == uTypeHash, VERR_INVALID_PARAMETER);
210 if ( pvec->mcElements == pvec->mcCapacity
211 && RT_FAILURE((rc2 = VEC_EXPAND(pvec))))
213 VEC_GET_ELEMENT_PTR(pvec->mpvaElements, pvec->mcElements) = pv;
214 ++pvec->mcElements;
224 * @param pvec pointer to an uninitialised vector structure
232 #define VEC_INIT_OBJ(pvec, type, pfnCleanup) \
233 vecInitObj(pvec, sizeof(type), VECTOR_TOKEN_HASH(type), \
238 * @param pvec pointer to an uninitialised vector structure
246 #define VEC_INIT_PTR(pvec, type, pfnCleanup) \
247 vecInitPtr(pvec, sizeof(type), VECTOR_TOKEN_HASH(type), \
252 * @param pvec pointer to the vector to clean up. The clean up function
261 * @param pvec pointer to the vector to clean up. The clean up function
270 * @param pvec pointer to the vector to re-initialise. The clean up function
278 * @param pvec pointer to the vector to re-initialise. The clean up function
291 * @param pvec pointer to the vector on to which the element should be
297 #define VEC_PUSH_BACK_OBJ(pvec, type, pvElement) \
298 vecPushBackObj(pvec, VECTOR_TOKEN_HASH(type), \
308 * @param pvec pointer to the vector on to which the element should be
314 #define VEC_PUSH_BACK_PTR(pvec, type, pvElement) \
315 vecPushBackPtr(pvec, VECTOR_TOKEN_HASH(type), \
320 * @param pvec pointer to the vector.
322 #define VEC_SIZE_OBJ(pvec) (pvec)->mcElements
326 * @param pvec pointer to the vector.
335 * @param pvec pointer to the vector to be iterated over
342 #define VEC_FOR_EACH(pvec, type, pIterator) \
343 for (pIterator = (type *) (pvec)->mpvaElements; \
344 (pvec)->muTypeHash == VECTOR_TOKEN_HASH(type) \
345 && pIterator < (type *) (pvec)->mpvaElements + (pvec)->mcElements; \