#ifndef OpenTestSystem_DiagDataBrowsingPlus_OtxDiagApi_IDiagDataBrowsingPlus_H
#define OpenTestSystem_DiagDataBrowsingPlus_OtxDiagApi_IDiagDataBrowsingPlus_H

#include "TypeDefs.h"
#include "OtxDataTypes/AllClasses.h"
#include "OtxDataTypes/OtxMcdResponseType.h"
#include "OtxDataTypes/OtxMcdDataType.h"
#include "OtxDataTypes/OtxMcdParameterType.h"
#include <ApiDefs.h>
#include <string>
#include <memory>
#include <vector>
#include <map>

namespace OpenTestSystem { namespace OtxDiagManager { namespace OtxDiagApi {
	/// <summary>
	/// @snippetdoc DocSnippets.txt OtxDiagApiClassComment
	/// </summary>
	class API_EXPORTS IDiagDataBrowsingPlus
	{
	protected:
		IDiagDataBrowsingPlus() {}
	public:
		virtual ~IDiagDataBrowsingPlus() {}
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbComChannel> GetComChannelDbComChannel(std::shared_ptr<OtxDataTypes::IOtxComChannel> comChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbComChannel> GetDbComChannel(const std::string & identifier, const std::string & ecuVariantName) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbDiagService>> GetDbComChannelDbDiagServices(std::shared_ptr<OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbEnvDataDesc>> GetDbComChannelDbEnvDataDescs(std::shared_ptr<OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbFaultMemory>> GetDbComChannelDbFaultMemories(std::shared_ptr<OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSubComponent>> GetDbComChannelDbSubComponents(std::shared_ptr<OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbTable>> GetDbComChannelDbTables(std::shared_ptr<OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbComChannelProtocolType(std::shared_ptr<OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbDiagServiceAudienceStates(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbDiagServiceDbFunctionalClasses(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbDiagServiceDbPreConditionStatesBySemantic(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService, const std::string & semantic) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbRequest> GetDbDiagServiceDbRequest(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbResponse>> GetDbDiagServiceDbResponses(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbDiagServiceDbSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbDiagServiceDisabledAdditionalAudiences(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbDiagServiceEnabledAdditionalAudiences(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool GetDbDiagServiceIsApiExecutable(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbDiagServiceSemantic(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbDiagTroubleCodeDisplayTroubleCode(std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> dbDiagTroubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbDiagTroubleCodeDTCText(std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> dbDiagTroubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbDiagTroubleCodeLevel(std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> dbDiagTroubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbDiagTroubleCodeSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> dbDiagTroubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbDiagTroubleCodeTextId(std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> dbDiagTroubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbDiagTroubleCodeTroubleCode(std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> dbDiagTroubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbEcuVariantList(const std::string & identifier) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbEnvDataDescCommonDbEnvDatas(std::shared_ptr<OtxDataTypes::IOtxDbEnvDataDesc> dbEnvDataDesc) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbEnvDataDescSpecificDbEnvDatas(std::shared_ptr<OtxDataTypes::IOtxDbEnvDataDesc> dbEnvDataDesc, int troubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> GetDbFaultMemoryDiagTroubleCodeByTroubleCode(std::shared_ptr<OtxDataTypes::IOtxDbFaultMemory> dbFaultMemory, int troubleCode) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode>> GetDbFaultMemoryDiagTroubleCodes(std::shared_ptr<OtxDataTypes::IOtxDbFaultMemory> dbFaultMemory) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbParameter> GetDbMatchingParameterDbResponseParameter(std::shared_ptr<OtxDataTypes::IOtxDbMatchingParameter> dbMatchingParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbMatchingParameterExpectedValueAsString(std::shared_ptr<OtxDataTypes::IOtxDbMatchingParameter> dbMatchingParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectDescription(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectDescriptionID(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectLongName(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectLongNameID(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectShortName(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectTypeAsString(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbObjectUniqueObjectIdentifier(std::shared_ptr<OtxDataTypes::IOtxDbObject> dbObject) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbParameterAudienceStates(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterBitLength(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterBitPos(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterByteLength(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbParameterCodedDefaultValueAsString(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual OtxDataTypes::OtxMcdDataTypes GetDbParameterDataType(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterDecimalPlaces(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbParameterDefaultValueAsString(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbParameterDisabledAdditionalAudiences(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterDisplayLevel(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbParameterDisplayUnitAsString(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbParameterEnabledAdditionalAudiences(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbParameterKeysAsString(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbParameter> GetDbParameterLengthKey(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterMaxLength(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterMaxNumberOfItems(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual OtxDataTypes::OtxMcdParameterTypes GetDbParameterMcdParameterType(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterMinLength(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<int64> GetDbParameterNrcConstValues(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterODXBytePos(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbParameterRadix(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbParameterSemantic(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbParameters(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbParameterSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbParameterStructureByKey(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter, const std::string & key) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbTable> GetDbParameterTable(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbParameter> GetDbParameterTableKeyParam(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbParameterTableStructParams(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxTextTableElement>> GetDbParameterTextTableElements(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxInterval>> GetDbParameterValidInternalIntervals(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxInterval>> GetDbParameterValidPhysicalIntervals(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbRequestDbParameters(std::shared_ptr<OtxDataTypes::IOtxDbRequest> dbRequest) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbRequestDbSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbRequest> dbRequest) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbRequestDefaultPDU(std::shared_ptr<OtxDataTypes::IOtxDbRequest> dbRequest) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbRequestPDUMaxLength(std::shared_ptr<OtxDataTypes::IOtxDbRequest> dbRequest) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetDbRequestPDUMinLength(std::shared_ptr<OtxDataTypes::IOtxDbRequest> dbRequest) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbResponseDbParameters(std::shared_ptr<OtxDataTypes::IOtxDbResponse> dbResponse) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbResponseDbSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbResponse> dbResponse) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual OtxDataTypes::OtxMcdResponseTypes GetDbResponseResponseType(std::shared_ptr<OtxDataTypes::IOtxDbResponse> dbResponse) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbSpecialDataElementContent(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataElement> specialDataElement) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbSpecialDataElementSemanticInformation(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataElement> specialDataElement) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbSpecialDataElementTextId(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataElement> specialDataElement) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbSpecialDataGroupCaption(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup> specialDataGroup) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool GetDbSpecialDataGroupHasCaption(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup> specialDataGroup) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbSpecialDataGroupSemanticInformation(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup> specialDataGroup) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataElement>> GetDbSpecialDataGroupSpecialDataElements(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup> specialDataGroup) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbSpecialDataGroupSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup> specialDataGroup) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbSubComponentDbDiagServices(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode>> GetDbSubComponentDbDiagTroubleCodes(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbEnvDataDesc>> GetDbSubComponentDbEnvDataDescs(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbFaultMemory>> GetDbSubComponentDbFaultMemories(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::map<std::string, std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>>> GetDbSubComponentDbInParams(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector< std::vector<std::shared_ptr<OtxDataTypes::IOtxDbMatchingParameter>>> GetDbSubComponentDbMatchingParameters(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::map<std::string, std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>>> GetDbSubComponentDbOutParams(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbSubComponentDbResponseParameters(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbSubComponentDbTableParameters(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbTable>> GetDbSubComponentDbTables(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbSubComponentSemantic(std::shared_ptr<OtxDataTypes::IOtxDbSubComponent> dbSubComponent) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::map<std::string, std::shared_ptr<OtxDataTypes::IOtxDbParameter>> GetDbTableDbTableRows(std::shared_ptr<OtxDataTypes::IOtxDbTable> dbTable) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbDiagService> GetDbTableDiagComPrimitiveByConnectorSemantic(std::shared_ptr<OtxDataTypes::IOtxDbTable> dbTable, const std::string & semantic) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbDiagService>> GetDbTableDiagComPrimitives(std::shared_ptr<OtxDataTypes::IOtxDbTable> dbTable) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::string> GetDbTableKeys(std::shared_ptr<OtxDataTypes::IOtxDbTable> dbTable) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbTableParameterKeyAsString(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetDbTableSemantic(std::shared_ptr<OtxDataTypes::IOtxDbTable> dbTable) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OtxDataTypes::IOtxDbSpecialDataGroup>> GetDbTableSpecialDataGroups(std::shared_ptr<OtxDataTypes::IOtxDbTable> dbTable) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbDiagService> GetDiagServiceDbDiagService(std::shared_ptr<OtxDataTypes::IOtxDiagService> diagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetIntervalLowerLimitAsString(std::shared_ptr<OtxDataTypes::IOtxInterval> interval) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetIntervalLowerLimitTypeAsString(std::shared_ptr<OtxDataTypes::IOtxInterval> interval) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetIntervalUpperLimitAsString(std::shared_ptr<OtxDataTypes::IOtxInterval> interval) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetIntervalUpperLimitTypeAsString(std::shared_ptr<OtxDataTypes::IOtxInterval> interval) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbDiagTroubleCode> GetParameterDbDiagTroubleCode(std::shared_ptr<OtxDataTypes::IOtxParameter> parameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbParameter> GetParameterDbParameter(std::shared_ptr<OtxDataTypes::IOtxParameter> parameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetParameterDecimalPlaces(std::shared_ptr<OtxDataTypes::IOtxParameter> parameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetParameterDisplayUnitAsString(std::shared_ptr<OtxDataTypes::IOtxParameter> parameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual int64 GetParameterRadix(std::shared_ptr<OtxDataTypes::IOtxParameter> parameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbRequest> GetRequestDbRequest(std::shared_ptr<OtxDataTypes::IOtxRequest> request) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxDbResponse> GetResponseDbResponse(std::shared_ptr<OtxDataTypes::IOtxResponse> response) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::shared_ptr<OtxDataTypes::IOtxInterval> GetTextTableElementInterval(std::shared_ptr<OtxDataTypes::IOtxTextTableElement> textTableElement) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetTextTableElementLongName(std::shared_ptr<OtxDataTypes::IOtxTextTableElement> textTableElement) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::string GetTextTableElementLongNameID(std::shared_ptr<OtxDataTypes::IOtxTextTableElement> textTableElement) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsDbDiagServiceJob(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsDbDiagServiceRepetitive(std::shared_ptr<OtxDataTypes::IOtxDbDiagService> dbDiagService) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsDbParameterConstant(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsDbParameterVariableLength(std::shared_ptr<OtxDataTypes::IOtxDbParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsFloatParameter(std::shared_ptr<OtxDataTypes::IOtxParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsIntegerParameter(std::shared_ptr<OtxDataTypes::IOtxParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsParameterConstant(std::shared_ptr<OtxDataTypes::IOtxParameter> dbParameter) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsTextTableParameter(std::shared_ptr<OtxDataTypes::IOtxParameter> dbParameter) = 0;
	};
}}}
#endif // OpenTestSystem_DiagDataBrowsingPlus_OtxDiagApi_IDiagDataBrowsingPlus_H