3807 |
* @throws gig::Exception if requested zone could not be deleted |
* @throws gig::Exception if requested zone could not be deleted |
3808 |
*/ |
*/ |
3809 |
void Region::DeleteDimensionZone(dimension_t type, int zone) { |
void Region::DeleteDimensionZone(dimension_t type, int zone) { |
3810 |
|
if (!Dimensions) |
3811 |
|
throw gig::Exception("Could not delete dimension zone, because there is no dimension at all."); |
3812 |
dimension_def_t* oldDef = GetDimensionDefinition(type); |
dimension_def_t* oldDef = GetDimensionDefinition(type); |
3813 |
if (!oldDef) |
if (!oldDef) |
3814 |
throw gig::Exception("Could not delete dimension zone, no such dimension of given type"); |
throw gig::Exception("Could not delete dimension zone, no such dimension of given type"); |
3837 |
// requested by the arguments of this method call) to the temporary |
// requested by the arguments of this method call) to the temporary |
3838 |
// region, and don't use Region::CopyAssign() here for this task, since |
// region, and don't use Region::CopyAssign() here for this task, since |
3839 |
// it would also alter fast lookup helper variables here and there |
// it would also alter fast lookup helper variables here and there |
3840 |
dimension_def_t newDef; |
dimension_def_t newDef = {}; |
3841 |
for (int i = 0; i < Dimensions; ++i) { |
for (int i = 0; i < Dimensions; ++i) { |
3842 |
dimension_def_t def = pDimensionDefinitions[i]; // copy, don't reference |
dimension_def_t def = pDimensionDefinitions[i]; // copy, don't reference |
3843 |
// is this the dimension requested by the method arguments? ... |
// is this the dimension requested by the method arguments? ... |
3848 |
} |
} |
3849 |
tempRgn->AddDimension(&def); |
tempRgn->AddDimension(&def); |
3850 |
} |
} |
3851 |
|
// silence clang sanitizer warning |
3852 |
|
if (newDef.dimension == dimension_none) |
3853 |
|
throw gig::Exception("Unexpected internal failure resolving dimension in DeleteDimensionZone() [this is a bug]."); |
3854 |
|
|
3855 |
// find the dimension index in the tempRegion which is the dimension |
// find the dimension index in the tempRegion which is the dimension |
3856 |
// type passed to this method (paranoidly expecting different order) |
// type passed to this method (paranoidly expecting different order) |