Lines Matching refs:chunk
38 …ErrorCode PetscChunkBufferCreateChunk(PetscChunkBuffer *buffer, PetscCount size, PetscChunk *chunk) in PetscChunkBufferCreateChunk() argument
51 chunk->start = buffer->size * buffer->unitbytes; in PetscChunkBufferCreateChunk()
52 chunk->size = size; in PetscChunkBufferCreateChunk()
53 chunk->reserved = size; in PetscChunkBufferCreateChunk()
58 …rrorCode PetscChunkBufferEnlargeChunk(PetscChunkBuffer *buffer, PetscCount size, PetscChunk *chunk) in PetscChunkBufferEnlargeChunk() argument
63 if (chunk->size + size > chunk->reserved) { in PetscChunkBufferEnlargeChunk()
65 PetscCount reserved = chunk->size; in PetscChunkBufferEnlargeChunk()
68 while (reserved < chunk->size + size) reserved *= 2; in PetscChunkBufferEnlargeChunk()
70 newchunk.size = chunk->size + size; in PetscChunkBufferEnlargeChunk()
71 …PetscCall(PetscMemcpy(&buffer->array[newchunk.start], &buffer->array[chunk->start], chunk->size * … in PetscChunkBufferEnlargeChunk()
72 *chunk = newchunk; in PetscChunkBufferEnlargeChunk()
74 chunk->size += siz; in PetscChunkBufferEnlargeChunk()
104 PetscChunk chunk; in PetscWeakFormGetFunction_Private() local
111 PetscCall(PetscHMapFormGet(ht, key, &chunk)); in PetscWeakFormGetFunction_Private()
112 if (chunk.size < 0) { in PetscWeakFormGetFunction_Private()
116 PetscCall(PetscIntCast(chunk.size, n)); in PetscWeakFormGetFunction_Private()
117 *func = (PetscVoidFn **)&wf->funcs->array[chunk.start]; in PetscWeakFormGetFunction_Private()
126 PetscChunk chunk; in PetscWeakFormSetFunction_Private() local
137 } else PetscCall(PetscHMapFormGet(ht, key, &chunk)); in PetscWeakFormSetFunction_Private()
138 if (chunk.size < 0) { in PetscWeakFormSetFunction_Private()
139 PetscCall(PetscChunkBufferCreateChunk(wf->funcs, n, &chunk)); in PetscWeakFormSetFunction_Private()
140 PetscCall(PetscHMapFormSet(ht, key, chunk)); in PetscWeakFormSetFunction_Private()
141 } else if (chunk.size <= n) { in PetscWeakFormSetFunction_Private()
142 PetscCall(PetscChunkBufferEnlargeChunk(wf->funcs, n - chunk.size, &chunk)); in PetscWeakFormSetFunction_Private()
143 PetscCall(PetscHMapFormSet(ht, key, chunk)); in PetscWeakFormSetFunction_Private()
145 for (i = 0; i < n; ++i) ((PetscVoidFn **)&wf->funcs->array[chunk.start])[i] = func[i]; in PetscWeakFormSetFunction_Private()
152 PetscChunk chunk; in PetscWeakFormAddFunction_Private() local
160 PetscCall(PetscHMapFormGet(ht, key, &chunk)); in PetscWeakFormAddFunction_Private()
161 if (chunk.size < 0) { in PetscWeakFormAddFunction_Private()
162 PetscCall(PetscChunkBufferCreateChunk(wf->funcs, 1, &chunk)); in PetscWeakFormAddFunction_Private()
163 PetscCall(PetscHMapFormSet(ht, key, chunk)); in PetscWeakFormAddFunction_Private()
164 ((PetscVoidFn **)&wf->funcs->array[chunk.start])[0] = func; in PetscWeakFormAddFunction_Private()
166 PetscCall(PetscChunkBufferEnlargeChunk(wf->funcs, 1, &chunk)); in PetscWeakFormAddFunction_Private()
167 PetscCall(PetscHMapFormSet(ht, key, chunk)); in PetscWeakFormAddFunction_Private()
168 ((PetscVoidFn **)&wf->funcs->array[chunk.start])[chunk.size - 1] = func; in PetscWeakFormAddFunction_Private()
176 PetscChunk chunk; in PetscWeakFormGetIndexFunction_Private() local
183 PetscCall(PetscHMapFormGet(ht, key, &chunk)); in PetscWeakFormGetIndexFunction_Private()
184 if (chunk.size < 0) { in PetscWeakFormGetIndexFunction_Private()
187 …scCheck(ind < chunk.size, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Index %" PetscInt_FMT " not … in PetscWeakFormGetIndexFunction_Private()
188 *func = ((PetscVoidFn **)&wf->funcs->array[chunk.start])[ind]; in PetscWeakFormGetIndexFunction_Private()
197 PetscChunk chunk; in PetscWeakFormSetIndexFunction_Private() local
205 PetscCall(PetscHMapFormGet(ht, key, &chunk)); in PetscWeakFormSetIndexFunction_Private()
206 if (chunk.size < 0) { in PetscWeakFormSetIndexFunction_Private()
207 PetscCall(PetscChunkBufferCreateChunk(wf->funcs, ind + 1, &chunk)); in PetscWeakFormSetIndexFunction_Private()
208 PetscCall(PetscHMapFormSet(ht, key, chunk)); in PetscWeakFormSetIndexFunction_Private()
209 } else if (chunk.size <= ind) { in PetscWeakFormSetIndexFunction_Private()
210 PetscCall(PetscChunkBufferEnlargeChunk(wf->funcs, ind - chunk.size + 1, &chunk)); in PetscWeakFormSetIndexFunction_Private()
211 PetscCall(PetscHMapFormSet(ht, key, chunk)); in PetscWeakFormSetIndexFunction_Private()
213 ((PetscVoidFn **)&wf->funcs->array[chunk.start])[ind] = func; in PetscWeakFormSetIndexFunction_Private()
220 PetscChunk chunk; in PetscWeakFormClearIndexFunction_Private() local
227 PetscCall(PetscHMapFormGet(ht, key, &chunk)); in PetscWeakFormClearIndexFunction_Private()
228 if (chunk.size < 0) { in PetscWeakFormClearIndexFunction_Private()
230 } else if (!ind && chunk.size == 1) { in PetscWeakFormClearIndexFunction_Private()
233 } else if (chunk.size <= ind) { in PetscWeakFormClearIndexFunction_Private()
236 ((PetscVoidFn **)&wf->funcs->array[chunk.start])[ind] = NULL; in PetscWeakFormClearIndexFunction_Private()