Files
UnrealEngine/Engine/Plugins/Enterprise/DatasmithCADImporter/Source/CADInterfaces/Public/TUniqueTechSoftObj.h
2025-05-18 13:04:45 +08:00

726 lines
29 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#ifdef USE_TECHSOFT_SDK
#include "TechSoftInterface.h"
namespace CADLibrary
{
// Single-ownership smart TeshSoft object
// Use this when you need to manage TechSoft object's lifetime.
//
// TechSoft give access to void pointers
// According to the context, the class name of the void pointer is known but the class is unknown
// i.e. A3DSDKTypes.h defines all type like :
// typedef void A3DEntity;
// typedef void A3DAsmModelFile; ...
//
// From a pointer, TechSoft give access to a copy of the associated structure :
//
// const A3DXXXXX* pPointer;
// A3DXXXXXData sData; // the structure
// A3D_INITIALIZE_DATA(A3DXXXXXData, sData); // initialization of the structure
// A3DXXXXXXGet(pPointer, &sData); // Copy of the data of the pointer in the structure
// ...
// A3DXXXXXXGet(NULL, &sData); // Free the structure
//
// A3D_INITIALIZE_DATA, and all A3DXXXXXXGet methods are TechSoft macro
//
template<class ObjectType, class IndexerType>
class TUniqueTSObjBase
{
public:
/**
* Constructor of an initialized ObjectType object
*/
TUniqueTSObjBase()
: bDataFromTechSoft(false)
, Status(A3DStatus::A3D_SUCCESS)
{
InitializeData();
}
/**
* Constructor of an filled ObjectType object with the data of DataPtr
* @param DataPtr: the pointer of the data to copy
*/
explicit TUniqueTSObjBase(IndexerType DataPtr)
: bDataFromTechSoft(false)
{
InitializeData();
FillFrom(DataPtr);
}
~TUniqueTSObjBase()
{
ResetData();
}
/**
* Fill the structure with the data of a new DataPtr
*/
A3DStatus FillFrom(IndexerType EntityPtr)
{
ResetData();
if (EntityPtr == GetDefaultIndexerValue())
{
Status = A3DStatus::A3D_ERROR;
}
else
{
Status = GetData(EntityPtr);
if (Status == A3DStatus::A3D_SUCCESS)
{
bDataFromTechSoft = true;
}
}
return Status;
}
template<typename... InArgTypes>
A3DStatus FillWith(A3DStatus(*Getter)(const A3DEntity*, ObjectType*, InArgTypes&&...), const A3DEntity* EntityPtr, InArgTypes&&... Args)
{
ResetData();
if (EntityPtr == GetDefaultIndexerValue())
{
Status = A3DStatus::A3D_ERROR;
}
else
{
Status = Getter(EntityPtr, &Data, Forward<InArgTypes>(Args)...);
if (Status == A3DStatus::A3D_SUCCESS)
{
bDataFromTechSoft = true;
}
}
return Status;
}
/**
* Empty the structure
*/
void Reset()
{
ResetData();
}
/**
* Return
* - A3DStatus::A3D_SUCCESS if the data is filled
* - A3DStatus::A3D_ERROR if the data is empty
*/
A3DStatus GetStatus()
{
return Status;
}
/**
* Return true if the data is filled
*/
const bool IsValid() const
{
return Status == A3DStatus::A3D_SUCCESS;
}
// Non-copyable
TUniqueTSObjBase(const TUniqueTSObjBase&) = delete;
TUniqueTSObjBase& operator=(const TUniqueTSObjBase&) = delete;
// Conversion methods
const ObjectType& operator*() const
{
return Data;
}
ObjectType& operator*()
{
check(IsValid());
return Data;
}
const ObjectType* operator->() const
{
check(IsValid());
return &Data;
}
ObjectType* operator->()
{
check(IsValid());
return &Data;
}
/**
* Return the structure pointer
*/
ObjectType* GetPtr()
{
if (Status != A3DStatus::A3D_SUCCESS)
{
return nullptr;
}
return &Data;
}
private:
ObjectType Data;
bool bDataFromTechSoft = false;
A3DStatus Status = A3DStatus::A3D_ERROR;
/**
* DefaultValue is used to initialize "Data" with GetData method
* According to IndexerType, the value is either nullptr for const A3DEntity* either something like "A3D_DEFAULT_MATERIAL_INDEX" ((A3DUns16)-1) for uint32
* @see ResetData
*/
CADINTERFACES_API IndexerType GetDefaultIndexerValue() const;
CADINTERFACES_API void InitializeData()
#ifdef USE_TECHSOFT_SDK
;
#else
{
return A3DStatus::A3D_ERROR;
}
#endif
CADINTERFACES_API A3DStatus GetData(IndexerType AsmModelFilePtr);
#ifdef USE_TECHSOFT_SDK
;
#else
{
return A3DStatus::A3D_ERROR;
}
#endif
void ResetData()
{
if (bDataFromTechSoft)
{
GetData(GetDefaultIndexerValue());
}
else
{
InitializeData();
}
Status = A3DStatus::A3D_SUCCESS;
bDataFromTechSoft = false;
}
};
template<class ObjectType>
using TUniqueTSObj = TUniqueTSObjBase<ObjectType, const A3DEntity*>;
template<class ObjectType>
using TUniqueTSObjFromIndex = TUniqueTSObjBase<ObjectType, uint32>;
// TUniqueTSObj -----------------------------------
template<>
CADINTERFACES_API void TUniqueTSObj<A3DAsmModelFileData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DAsmPartDefinitionData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DAsmProductOccurrenceData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DAsmProductOccurrenceDataCV5>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DAsmProductOccurrenceDataSLW>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DAsmProductOccurrenceDataUg>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DBoundingBoxData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCopyAndAdaptBrepModelData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvCircleData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvCompositeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvEllipseData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvHelixData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvHyperbolaData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvLineData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvNurbsData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvParabolaData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvPolyLineData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DCrvTransformData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DDomainData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DGlobalData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DGraphicsData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DIntervalData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscAttributeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscCartesianTransformationData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscEntityReferenceData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscGeneralTransformationData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscMaterialPropertiesData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscReferenceOnCsysItemData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscReferenceOnTessData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscReferenceOnTopologyData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DMiscSingleAttributeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRWParamsExportPrcData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRiBrepModelData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRiCoordinateSystemData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRiDirectionData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRiPolyBrepModelData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRiRepresentationItemData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRiSetData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRootBaseData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRootBaseWithGraphicsData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DRWParamsTessellationData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSewOptionsData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfBlend01Data>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfBlend02Data>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfBlend03Data>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfConeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfCylinderData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfCylindricalData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfExtrusionData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfFromCurvesData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfNurbsData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfPipeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfPlaneData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfRevolutionData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfRuledData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfSphereData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DSurfTorusData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTess3DData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTessBaseData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoBodyData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoBrepDataData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoCoEdgeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoConnexData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoContextData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoEdgeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoFaceData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoLoopData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoShellData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoUniqueVertexData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DTopoWireEdgeData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DVector2dData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObj<A3DVector3dData>::InitializeData();
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DAsmModelFileData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DAsmPartDefinitionData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DAsmProductOccurrenceData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DAsmProductOccurrenceDataCV5>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DAsmProductOccurrenceDataSLW>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DAsmProductOccurrenceDataUg>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DBoundingBoxData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCopyAndAdaptBrepModelData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvCircleData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvCompositeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvEllipseData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvHelixData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvHyperbolaData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvLineData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvNurbsData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvParabolaData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvPolyLineData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DCrvTransformData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DDomainData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DGlobalData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DGraphicsData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DIntervalData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscAttributeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscCartesianTransformationData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscEntityReferenceData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscGeneralTransformationData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscMaterialPropertiesData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscReferenceOnCsysItemData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscReferenceOnTessData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscReferenceOnTopologyData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DMiscSingleAttributeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRWParamsExportPrcData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRiBrepModelData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRiCoordinateSystemData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRiDirectionData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRiPolyBrepModelData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRiRepresentationItemData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRiSetData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRootBaseData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRootBaseWithGraphicsData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DRWParamsTessellationData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSewOptionsData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfBlend01Data>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfBlend02Data>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfBlend03Data>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfConeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfCylinderData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfCylindricalData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfExtrusionData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfFromCurvesData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfNurbsData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfPipeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfPlaneData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfRevolutionData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfRuledData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfSphereData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DSurfTorusData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTess3DData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTessBaseData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoBodyData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoBrepDataData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoCoEdgeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoConnexData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoContextData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoEdgeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoFaceData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoLoopData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoShellData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoUniqueVertexData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DTopoWireEdgeData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DVector2dData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DVector3dData>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DAsmModelFileData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DAsmPartDefinitionData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DAsmProductOccurrenceData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DAsmProductOccurrenceDataCV5>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DAsmProductOccurrenceDataSLW>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DAsmProductOccurrenceDataUg>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DBoundingBoxData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCopyAndAdaptBrepModelData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvCircleData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvCompositeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvEllipseData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvHelixData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvHyperbolaData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvLineData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvNurbsData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvParabolaData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvPolyLineData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DCrvTransformData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DDomainData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DGlobalData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DGraphicsData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DIntervalData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscAttributeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscCartesianTransformationData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscEntityReferenceData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscGeneralTransformationData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscMaterialPropertiesData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscReferenceOnCsysItemData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscReferenceOnTessData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscReferenceOnTopologyData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DMiscSingleAttributeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRWParamsExportPrcData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRiBrepModelData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRiCoordinateSystemData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRiDirectionData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRiPolyBrepModelData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRiRepresentationItemData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRiSetData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRootBaseData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRootBaseWithGraphicsData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DRWParamsTessellationData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSewOptionsData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfBlend01Data>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfBlend02Data>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfBlend03Data>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfConeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfCylinderData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfCylindricalData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfExtrusionData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfFromCurvesData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfNurbsData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfPipeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfPlaneData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfRevolutionData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfRuledData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfSphereData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DSurfTorusData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTess3DData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTessBaseData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoBodyData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoBrepDataData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoCoEdgeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoConnexData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoContextData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoEdgeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoFaceData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoLoopData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoShellData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoUniqueVertexData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DTopoWireEdgeData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DVector2dData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DVector3dData>::GetDefaultIndexerValue() const;
// TUniqueTSObjFromIndex -----------------------------------
template<>
CADINTERFACES_API void TUniqueTSObjFromIndex<A3DGraphMaterialData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObjFromIndex<A3DGraphPictureData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObjFromIndex<A3DGraphRgbColorData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObjFromIndex<A3DGraphStyleData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObjFromIndex<A3DGraphTextureApplicationData>::InitializeData();
template<>
CADINTERFACES_API void TUniqueTSObjFromIndex<A3DGraphTextureDefinitionData>::InitializeData();
template<>
CADINTERFACES_API A3DStatus TUniqueTSObjFromIndex<A3DGraphMaterialData>::GetData(const uint32 InEntityIndex);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObjFromIndex<A3DGraphPictureData>::GetData(const uint32 InEntityIndex);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObjFromIndex<A3DGraphRgbColorData>::GetData(const uint32 InEntityIndex);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObjFromIndex<A3DGraphStyleData>::GetData(const uint32 InEntityIndex);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObjFromIndex<A3DGraphTextureApplicationData>::GetData(const uint32 InEntityIndex);
template<>
CADINTERFACES_API A3DStatus TUniqueTSObjFromIndex<A3DGraphTextureDefinitionData>::GetData(const uint32 InEntityIndex);
template<>
CADINTERFACES_API uint32 TUniqueTSObjFromIndex<A3DGraphMaterialData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API uint32 TUniqueTSObjFromIndex<A3DGraphPictureData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API uint32 TUniqueTSObjFromIndex<A3DGraphRgbColorData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API uint32 TUniqueTSObjFromIndex<A3DGraphStyleData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API uint32 TUniqueTSObjFromIndex<A3DGraphTextureApplicationData>::GetDefaultIndexerValue() const;
template<>
CADINTERFACES_API uint32 TUniqueTSObjFromIndex<A3DGraphTextureDefinitionData>::GetDefaultIndexerValue() const;
// A3DUTF8Char* -----------------------------------
template<>
CADINTERFACES_API void TUniqueTSObj<A3DUTF8Char*>::InitializeData();
template<>
CADINTERFACES_API A3DStatus TUniqueTSObj<A3DUTF8Char*>::GetData(const A3DEntity* InEntityPtr);
template<>
CADINTERFACES_API const A3DEntity* TUniqueTSObj<A3DUTF8Char*>::GetDefaultIndexerValue() const;
class CADINTERFACES_API FTechSoftDefaultValue
{
public:
static const uint32 Material;
static const uint32 Picture;
static const uint32 RgbColor;
static const uint32 Style;
static const uint32 TextureApplication;
static const uint32 TextureDefinition;
};
}
#endif