Reduce scope of explicit instantiations
This commit is contained in:
parent
967edd7ccc
commit
e4ce907c1d
|
@ -102,11 +102,48 @@ valptridx<trigger>::array_managed_type Triggers;
|
||||||
valptridx<wall>::array_managed_type Walls;
|
valptridx<wall>::array_managed_type Walls;
|
||||||
}
|
}
|
||||||
|
|
||||||
template class valptridx<active_door>;
|
/*
|
||||||
#if defined(DXX_BUILD_DESCENT_II)
|
* If not specified otherwise by the user, enable full instantiation if
|
||||||
template class valptridx<cloaking_wall>;
|
* the compiler optimizer is not enabled. This is required because
|
||||||
|
* non-optimized builds contain link time references to functions that
|
||||||
|
* are not used.
|
||||||
|
*
|
||||||
|
* Force full instantiation for non-optimized builds so that these
|
||||||
|
* references are satisfied. For optimized builds, instantiate only the
|
||||||
|
* classes that are known to be used.
|
||||||
|
*/
|
||||||
|
#ifndef DXX_VALPTRIDX_ENABLE_FULL_TEMPLATE_INSTANTIATION
|
||||||
|
#define DXX_VALPTRIDX_ENABLE_FULL_TEMPLATE_INSTANTIATION !(defined(__OPTIMIZE__) && __OPTIMIZE__ > 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DXX_VALPTRIDX_ENABLE_FULL_TEMPLATE_INSTANTIATION
|
||||||
|
template class valptridx<dcx::active_door>;
|
||||||
|
#if defined(DXX_BUILD_DESCENT_II)
|
||||||
|
template class valptridx<dsx::cloaking_wall>;
|
||||||
|
#endif
|
||||||
|
template class valptridx<dsx::object>;
|
||||||
|
template class valptridx<dsx::segment>;
|
||||||
|
template class valptridx<dsx::trigger>;
|
||||||
|
template class valptridx<dsx::wall>;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if DXX_VALPTRIDX_REPORT_ERROR_STYLE == DXX_VALPTRIDX_ERROR_STYLE_TREAT_AS_EXCEPTION
|
||||||
|
template class valptridx<dcx::active_door>::index_range_exception;
|
||||||
|
#if defined(DXX_BUILD_DESCENT_II)
|
||||||
|
template class valptridx<dsx::cloaking_wall>::index_range_exception;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template class valptridx<dsx::object>::index_mismatch_exception;
|
||||||
|
template class valptridx<dsx::object>::index_range_exception;
|
||||||
|
template class valptridx<dsx::object>::null_pointer_exception;
|
||||||
|
|
||||||
|
template class valptridx<dsx::segment>::index_mismatch_exception;
|
||||||
|
template class valptridx<dsx::segment>::index_range_exception;
|
||||||
|
template class valptridx<dsx::segment>::null_pointer_exception;
|
||||||
|
|
||||||
|
template class valptridx<dsx::trigger>::index_range_exception;
|
||||||
|
template class valptridx<dsx::wall>::index_range_exception;
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
template class valptridx<object>;
|
|
||||||
template class valptridx<segment>;
|
|
||||||
template class valptridx<trigger>;
|
|
||||||
template class valptridx<wall>;
|
|
||||||
|
|
Loading…
Reference in a new issue