/*!ignore * \file NParameters.h \brief Provides functionality for working with parameters for Neurotechnology components. */

/*!ignore 
|******************************************************************************|
|*                                                                            *|
|*                          Neurotechnology Core 2.4                          *|
|*                                                                            *|
|* NParameters.h                                                              *|
|* Header file for NParameters module                                         *|
|*                                                                            *|
|* Copyright (C) 2005-2008 Neurotechnology                                    *|
|*                                                                            *|
\******************************************************************************/

#ifndef N_PARAMETERS_H_INCLUDED
#define N_PARAMETERS_H_INCLUDED

#include "NCore.h"

#ifdef N_CPP
extern "C"
{
#endif

/*!ignore  Type ids */

/*!ignore < Specifies that parameter type is #NByte. */
#define N_TYPE_BYTE      1
/*!ignore < Specifies that parameter type is #NSByte. */
#define N_TYPE_SBYTE     2
/*!ignore < Specifies that parameter type is #NUShort. */
#define N_TYPE_USHORT    3
/*!ignore < Specifies that parameter type is #NShort. */
#define N_TYPE_SHORT     4
/*!ignore < Specifies that parameter type is #NUInt. */
#define N_TYPE_UINT      5
/*!ignore < Specifies that parameter type is #NInt. */
#define N_TYPE_INT       6
#ifndef N_NO_INT_64
/*!ignore < Specifies that parameter type is #NULong. */
#define N_TYPE_ULONG     7
/*!ignore < Specifies that parameter type is #NLong. */
#define N_TYPE_LONG      8
#endif
/*!ignore < Specifies that parameter type is #NBool. */
#define N_TYPE_BOOL     10
/*!ignore < Specifies that parameter type is #NChar. */
#define N_TYPE_CHAR     20
#ifndef N_NO_FLOAT
/*!ignore < Specifies that parameter type is #NFloat. */
#define N_TYPE_FLOAT    30
/*!ignore < Specifies that parameter type is #NDouble. */
#define N_TYPE_DOUBLE   31
#endif
/*!ignore < Specifies that parameter type is nullterminated string of NChar. */
#define N_TYPE_STRING  100

/*!ignore  Parameter id codes */

/*!ignore *
 * \brief  Specifies that type id (#NInt value, one of N_TYPE_XXX) of the
 *         parameter should be retrieved.
 */
#define N_PC_TYPE_ID 1

/*!ignore *
 * \brief  Makes parameter id.
 * \param  code   One of N_PC_XXX.
 * \param  index  Reserved, must be zero.
 * \param  id     One of the parameter ids provided by a Neurotechnology 
 *                module.
 */
#define NParameterMakeId(code, index, id) ((NUInt)(((code) << 24) | (((index) & 0xFF) << 16) | ((id) & 0xFFFF)))

#ifdef N_CPP
}
#endif

#endif /*!ignore  !N_PARAMETERS_H_INCLUDED */
