00001 // This is core/vgl/vgl_homg.cxx 00002 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00003 #pragma implementation 00004 #endif 00005 00006 #include "vgl_homg.h" 00007 00008 VCL_DEFINE_SPECIALIZATION float vgl_homg<float>::infinity = 3.4028234663852886e+38f; 00009 VCL_DEFINE_SPECIALIZATION float vgl_homg<float>::infinitesimal_tol = 1e-12f; 00010 00011 VCL_DEFINE_SPECIALIZATION double vgl_homg<double>::infinity = 1.7976931348623157e+308; 00012 VCL_DEFINE_SPECIALIZATION double vgl_homg<double>::infinitesimal_tol = 1e-12; 00013 00014 VCL_DEFINE_SPECIALIZATION long double vgl_homg<long double>::infinity = 1.7976931348623157e+308; 00015 VCL_DEFINE_SPECIALIZATION long double vgl_homg<long double>::infinitesimal_tol = 1e-12; 00016 00017 #ifdef VCL_BORLAND_56 00018 // Not sure why this is needed for Borland 5.6. Bug? 00019 // Alternatively we could define separate class template 00020 // specializations for every supported vgl_homg type and then just 00021 // have an empty function here. 00022 void vgl_homg_linker_hack() 00023 { 00024 (void)vgl_homg<float>::infinity; 00025 (void)vgl_homg<float>::infinitesimal_tol; 00026 (void)vgl_homg<double>::infinity; 00027 (void)vgl_homg<double>::infinitesimal_tol; 00028 (void)vgl_homg<long double>::infinity; 00029 (void)vgl_homg<long double>::infinitesimal_tol; 00030 } 00031 #endif