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