Skip to main content

getClonedComparator

Short summary

prepares a new Comparator (if set)

Parameters

NameTypeCommentKind
newComparatorCNM_AbstractObject.IComparatorNew comparator Object, null if not existent or not cloneableoutput
deepClonedBOOLTrue if called from deepclonecontextinput

Code

Declaration

METHOD PROTECTED getClonedComparator : CNM_ReturnTypes.CloneResult
VAR_INPUT
(*True if called from deepclonecontext*)
deepCloned :BOOL;
END_VAR
VAR
newComparatorObject :CNM_AbstractObject.IObject;
END_VAR
VAR_OUTPUT
(*New comparator Object, null if not existent or not cloneable*)
newComparator :CNM_AbstractObject.IComparator;
END_VAR

Implementation

IF deepCloned THEN
IF NOT (((
getClonedComparator := THIS^.nodeComparator.deepClone(clonedObject => newComparatorObject)
) = (
CNM_ReturnTypes.CloneResult.SUCCESS
)
) AND_THEN (
__QUERYINTERFACE(newComparatorObject, newComparator)
)
) THEN
getClonedComparator := CNM_ReturnTypes.CloneResult.FAILED;
IF THIS^.isObjectValid(newComparatorObject) THEN
newComparatorObject.deepDestruct();
END_IF;
RETURN;
END_IF
ELSE
IF NOT (((
getClonedComparator := THIS^.nodeComparator.clone(clonedObject => newComparatorObject)
) = (
CNM_ReturnTypes.CloneResult.SUCCESS
)
) AND_THEN (
__QUERYINTERFACE(newComparatorObject, newComparator)
)
) THEN
getClonedComparator := CNM_ReturnTypes.CloneResult.FAILED;
IF THIS^.isObjectValid(newComparatorObject) THEN
newComparatorObject.destruct();
END_IF;
RETURN;
END_IF
END_IF