IsValidObject

 (Available in 01 TS COM - TS_COM_ISink)

Purpose

Invalidate the object

Syntax

SELF:InvalidateObject( )

Description

Invalidates the object, this method is normaly only called from the 'Init()' method of the object. When this method is called then the destroy method could take extra care while destroying resources knowing the the object never reached a 'valid' state.

Example

METHOD INIT( ..., ...  ; ...
...) CLASS SomeIClass
// Most secure ( and complex ) form of an 'safe' init method
// See also the 'Init()' method documentation
   DO CASE
   CASE SELF:IsInited
      TSTrace Warning "Can not re-init"
   CASE SELF:IsInInit
      SELF:CountInInit( TRUE )
//    From here on insert you own initialization code
//    It is better not to call any object method/access/assign
//    Process the parameters
      ..., ... 
      IF lParameterError
         TSTrace Warning "... parameter error ..."
         SELF:InvalidateObject( )
      END
//    At this point all initialization code should be done
      SELF:CountInInit( FALSE )
      IF SELF:IsValidObject
         SUPER:INIT( ... ; ...
        ... , ... )
         IF SELF:NeedNew
            SELF:NeedNew:=FALSE
//          Put your 'PostInit()' code in the 'New()' method
            SELF:NEW( ... ; ...
           ... , ... )
         END
      ELSE
         TSTrace Warning TS_TEXT_GEN_CAN_NOT_INITIALIZE
         SELF:InvalidateObject( )
      END
   OTHERWISE
      TSTrace Warning "This can not happen"
   END
RETURN SELF

Source

ACCESS IsValidObject CLASS TS_ISink
LOCAL lIsValidObject AS LOGIC
   TSTrace Enter
   DO CASE
   CASE SELF:_AISource==NULL_OBJECT .AND. SELF:_AlloweInInit ; ...
  ... ==0
      TSTrace Warning NB Debug "SELF:_AISource==NULL_OBJECT"
      lIsValidObject:=FALSE
   CASE SELF:_IOwner==NULL_OBJECT
      lIsValidObject:=SUPER:IsValidObject
   CASE SELF:_IOwner:IsValidObject
      lIsValidObject:=SUPER:IsValidObject
   OTHERWISE
      TSTrace Warning NB Debug "!SELF:_IOwner:IsValidObject"
      lIsValidObject:=FALSE
   END
   TSTrace Leave
RETURN lIsValidObject