| 91 | == Addendum == |
| 92 | |
| 93 | With this RFC being implemented for all types of definitions currently known by CS-MAP (CS, datum, ellipsoid, ..., category), the implementation in CS_category.c will have to be completed. |
| 94 | Along with the integration of the new functionality proposed by this RFC, the following work will have to be undertaken in the CS_category module: |
| 95 | |
| 96 | * Shield in-memory list from external modifications. That is, make sure, no API client can directly modify the pointers / structures used with CS-MAP's CS_category.c module. '''Note''': This requires updating existing API clients, because pointers returned by CS-MAP will now have to be free'd by the caller. |
| 97 | * Implement missing API for category management. |
| 98 | In particular... |
| 99 | * ...provide API directly in CSMAP to Add, Modify and Remove categories. |
| 100 | * ...implement API to Add, Modify, Remove CS names from categories |
| 101 | |
| 102 | Additionally, adapt the implementation in the CS_category.c so it allows for storing category modifications in a file which is separated from the "system" category information file. |
| 103 | As before, if no external directly has been set via CS_usrdir(), categories can be modified in any way. That is, there's no distinction being made with what's considered a system definition and a user-defined category.[[BR]][[BR]] |
| 104 | |
| 105 | |
| 106 | If, however, a directory has been explicitly defined through CS_usrdir(), (system) categories cannot be edited in the main file that has been read from the directory specified through CS_altdr(). Instead, the information from the main file and the user's additional file will be merged. In detail, the following operations are forbidden or permitted, respectively: |
| 107 | * system categories cannot be removed |
| 108 | * CS names cannot be removed from system categories but new CS names can be added - even to system categories. That information, however, will be written into the separated file |
| 109 | * new categories can be added and freely edited in terms of renaming the categories and also adding, modifying and removing (valid) CS names |
| 110 | * newly added categories can be removed |
| 111 | |
| 112 | For example, new CS names can be added to the "Lat Long" category. But pre-defined names like LL84 or LL83 cannot be removed from there. |