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

Method insert

DEVELOPER/core/ID.cpp:577–643  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

575
576
577int
578ID::insert(int x)
579{
580 int middle = 0;
581 int left = 0;
582 int right = sz-1;
583 if (sz != 0) {
584 while (left <= right) {
585 middle = (left + right)/2;
586 double dataMiddle = data[middle];
587 if (x == dataMiddle)
588 return 1; // already there
589 else if (x > dataMiddle)
590 left = middle + 1;
591 else
592 right = middle-1;
593 }
594 }
595
596 // we need to enlarge the array .. see if we can do it
597 // without having to go get more space
598
599 middle = left;
600
601 /*
602 for (int i=middle; i<sz; i++)
603 (*this)[i+1] = (*this)[i];
604 (*this)[i]=middle;
605 return middle;
606 */
607
608 if (sz < arraySize) {
609
610 int i = sz;
611 while (i > middle) {
612 data[i] = data[i-1];
613 i--;
614 }
615 sz++;
616 data[i] = x;
617 return 0;
618 } else {
619 int newArraySize = (sz+1) * 2;
620 int *newData = new (nothrow) int[newArraySize];
621 if (newData != 0) {
622
623 // copy the old
624 for (int ii=0; ii<middle; ii++)
625 newData[ii] = data[ii];
626 newData[middle] = x;
627
628 for (int jj=middle; jj<sz; jj++)
629 newData[jj+1] = data[jj];
630
631 sz++;
632
633 if (data != 0 && fromFree == 0)
634 delete [] data;

Callers 4

addEdgeMethod · 0.45
addComponentMethod · 0.45
connectMethod · 0.45
buildEleGraphMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected