int Position (const INDEX_2 & ind) const { int i = HashValue(ind); while (1) { if (hash.Get(i) == ind) return i; if (hash.Get(i).I1() == invalid) return 0; i++; if (i > hash.Size()) i = 1; } }
// returns 1, if new postion is created int PositionCreate (const INDEX_2 & ind, int & apos) { int i = HashValue (ind); if (hash.Get(i) == ind) { apos = i; return 0; } if (hash.Get(i).I1() == invalid) { hash.Elem(i) = ind; apos = i; return 1; } return PositionCreate2 (ind, apos); }
void GetSurface2VolumeElement (int selnr, int & elnr1, int & elnr2) const { elnr1 = surf2volelement.Get(selnr)[0]; elnr2 = surf2volelement.Get(selnr)[1]; }
void GetSegmentEdge (int segnr, int & enr, int & orient) const { enr = abs(segedges.Get(segnr)); orient = segedges.Get(segnr) > 0 ? 1 : -1; }
const T & GetData (int pos) { return cont.Get(pos); }
int UsedPos (int pos) const { return ! (hash.Get(pos).I1() == invalid); }
void GetData (int pos, T & acont) const { acont = cont.Get(pos); }
void GetData (int pos, INDEX & ahash, T & acont) const { ahash = hash.Get(pos); acont = cont.Get(pos); }
const T & Get (const INDEX & ahash) const { int pos = Position (ahash); return cont.Get(pos); }