-
Notifications
You must be signed in to change notification settings - Fork 96
Coding style
Indentation must be made with spaces, not tabs. If you program in Visual Studio then please configure it to insert 4 spaces as an indentation in Options/Text Editor/C++/Tabs.
A space must be inserted after each opening bracket and before each closing bracket:
Wrong:
foo(1,x,"z");Right:
foo( 1, x, "z" );Braces must be put on the new line, not at the end of the current line:
Wrong:
void foo() {
}Right:
void foo()
{
}Do not put many statements in one code line. The only exception could be inline function definition in a class, to make class definition more compact and easily observable.
Wrong:
ProgressBar::nextTask( "Converting object A" ); auto gridA = convert( *objA_->objectMesh );Right:
ProgressBar::nextTask( "Converting object A" );
auto gridA = convert( *objA_->objectMesh );Use the MR_MAKE_FLAG_OPERATORS macro:
#include "MRMesh/MRFlagOperators.h"
enum class MyFlags
{
Foo = 1 << 0,
Bar = 1 << 1,
};
MR_MAKE_FLAG_OPERATORS( MyFlags )The macro generates all common operators for flags (&, |, ~, multiplication by bool).
Don't use a plain enum, prefer enum class for type safety.
Note that one operator we can't generate is the conversion to bool, so you must do if ( bool( x & y ) ).