/******************************************************************************
*
*	NDT Solutions Rapid Scan 2 Automated (RS2A) Software Development Kit v1.0
* (C) NDT Solutions 2007.  
*
******************************************************************************
*
*  File:        NDTSRS2ATypes.h
*
*  Description: Type definitions header file for inclusion by C++ applications.  
*
*
******************************************************************************/

#pragma once
#include "PropertiesInterface.h"

#ifdef RS2A_EXPORTS
#define RS2A_API __declspec(dllexport)
#else
#define RS2A_API __declspec(dllimport)
#endif

#ifdef STDCALL
#define CALL_CONV __stdcall
#else
#define CALL_CONV
#endif

namespace NDTS
{
	namespace RS2A
	{
#ifdef _MANAGED
#define ENUM public enum class 
#else
#define ENUM enum
#endif
		// Bit mask values for the PropertyFlags
		ENUM PropertyFlags
		{
			PF_Int = 1 << 0,  // A property is either Int Enum or Double
				PF_Enum = 1 << 1, 
				PF_NoLongerUsed = 1 << 2 ,  // NoLongerUsed can be or with int or enum - it means this property index is no longer valid
				PF_RdOnly = 1 << 3,         // Can be Or with Int or Enum to indicate property is read only
				PF_IsInSamples = 1 << 4,    // Can be Or with Int to indicate property is in samples and can be converted to time using the sample frequency
				PF_Group = 1 << 5,			// Group propery is SCO::GroupProperty and  contains other properties
				PF_ForRS2A   = 1 << 6,		// The setting is used with the standard RS2A with a DI unit
				PF_NotCurrentlyValid = 1 << 7,  // The setting is not currently valid, e.g. clicks per metre when the scan mode is not encoder triggered
				PF_ForRapiDAQ   = 1 << 8,	// The setting is used with a stand alone RapiDAQ
				PF_Double = 1 << 9,
				PF_Event = 1 << 10,		// The property is an event which calls an SDK function but doesn't need a value, e.g. reset encoders
				PF_Array = 1 << 11,		// The property is an array - it is a PF_Group with each entry in the group having the same name
				PF_LastEnum			// Used to cross check against the .net enum
		} ;		

	}}