1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

Integration of OCCT 6.5.0 from SVN

This commit is contained in:
bugmaster
2011-03-16 07:30:28 +00:00
committed by bugmaster
parent 4903637061
commit 7fd59977df
16375 changed files with 3882564 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
#include <Handle_Standard_Transient.hxx>
#include <Standard_Atomic.hxx>
//============================================================================
void Handle(Standard_Transient)::Dump(Standard_OStream& out) const
{
out << Access();
}
//============================================================================
void Handle(Standard_Transient)::Assign (const Standard_Transient *anItem)
{
Standard_Transient *anIt = ( anItem ? (Standard_Transient*)anItem : UndefinedHandleAddress );
if ( anIt == entity ) return;
EndScope();
entity = anIt;
BeginScope();
}
//============================================================================
void Handle(Standard_Transient)::BeginScope()
{
if (entity != UndefinedHandleAddress)
{
if ( Standard::IsReentrant() )
Standard_Atomic_Increment (&entity->count);
else
entity->count++;
}
}
//============================================================================
void Handle(Standard_Transient)::EndScope()
{
if (entity == UndefinedHandleAddress)
return;
if ( Standard::IsReentrant() ?
Standard_Atomic_DecrementTest (&entity->count) :
(--entity->count == 0) )
entity->Delete();
entity = UndefinedHandleAddress;
}