librevenge coding style
Indentation/spacing: We indent with tabs. Not spaces. This decision is, of
course, rather contentious, but it does have the force of inertia going for
it. Try to keep lines less than 120 columns wide. Please run
astyle --options=astyle.options \*.h \*.cpp
API: By agreement, public API does use neither C++ standard library nor Boost.
If a function takes or returns a dynamically allocated data buffer, it must be
documented who is responsible for freeing the memory.
Naming: All public classes, enumerations, and defines should be prefixed with
For better worse, we have decided on using the camel caps convention for naming
variables (i.e.: tempJustification). Use of hungarian notation (i.e.: iNum) is
forbidden, with one exception: use the 'm_' prefix for naming class and struct
variables (i.e.: my_class->m_var). Short-hand for variable names is allowed,
but don't overdo it (m_var->len() instead of m_variable->length() is ok,
m_nam instead of m_name is stupid).
Memory allocation: Use the C++ standard operations for this (new, delete).
Use of smart pointers, e.g., boost::shared_ptr and boost::scoped_ptr, is
strongly encouraged. The only exeption to that is public API, where only plain
pointers are allowed.
Data structures: Use the C++ standard library wherever appropriate and
convenient. It should almost never be necessary to roll your own data
Strings: You may use either the C++ standard strings or our very own
UTF8-compliant RVNGString. Hand-allocated char *'s are discouraged.
Further information: The OpenOffice.org (http://tools.openoffice.org/coding.html)
and AbiWord (cvs://cvs.abisource.com/abi/docs/AbiSourceCodeGuidelines.abw)
contain lots of useful information that will make you a better C++ coder.
Follow their advice religiously, except when they contradict something in this
Fun: Remember, the important thing is to have fun. :-) These rules are a means,
not an end. Happy hacking!