#ifndef OpenTestSystem_OtxDiagManager_OtxDiagApi_OtxDataTypes_IOtxParameter_H
#define OpenTestSystem_OtxDiagManager_OtxDiagApi_OtxDataTypes_IOtxParameter_H

#include "ApiDefs.h"
#include "OtxDataTypes/AllClasses.h"
#include "OtxDataTypes/IOtxParameterContainer.h"
#include "OtxDataTypes/OtxMcdParameterType.h"
#include "OtxDataTypes/OtxMcdDataType.h"
#include <string>

namespace OpenTestSystem { namespace OtxDiagManager { namespace OtxDiagApi { namespace OtxDataTypes {
	/// <summary>
	/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComment
	/// </summary>
	class API_EXPORTS IOtxParameter : public IOtxParameterContainer
	{
	public:
		inline virtual ~IOtxParameter() {};
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetPath() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetShortName() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetLongName() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetSemantic() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual OtxMcdDataTypes GetDataType() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual OtxMcdParameterTypes GetMCDParameterType() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetValueAsString() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetError() const = 0;
	};
}}}}
#endif // OpenTestSystem_OtxDiagManager_OtxDiagApi_OtxDataTypes_IOtxParameter_H