= CS-Map RFC 8 - CS-MAP Clean Up = Remove and/or delete as appropriate obsolete and unused source code modules and unused code. Includes removing same from make files and project files. == Status == ||RFC Template Version||(1.0)|| ||Submission Date||09 May 2014|| ||Last Modified||Norm Olsen [[Timestamp]]|| ||Author|| Norm Olsen || ||RFC Status|| Draft || ||Implementation Status|| || ||Proposed Milestone|| 14(?) || ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||(vote date)|| ||+1|| || ||+0|| || ||-0|| || ||-1|| || ||no vote|| || == Overview == Over the years, CS-MAP has accumulated a lot of unused and obsolete code which is no longer necessary. This baggage has accumulated due to a variety of factors: * Being maintain by separate organizations and developers * Features being replaces by new RFC's. * Provisions for obsolete and/or non-standard operating system and compilers. * Old features maintained for legacy purposes which are now a liability rather than a positive. The intent of this RFC is to itemize the proposed clean up efforts, have them reviewed and discussed, and upon final agreement, implement the clean up. == Motivation == Implementing this clean up will: * reduce the amount of code maintained, * reduce confusion to new users and developers, * remove unnecessary restrictions originally written in to accommodate obsolete platforms/OS/compilers * improve build times * reduce distributable sizes == Proposed Solution == The following is a list of items proposed for the clean up. Modifications, deletions, and additions are encouraged. * Remove the 'C' based CS_Test module. It hasn't been maintained and is rarely, if ever, used any more. * Delete (SVN meaning of Delete) pre-RFC-2 geodetic transformation code modules which are no longer referenced. * Remove all code pertaining specifically to Windows CE. * Correct all warnings issued by VC++ and gcc compilers. * Enhance make files for Windows and Linux so that single make command builds the entire product. * Remove all .gdc and .mrt files from dictionaries and distributions. * Modify the capitalization of file names so that all comform to a consist naming convention. * Rename modules and internal functions to names conforming to the base CS-MAP naming convention. * Implement pre-compiled headers where ever possible in make/project files. * Re-organize the csTestCpp test module to better reflect the actual usage for the product (i.e. Categories in, Groups out, 3D coordinate testing, etc.) == Implications == I submit this as an RFC as it is likely that some of the changes may require an tweak or two external to the library itself. And also, a project such as this needs a lot of testing in different environments. Without the support of the entire community, embarking on this worthwhile project could be dangerous. Assuming that no one is using the CS-Test.c module, and that few (if any) use modules below the EXP_LVL1 external interface, no external changes are envisioned, BUT . . . == Implementation Plan == Each of the above listed items will be implemented, tested, reviewed, and submitted separately to the extent possible. The easiest and safest will be performed first. The following are considered to be the easiest and safest: * Remove the CS_Test module. * Delete RFC-2 left overs from the repository and remove all reference in project/make files. * Remove unused .gdc and all .mrt files from the distribution and code (i.e. the Dictionary compiler). * Remove the remaining .gdc files which are still used (Vertcon and Geoid Height), replacing them with the concept of simply using whatever files exist in a predefined folder. * Modify the names of source code modules to comply with the basic CS-MAP naming convention. (Changes to module names, and hence changes to make/project files only. Function/Interface names remain unchanged.) == Test Plan == The existing, then the improved, csTestCpp module will be used to verify computational results remain the same and that basic features retain functionality and performance. == Funding/Resources == Hopefully, the primary patrons of the library will contribute funding and/or personnel resources to support some or all of these efforts. In absence thereof, Norm Olsen will perform the work. In the latter case, the effort will take 12 or more months to complete. ==Implementation Notes == June 19, 2014: What has been dubbed Phase One is now pretty much complete. The table below shows module deletions and name changes which may be of specific interest to users of the library. Precompiled headers are now used for Windows builds; use in Linux is deferred as the LInux build is so fast the effort seemed to be n"not worth the effort". The MAKE files have been rewritten, and an over all make file for both Windows and Linus are now available. The MAKE files have been designed to specifically support efficient maintenance of several versions of the library in both the Windows and LInux environments. Testing of the MAKE files in environments other than WIndows and Linux (CentOS 6.3 to be specific) have not been performed as such additional enviornments are not available to the developer. Am now proceeding to Phase Two: eliminating warning medssages and removing obsolete code. Modules marked as SVN delete will remain in the SVN repository, select revision 2452 or earlier to retrieve. ||Action Taken||Original Name||New Name||Comment|| ||Renamed||CS_ats77New.c||CS_ats77.c|| || ||Renamed||CS_japan.c||CS_japanOld.c||Eventually deleted, see below|| ||Renamed||CS_japanNew.c||CS_japan.c|| || ||Renamed||cs_ctio.c||CS_ctio.c|| || ||Renamed||cs_wellknowntext.cpp||CS_wellknowntext.cpp|| || ||Renamed||csCsvFileSupport.cpp||CS_csvFileSupport.cpp|| || ||Renamed||csEpsgStuff.cpp||CS_epsgStuff.cpp|| || ||Renamed||csEpsgSupport.cpp||CS_spegSupport.cpp|| || ||Renamed||csNameMapper.cpp||CS_nameMapper.cpp|| || ||Renamed||cs NameMapperSupport.cpp||CS_nameMapperSupport.cpp|| || ||Renamed||rcWellKnownText.cpp||CS_wktObject.cpp|| || ||Renamed||rcWktKonstants.cpp||CS_wktObjKonstants.cpp|| || ||Renamed||rcWellKnownText.hpp||cs_WktObject.hpp|| || ||Renamed||csCsvFileSupport.hpp||cs_CsvFileSupport.hpp|| || ||Renamed||csNameMapperSupport.h||cs_NameMapperSupport.h|| || ||Renamed||csNameMapper.hpp||cs_NameMapper.hpp|| || ||Renamed||csepsgstuff.h||cs_EpsgStuff.h|| || ||Removed from Projects||cs_hlp.h|| ||MFC stuff|| ||Removed from Projects||cs_mfc.h|| ||MFC stuff|| ||Removed from Projects||cs_res.h|| ||MFC stuff|| ||Removed from Projects||mgTest.h|| ||MFC stuff|| ||Removed from Projects||csBrowser.cpp|| ||MFC stuff|| ||Removed from Projects||csDataDir.cpp|| ||MFC stuff|| ||Removed from Projects||csDualBrowse.cpp|| ||MFC stuff|| ||Removed from Projects||csEdit.cpp|| ||MFC stuff|| ||Removed from Projects||csKeyNm.cpp|| ||MFC stuff|| ||Removed from Projects||csTest.cpp|| ||MFC stuff|| ||Removed from Projects||csWinHlp.cpp|| ||MFC stuff|| ||Removed from Projects||dtEdit.cpp|| ||MFC stuff|| ||Removed from Projects||dtSelect.cpp|| ||MFC stuff|| ||Removed from Projects||elEdit.cpp|| ||MFC stuff|| ||Removed from Projects||elSelect.cpp|| ||MFC stuff|| ||Removed from Projects||gdcEdit.cpp|| ||MFC stuff|| ||Removed from Projects||mgTest.cpp|| ||MFC stuff|| ||Removed from Projects||csmap.rc|| ||MFC stuff|| ||Deleted||CS_japanOld.c|| ||SVN delete|| ||Deleted||CS_caDatum.c|| ||SVN delete|| ||Deleted||CS_caV1GridFile.c|| ||SVN delete|| ||Deleted||CS_caV2GridFile.c|| ||SVN delete|| ||Deleted||CS_ch1903.c|| ||SVN delete|| ||Deleted||CS_csrs.c|| ||SVN delete|| ||Deleted||CS_dhdn.c|| ||SVN delete|| ||Deleted||CS_dtAgd66ToGda94.c|| ||SVN delete|| ||Deleted||CS_dtAgd84ToGda94.c|| ||SVN delete|| ||Deleted||CS_dtAts77ToNad83.c|| ||SVN delete|| ||Deleted||CS_dtCh1903ToPlus.c|| ||SVN delete|| ||Deleted||CS_dtDhdnToEtrf89.c|| ||SVN delete|| ||Deleted||CS_dtEd50ToEtrf89.c|| ||SVN delete|| ||Deleted||CS_dtNad27ToAts77.c|| ||SVN delete|| ||Deleted||CS_dtNad27ToNad83.c|| ||SVN delete|| ||Deleted||CS_dtNad83ToHarn.c|| ||SVN delete|| ||Deleted||CS_dtNzdg49ToNzgd2k.c|| ||SVN delete|| ||Deleted||CS_dtRgf93ToNtf.c|| ||SVN delete|| ||Deleted||CS_dtTokyoToJgd2k.c|| ||SVN delete|| ||Deleted||CS_hpgn.c|| ||SVN delete|| ||Deleted||CS_nad27.c|| ||SVN delete|| ||Deleted||CS_nzgd49.c|| ||SVN delete|| ||Deleted||CS_rgf93ToNtf.c|| ||SVN delete|| ||Deleted||CS_usDatum.c|| ||SVN delete|| ||Deleted||CS_usGridFile.c|| ||SVN delete|| ||Deleted||CSdatumSupport.c|| ||SVN delete|| ||Deleted||CSgridCellCache.c|| ||SVN delete|| ||Deleted||CSnad27ToCsrs.c|| ||SVN delete|| ||Deleted||CSnad83ToCsrs.c|| ||SVN delete||