=== LICENSE === This software is open source software licensed under GPL3, as found in the COPYING file.
=== CONTRIBUTORS === A list of known contributors can be found in the CONTRIBUTORS file. New maintainers should list themselves there as it is not automatically updated.
=== BUILDING === This project requires CMake to be built. It also requires the following libraries:
- OpenGL
- GLEW
- Qt (4.8, Core, Gui, OpenGL)
- storm (stormlib by Ladislav Zezula)
- Boost
- Lua (5.1)
Build in the following way. You may customize parameters to cmake. $ mkdir build $ cd build $ cmake .. $ make $ make install
=== DEVELOPMENT === Feel free to ask the owner of the official repository (https://bitbucket.org/berndloerwald/noggit3/) for write access or fork and post a pull request.
=== CODING GUIDELINES === Following is an example for file src/noggit/ui/foo_ban.h. .cpp files are similar.
// foo_ban.h is part of Noggit3, licensed via GNU General Publiicense (version 3). // First Lastname MAIL@ADDRESS
//! \note Include guard shall be the full path except for src/. #ifndef NOGGIT_UI_FOO_H #define NOGGIT_UI_FOO_H
//! \note Use fully qualified paths. Standard > external //! dependencies > own. #include <noggit/bar.h>
//! \note Namespaces equal directories. (java style packages.) namespace noggit { namespace ui { //! \note Lower case, underscore separated. Classes might have //! a _type suffix (even though being against the standard) class foo_ban : public QWidget { Q_OBJECT
public:
//! \note Long parameter list. Would be more than 80
//! chars. Break with comma in front. Use spaces to be
//! aligned below the braces.
foo_ban ( const type& name
, const type_2& name_2
, const type& name3
)
: QWidget (NULL)
//! \note Prefer initialization lists over assignment.
, _var (name)
{}
//! \note Use const where possible. No space between name and
//! braces when no arguments are given.
void render() const;
//! \note If you really need getters and setters, your design
//! might be broken.
const type& var() const
{
return _var;
}
//! \note One might use setter chaining. (just as operator=
//! returns the assigned value)
const type& var (const type& var_)
{
return _var = var_;
}
//! \note Prefer const (references) where possible.
bazs_type count_some_numbers ( const size_t& begin
, const size_t& end
) const
{
bazs_type bazs;
//! \note Prefer construction over assignment. Prefer
//! preincrement.
for (size_t it (begin); it < end; ++it)
{
bazs.push_back (it);
}
//! \note Prefer stl algorithms over hand written code.
const bazs_type::const_iterator smallest
(std::min_element (bazs.begin(), bazs.end()));
return *smallest;
}
private:
//! \note Member variables are prefixed with an underscore.
type _var;
//! \note Typedef when using complex types. Fully qualify
//! types.
typedef type_2 baz_type;
typedef std::vector<baz_type> bazs_type;
bazs_type _bazs;
}
}
}