1Read this carefully before working on Atlas-C++. 2 3I On writing templates: 4 5 - put the declaration for the template class X in X.h 6 - put the definitions for the template class X in X_impl.h 7 - put any instantiations of X in X.cpp (or X.cc?), e.g.: 8 template class X<int>; 9 10This avoids duplicated instantiations and speeds up compile time. 11Note that this doesn't apply for absolutely all classes. If unsure, 12talk to somebody who knows more about templates. 13 14II On filenames: 15 16In 0.4.0, C++ implementation filenames will end in .cc. 17In 0.4.x, this may change to .cpp. 18 19In 0.4.x: 20 - files will have CapitalisedFilenames.extension 21 - headers will end in .h 22 23In 0.5.x and up: 24 - C++ implementation filenames will end in .cpp 25 - headers will end in .h 26 - files may be lower cased. This is up to debate. 27 28III On member names: 29 30In 0.4.x member function names will be CapitalisedNames(). There are no 31restrictions to the naming of member variables. 32In 0.5.x member functions will be lowerThenUpperCased(). Member 33variables will be prefixed with m_, and also be lowerThenUpperCased. 34-------e.g. 350.4.x: class Budgie { void CleanFeathers(); Feather* dirty_feathers; }; 360.5.x: class Budgie { void cleanFeathers(); Feather* m_dirtyFeathers; }; 37----------- 38 39IV On ChangeLog entries: 40 41Write a change log entry for every change you check in. Make sure you 42use standard ChangeLog format. Look in the current ChangeLog for 43examples of this. 44 45V On CVS: 46 47There shall be the following tags: 48 atlas-cpp-x_y_z: Represents Atlas-C++ version x.y.z 49 WARNING: Do not check out with one of these tags and then commit! 50 Any versions tagged as this are to STAY EXACTLY THE SAME. 51 atlas-cpp-stable: Represents the current "stable" branch of 52 Atlas-C++, i.e. versions that being with x.y where y is even. If you 53 are doing work on the stable Atlas-C++ version, make sure you check 54 out with this tag only! Don't use a tag called atlas-cpp-x_y_z. 55 Once an official release is made, it shall be tagged as 56 atlas-cpp-x_y_z where x_y_z represents the version number. Then that 57 tag shall not be touched, further development shall continue with 58 the atlas-cpp-stable tag. 59 HEAD: the default tag, indicates the unstable branch. The same holds 60 as for atlas-cpp-stable. Once this becomes stable, do the following: 61 - fetch atlas-cpp-stable. Tag it as atlas-cpp-x_y where x_y 62 corresponds with major version x.y. 63 - fetch HEAD. Tag it as atlas-stable. 64 - Tag a release, if necessary. 65 66VI On review and ownership: 67 68Stefanus du Toit and Michael Day are no longer directly incolved with the 69WorldForge project on a day to day basis, so ownership and maintenance 70of this code has been handed over to Al Riddoch. 71 72Due to the importance of Atlas-C++ to the WorldForge project, changes are 73strictly controlled. Please contact Al Riddoch on irc, where he is known 74as alriddoch, via the WorldForge mailing lists, or via direct email 75as alriddoch@zepler.org before starting any development, and before 76commiting any changes. This does not affect your right to modify the code 77as described in the LGPL (see COPYING). 78 79VII On namespaces: 80 81Each subdirectory should use its own namespace for classes it contains, 82and package the object files in a library file associated with 83this namespace. namespaces are hierarchical following the directory 84hierarchy, and everything exists with the Atlas namespace. 85 86From 0.5.x onwards, the "using namespace ..." directive should never be used 87is it increases the likelyhood on namespace pollution, and slows down compile 88times. Use is also discouraged in programs which use Atlas-C++, and 89in any C++ program. No additional use should be made of the 90"using namespace ..." directive should be made in branch before 0.5.x, and 91its use may be phased out in these branches eventually. 92 93Written by Stefanus Du Toit <sjdutoit@uwaterloo.ca> on 2001-01-14. 94Added to by Alistair Riddoch <alriddoch@zepler.org> on 2001-05-11. 95Last updated by Alistair Riddoch <alriddoch@zepler.org> on 2001-05-11. 96 97