fw4spl
fwAtomsPatch::ISemanticPatch Class Reference

Base class of contextual patches. More...

#include <ISemanticPatch.hpp>

+ Inheritance diagram for fwAtomsPatch::ISemanticPatch:
+ Collaboration diagram for fwAtomsPatch::ISemanticPatch:

Classes

struct  Context
 Struct used to store a context and the versions where the patch can be applied. More...
 

Public Member Functions

virtual bool isA (const std::string &type) const override
 
FWATOMSPATCH_API ISemanticPatch ()
 Constructor.
 
FWATOMSPATCH_API ISemanticPatch (const ISemanticPatch &cpy)
 Copy constructor.
 
virtual FWATOMSPATCH_API ~ISemanticPatch ()
 Destructor.
 
virtual FWATOMSPATCH_API void apply (const std::shared_ptr< ::fwAtoms::Object > &previous, const std::shared_ptr< ::fwAtoms::Object > &current,::fwAtomsPatch::IPatch::NewVersionsType &newVersions) override
 Applies modifications between given objects. More...
 
virtual FWATOMSPATCH_API bool isApplicable (const std::string &context, const std::string &originVersion, const std::string &targetVersion) const
 Returns true if patch is applicable into the context from origin to target versions. More...
 
- Public Member Functions inherited from fwAtomsPatch::IPatch
FWATOMSPATCH_API IPatch ()
 Constructor. Does nothing.
 
FWATOMSPATCH_API IPatch (const IPatch &cpy)
 Copy constructor.
 
virtual FWATOMSPATCH_API ~IPatch ()
 Destructor. Does nothing.
 
virtual FWATOMSPATCH_API void apply (const ::fwAtoms::Object::sptr &previous, const ::fwAtoms::Object::sptr &current,::fwAtomsPatch::IPatch::NewVersionsType &newVersions)=0
 Applies the patch to the specified object.
 
virtual FWATOMSPATCH_API const std::string & getOriginClassname () const
 Returns the origin classname of the object.
 
virtual FWATOMSPATCH_API const std::string & getOriginVersion () const
 Returns the origin version of the object.
 
- Public Member Functions inherited from fwCore::BaseObject

Static Public Member Functions

static bool isTypeOf (const std::string &type)
 
- Static Public Member Functions inherited from fwAtomsPatch::IPatch
static bool isTypeOf (const std::string &type)
 
static const std::string & leafClassname ()
 return object's classname without its namespace, i.e. BaseObject
 
static const std::string & classname ()
 return object's classname without its namespace, i.e. BaseObject
 
- Static Public Member Functions inherited from fwCore::BaseObject
static bool isTypeOf (const std::string &type)
 
static const std::string & leafClassname ()
 return object's classname without its namespace, i.e. BaseObject
 
static const std::string & classname ()
 return object's classname without its namespace, i.e. BaseObject
 

Protected Types

Typedefs
typedef std::vector< ContextContextVectorType
 

Protected Member Functions

virtual FWATOMSPATCH_API void addContext (const std::string &context, const std::string &originVersion, const std::string &targetVersion)
 Add a context where the patch can be applied. More...
 

Protected Attributes

mutable::fwCore::mt::ReadWriteMutex m_mutex
 Mutex to protect concurrent access for m_contexts.
 
ContextVectorType m_contexts
 Vector used to store the contexts where the patch can be applied.
 
- Protected Attributes inherited from fwAtomsPatch::IPatch
std::string m_originClassname
 Origin classname of the object.
 
std::string m_originVersion
 Origin version of the object.
 

Demangling methods

virtual const std::string & getLeafClassname () const override
 return object's classname without its namespace, i.e. BaseObject
 
virtual const std::string & getClassname () const override
 return full object's classname with its namespace, i.e. fwCore::BaseObject
 
static const std::string & leafClassname ()
 return object's classname without its namespace, i.e. BaseObject
 
static const std::string & classname ()
 return object's classname without its namespace, i.e. BaseObject
 

Additional Inherited Members

- Public Types inherited from fwAtomsPatch::IPatch
typedef std::map< ::fwAtoms::Object::sptr,::fwAtoms::Object::sptr > NewVersionsType
 

Detailed Description

Base class of contextual patches.

Definition at line 30 of file ISemanticPatch.hpp.

Member Function Documentation

void fwAtomsPatch::ISemanticPatch::addContext ( const std::string &  context,
const std::string &  originVersion,
const std::string &  targetVersion 
)
protectedvirtual

Add a context where the patch can be applied.

Note
This method is thread safe.

Definition at line 36 of file ISemanticPatch.cpp.

References m_contexts, and m_mutex.

Referenced by fwMDSemanticPatch::V1::V2::fwData::Acquisition::Acquisition(), fwMDSemanticPatch::V1::V2::fwData::Composite::Composite(), fwMDSemanticPatch::V10::V09ALA::fwData::Image::Image(), fwMDSemanticPatch::V2::V03AGO::fwData::Image::Image(), fwMDSemanticPatch::V09ALA::V10::fwData::Image::Image(), fwMDSemanticPatch::V1::V2::fwData::Patient::Patient(), and fwMDSemanticPatch::V1::V2::fwData::Study::Study().

+ Here is the caller graph for this function:

void fwAtomsPatch::ISemanticPatch::apply ( const std::shared_ptr< ::fwAtoms::Object > &  previous,
const std::shared_ptr< ::fwAtoms::Object > &  current,
::fwAtomsPatch::IPatch::NewVersionsType &  newVersions 
)
overridevirtual

Applies modifications between given objects.

Parameters
previousobject from which modifications will be applied
currentobject receiving modifications
newVersionsmap containing already patched sub objects
Precondition
previous and current objects must have the same classname and version.

Definition at line 58 of file ISemanticPatch.cpp.

References fwAtomsPatch::helper::getClassname(), fwAtomsPatch::helper::getVersion(), fwAtomsPatch::IPatch::m_originClassname, fwAtomsPatch::IPatch::m_originVersion, and OSLM_ASSERT.

+ Here is the call graph for this function:

bool fwAtomsPatch::ISemanticPatch::isApplicable ( const std::string &  context,
const std::string &  originVersion,
const std::string &  targetVersion 
) const
virtual

Returns true if patch is applicable into the context from origin to target versions.

Note
This method is thread safe.

Definition at line 46 of file ISemanticPatch.cpp.

References m_contexts, and m_mutex.


The documentation for this class was generated from the following files: