/*******************************************************************************
** Copyright (c) 1992-2025 MAK Technologies, Inc
** All rights reserved.
*******************************************************************************/
//! \file attributeFedNode.h
//! \ingroup omtReader
#pragma once

#include "datatypeFedNode.h"
#include <list>

//VR-Link Includes
#ifndef DtUSE_UTILITIES_NAMESPACE
#ifdef DtHLA_1516
#include "RTI/RTI1516.h"
#elif DtHLA
#include "RTI.hh"
#endif
#endif
#include <vlutil/vlString.h>
#ifdef DtHLA
#ifndef DtUSE_UTILITIES_NAMESPACE
#include <vl/rtiNamespace.h>
#endif
#endif
class DT_DLL_OMTREADER DtDatatypeRep;
#ifdef DtUSE_UTILITIES_NAMESPACE
namespace DtUSE_UTILITIES_NAMESPACE
{
#endif
//! Represents an attribute inside a object class
//! \ingroup omtReader
class DT_DLL_OMTREADER DtAttributeFedNode : public DtDatatypeFedNode
{
public:
   
   //! Default Constructor
   DtAttributeFedNode();
   
   //! Constructor that includes a parent node
   explicit DtAttributeFedNode(DtFedNode*);
   
   //! Destructor
   virtual ~DtAttributeFedNode();
   
   //! Copy Constructor
   DtAttributeFedNode(const DtAttributeFedNode& orig);
   
   //! Assignment Operator
   DtAttributeFedNode& operator=(const DtAttributeFedNode& rhs);

#ifdef DtHLA
#ifndef DtUSE_UTILITIES_NAMESPACE
   //! Set/Get Attribute Handle information
   virtual void setAttributeHandle(RTI::AttributeHandle);
   virtual const RTI::AttributeHandle getAttributeHandle() const;
#endif
#endif

   virtual void setUpdateType(const DtString&);
   virtual const DtString& getUpdateType() const;

   virtual void setUpdateCondition(const DtString&);
   virtual const DtString& getUpdateCondition() const;

   virtual void setTransferAccept(const DtString&);
   virtual const DtString& getTransferAccept() const;

   virtual void setSharing(const DtString&);
   virtual const DtString& getSharing() const;

   virtual void setTransportation(const DtString&);
   virtual const DtString& getTransportation() const;

   virtual void setOrder(const DtString&);
   virtual const DtString& getOrder() const;

   //! Get the list of Dimensions
   virtual void addDimension(const DtString& dimension);
   virtual const std::list<DtString>& getDimensions() const;

protected:
#ifdef DtHLA
#ifndef DtUSE_UTILITIES_NAMESPACE
   RTI::AttributeHandle myAttrHandle;
#endif
#endif

   //! The following are only used when filling this 
   //! attribute with OMT information.
   DtString myUpdateType;
   DtString myUpdateCondition;
   DtString myTransferAccept;
   DtString mySharing;
   DtString myTransportation;
   DtString myOrder;

   std::list<DtString> myDimensions;
};


#ifdef DtUSE_UTILITIES_NAMESPACE
} // end of namespace DtUSE_UTILITIES_NAMESPACE
#endif
