#ifndef  SAMPLECLASS_H
#define  SAMPLECLASS_H

#include  "LocalIncludeFile.h"
#include  <system_include_file.h>

BOREALIS_NAMESPACE_BEGIN

/**
 *  The SampleClass shows how to format C and C++ code for the Borealis project.
 *  Doxygen uses comments beginning with "/**" (for comment blocks) or three
 *  slashes (for single line comments) as input to generate API documentation.
 *  Comments in Header files will be used to generate the documentation.
 *
 *  Comments in code files will be used to document the code and is written
 *  for maintainers.  Comment blocks for maintainers begin with "/*" and
 *  single line comments begin with "//".
 *
 *  The comments above the class declaration will show up
 *  under the heading "Detailed Description" in the generated API.  The first
 *  line will be separated by a space and should contain a terse description
 *  of the class.  Comments used to form boxes will be ignored by Doxgen and
 *  will not show up in the generated API.
 */

class SampleClass
{
public:
    /// Constructor.  Method descriptions go before the method declaration.
    SampleClass( /// Parameter descriptions go before the parameter declaration.
                 ParameterType  parameter_name
               );

    /// Destructor.  Usually self explanatory and no comment is needed.
    ~SampleClass();

    /**
     *  A terse description of the publicMethod method goes on the top line.
     *  You can provide additional details on the following line.
     *  The additional details will be separated by a blank line in the
     *  generated API documentation.
     */
    int     public_method( /// Description of the parameter1 parameter.
                           ParameterType  parameter1,

                           /// Description of the parameter2 parameter.
                           ParameterType  parameter2
                         );

    /// Get and set methods may be declared in header files.
    int      get_variable1()  const { return(_class_variable1); }

    /// Description of the _class_variable1 variable.
    int      _class_variable1;

    /// Description of _class_variable2 variable.
    float    _class_variable2;

protected:
    /**
     *  Description of the privateMethod method.
     *  More details.
     */
    float    *protected_method();

    /// Description of the _class_variable5 variable.
    double   _class_variable5;

    /// Description of the _class_variable6 variable.
    int      *_class_variable6;

private:
    /*
     *  A terse description of the privateMethod method goes on the top line.
     *  Comments for private members will not show up in the generated API
     *  documentation.  These comments are intended for code maintainers.
     *  Note that this block begins with "/*" and the single line comments
     *  begin with "//".
     */
    void     private_method();

    // Description of the _class_variable3 variable.
    int      *_class_variable3;

    // Description of the _class_variable4 variable.
    char     *_class_variable4;
};

BOREALIS_NAMESPACE_END
#endif                 // SAMPLECLASS_H