class SomeClass
{
public:
// Short parameters
TYPE_EXPORT method1(int     a,
                    float   b);

TYPE_EXPORT method2(int&    d,
                    float   e);

TYPE_EXPORT method3(int*    f,
                    float   g);

// Parameters with '&' and '*'
TYPE_EXPORT method4(int   a);
TYPE_EXPORT method5(int & a);
TYPE_EXPORT method6(int * a);

TYPE_EXPORT method7(float   a);
TYPE_EXPORT method8(float & a);
TYPE_EXPORT method9(float * a);

// Single short and long parameters
void method10(int   a);
void method11(float & a);
void method12(SomeLongNamespace::SomeLongType   long_parameter_name);
void method13(double * a);
void method14(SomeLongType   long_parameter_name);

// Long parameters
void method20(int *                             int_param,
              SomeLongNamespace::SomeLongType   long_parameter_name,
              float &                           float_param);

// Possible bug: different aligning in method21 and method22
// align_func_params_span = 1, align_func_params_thresh = 8
void method21(SomeLoooooooooooooongType   long_param_1,
              const string&               string_param_1,
              const TimePoint&            time_param,
              double                      double_param_1,
              double                      double_param_2,
              const string&               string_param_2,
              SomeLoooooooooooooongType   long_param_2 );
void method22(SomeLoooooooooooooongType   long_param_1,
              const string&               string_param_1,
              double                      double_param_1,
              double                      double_param_2,
              const TimePoint&            time_param,
              const string&               string_param_2,
              SomeLoooooooooooooongType   long_param_2 );

void method23(int                                                   int_param,
              int *                                                 int_ptr_param,
              float                                                 float_param,
              float &                                               float_ref_param,
              SomeLongNamespace::SomeLongType                       long_parameter_name,
              int *                                                 other_int_param,
              SomeLooooongType                                      long_parameter_name,
              SomeLoooooooooongType                                 looong_parameter_name,
              SomeLongNamespace::OtherLongNamespace::SomeLongType   very_long_parameter_name,
              int *                                                 int_ptr_param,
              float                                                 float_param,
              float &                                               float_ref_param,
              double &                                              double_param,
              SomeLongNamespace::SomeLongType                       long_parameter_name,
              int *                                                 other_int_param);

// Don't align several parameters in one line
void method30(int* f, char foo,
              float g);

// Short parameters in method definition
void method40(int     a,
              float   b)
{
	int c;

	if ( true ) callProc;
	// do stuff.
}

// Long parameters in method definition
void method50(int                                                   int_param,
              SomeLongNamespace::OtherLongNamespace::SomeLongType   long_parameter_name,
              float                                                 float_param,
              double                                                double_param,
              const string &                                        string_param)
{
	doSomething();
}

void method51(
	int                                                   int_param,
	SomeLongNamespace::OtherLongNamespace::SomeLongType   long_parameter_name,
	float                                                 float_param,
	double                                                double_param,
	const string &                                        string_param)
{
	doSomething();
}
void increasing_length(
	int                int_param,
	float              float_param,
	double             double_param,
	ah_long_t &        string_param,
	very_long_type     t_param,
	even_longer_type   l_param)
{
	doSomething();
}
};
