// Created by: DAUTRY Philippe
// Copyright (c) 1997-1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.

//      	---------------

// Version:	0.0
// Version	Date		Purpose
//		0.0	Mar 11 1997	Creation

#include "TDF_Label.hxx"
#include "TDF_Attribute.hxx"

// IsEmpty
//=========
inline bool TDF_DataSet::IsEmpty() const
{
  return (myLabelMap.IsEmpty() && myAttributeMap.IsEmpty());
}

// Labels
//========
inline void TDF_DataSet::AddLabel(const TDF_Label& aLabel)
{
  if (!aLabel.IsNull())
    myLabelMap.Add(aLabel);
}

inline bool TDF_DataSet::ContainsLabel(const TDF_Label& aLabel) const
{
  return myLabelMap.Contains(aLabel);
}

inline NCollection_Map<TDF_Label>& TDF_DataSet::Labels()
{
  return myLabelMap;
}

// Attributes
//============

inline void TDF_DataSet::AddAttribute(const occ::handle<TDF_Attribute>& anAttribute)
{
  if (!anAttribute.IsNull())
    myAttributeMap.Add(anAttribute);
}

inline bool TDF_DataSet::ContainsAttribute(const occ::handle<TDF_Attribute>& anAttribute) const
{
  return myAttributeMap.Contains(anAttribute);
}

inline NCollection_Map<occ::handle<TDF_Attribute>>& TDF_DataSet::Attributes()
{
  return myAttributeMap;
}

// Root labels
//=============

inline void TDF_DataSet::AddRoot(const TDF_Label& aLabel)
{
  if (ContainsLabel(aLabel))
    myRootLabels.Append(aLabel);
}

inline NCollection_List<TDF_Label>& TDF_DataSet::Roots()
{
  return myRootLabels;
}
