++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			HEADERFILES (*.h)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

/*
 * Copyright (C) <year> <author>
 * Parts (C) <year> <additional authors>
 *
 * For license information see LICENSE
 */

/**
 * \file IInterface.h
 *
 * \brief Definition of an abstract interface
 * Here goes some more detailed description
 */

namespace rules
{ 
 
/**
 * \brief Describe in a few words what the enum is for.
 * And put some more details if needed.
 * 
 * An enum is named starting with a capital E followed by the name in CamelCase, e.g ESomeEnumName
 * The enumerations are named starting with the capital letters of the enum (in this case EEN for EEnumName)
 * followed by an underscore (_) and than the name in CamelCase, e.g EEN_SomeValue
 */
enum EEnumName
{
	//! What does this value stand for?
	EEN_SomeValue = 0,
	//! And this ?
	EEN_SomeMoreValue,
	
	//! And what is this ?
	EEN_ValueCount
};

/**
 * \brief Some brief description what the struct does
 * And some more description if needed
 *
 * A struct is named starting with a capital S followed by the name in CamelCase, e.g SStructName
 * All member variables of the struct start with a capital letter
 */
struct SStructName
{
	//! What does this variable hold?
	int MemberVariable1;
	//! And what is this ?
	c8* MemberVariable2;
};

/**
 * \brief short description about the interface
 * A more detailed description of the interface goes here
 *
 * Interface classes start with a capital I, e.g IInterface
 * the public, protected, and private blocks are written in this order. So public stands on top of the others.
 */
class IInterface
{
public:
	virtual ~IInterface() {};
	
	/**
	 * \brief Describe what the method does
	 * And give a more detailed desription if needed
	 *
	 * \param parameterName what does the parameter stand for ?
	 * \return are there any returns ?
	 */
	virtual void methodeName(s32 parameterName = EEN_SomeValue) = 0;
	
protected:
	//! Membervariables start with capital letters
	s32 SomeProtectedData;
};


/**
 * Classes that implement an interface start with a capital C
 * You should not put 2 classes in one file except where it makes sense (like SColor.h in irrlicht)
 */
class CInterface : public IInterface
{
public:
	CInterface();
	virtual ~CInterface();
	virtual void methodName(s32 parameterName = EEN_SomeValue);
	
	void methodWithALongNameAndVeryMuchParameters(c8* paramenterOne, s32 parameterTwo, f32 parameterWithAVeryLongNameThatIsFarTooLong,
													f32 theNextParametersAreIndetedForBetterReading, s32 anotherParamter, s32 theLastParameter);

private:
	f32 SomePrivateData;
};

} // end namespace rules


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			SOURCEFILES (*.cpp)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



/*
 * Copyright (C) <year> <author>
 * Parts (C) <year> <additional authors>
 *
 * For license information see LICENSE
 */

// Systemfiles are included before every other
#include <some_system_includes>
#include "CInterface.h"
 
/**
 * \brief what does this constant stand for ?
 * And a more detailed description here
 *
 * Constants are named in capital letters where every word is seperated by an underscore (_), e.g. SOME_CONSTANT
 */
const int SOME_CONSTANT = 3;

namespace rules
{

void CInterface::CInterface()
 : SomePrivateData(0)
{
} 

void CInterface::~CInterface()
{
}

void CInterface::methodName(s32 parameterName)
{
	if(parameterName == EEN_SomeValue)
	{
		// do some default stuff
		SomeProtectedData += parameterName;
	}
	else
	{
		// do some special stuff
		SomeProtectedData -= parameterName;
	}
}

void CInterface::methodWithALongNameAndVeryMuchParameters(c8* paramenterOne, s32 parameterTwo, f32 parameterWithAVeryLongNameThatIsFarTooLong,
															f32 theNextParametersAreIndetedForBetterReading, s32 anotherParamter, s32 theLastParameter)
{
	// and here comes some code
}

} // end namespace rules