///////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2002-2025, Open Design Alliance (the "Alliance").
// All rights reserved.
//
// This software and its documentation and related materials are owned by
// the Alliance. The software may only be incorporated into application
// programs owned by members of the Alliance, subject to a signed
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable
// trade secrets of the Alliance and its suppliers. The software is also
// protected by copyright law and international treaty provisions. Application
// programs incorporating this software must include the following statement
// with their copyright notices:
//
// This application incorporates Open Design Alliance software pursuant to a license
// agreement with Open Design Alliance.
// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.
// All rights reserved.
//
// By use of this software, its documentation or related materials, you
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
#ifndef _ODTV_MODELREFERENCE_H_INCLUDED_
#define _ODTV_MODELREFERENCE_H_INCLUDED_
#include "Tv.h"
#include "TvModel.h"
/** \details
The base interface class for getting access to Visualize SDK model reference objects.
*/
class ODTV_EXPORT OdTvModelReference : public OdTvModel
{
public:
/** \details
Retrives referenced model name.
\param rc [out] A pointer to a value of the type that contains the result of the operation.
\returns A referenced model name.
*/
virtual const OdString& referencedModelName( OdTvResult* rc = nullptr ) const = 0;
/** \details
Retrives referenced database path.
\param rc [out] A pointer to a value of the type that contains the result of the operation.
\returns A referenced database path.
*/
virtual const OdString& referencedDatabasePath( OdTvResult* rc = nullptr ) const = 0;
/** \details
Specifies whether model reference can be selected or not.
\param bSelectable [in] A flag that determines whether the model reference can be selected or not.
\returns A value of the type that contains the result of the operation.
*/
virtual OdTvResult setSelectable( bool bSelectable ) = 0;
/** \details
Retrives whether model reference can be selected or not.
\param rc [out] A pointer to a value of the type that contains the result of the operation.
\returns A flag that determines whether the model reference can be selected or not.
*/
virtual bool getSelectable( OdTvResult * rc = nullptr ) const = 0;
/** \details
Returns the CDA (Common Data Access) tree storage for referenced model.
\param rc [out] A pointer to a value of the type that contains the result of the operation.
\returns An identifier of the CDA (Common Data Access ) tree storage.
\remarks
If the rc parameter is not null and the CDA tree storage ID has been successfully retrieved, the rc parameter accepts the tvOk value, otherwise it contains an
appropriate error code.
*/
virtual OdTvCDATreeStorageId getCDATreeStorage( OdTvResult* rc = NULL ) = 0;
};
/** \details
A data type that represents a smart pointer to an object.
*/
typedef OdTvSmartPtr OdTvModelReferencePtr;
#endif //_ODTV_MODELREFERENCE_H_INCLUDED_