MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / resize

Method resize

DEVELOPER/core/ID.cpp:365–416  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

363
364
365int
366ID::resize(int newSize){
367
368 // first check that newSize is valid
369 if (newSize <= 0) {
370 opserr << "ID::resize() - size specified " << newSize << " <= 0\n";
371 return -1;
372 }
373
374
375 if (sz >= newSize) {
376
377 // is size smaller than current, simply reset sz
378 sz = newSize;
379
380 } else if (newSize <= arraySize) {
381
382 // see if we can just enlarge the array
383 // without having to go get more space
384
385 for (int i=sz; i<newSize; i++)
386 data[i] = 0;
387 sz = newSize;
388
389 } else if (newSize > arraySize) {
390
391 // otherwise we go get more space
392
393 int *newData = new (nothrow) int[newSize];
394 if (newData != 0) {
395 // copy the old
396 for (int i=0; i<sz; i++)
397 newData[i] = data[i];
398 // zero the new
399 for (int j=sz; j<newSize; j++)
400 newData[j] = 0;
401
402 sz = newSize;
403 // release the memory held by the old
404 // free((void *)data);
405 delete [] data;
406 data = newData;
407 arraySize = newSize;
408
409 } else {
410 opserr << "ID::resize() - out of memory creating ID of size " << newSize << "\n";
411 return -1;
412 }
413 }
414
415 return 0;
416}
417
418
419

Callers 5

OPS_NodeFunction · 0.45
getElementResponseMethod · 0.45
getRegionTagsMethod · 0.45
recvSelfMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected