IsValidObject

 (Available in 01 TS COM - TS_COM_DelegateISink)

Purpose

Test if the object is 'Valid'

Syntax

IF oSomeObject:IsValidObject

Description

This flag returns TRUE if the object has been inited and if the object is not invalidated. E.g. the return value is TRUE if it is safe to use the object.

Example

IF oSomeObject:IsValidObject
// Start using the object
   ... 
ELSE
   TSTrace Warning "!oSomeObject:IsValidObject"
END

Source

ACCESS IsValidObject AS LOGIC PASCAL CLASS TS_DelegateISink
LOCAL lRetVal AS LOGIC
LOCAL oOwner AS OBJECT
   TSTrace Enter
   oOwner:=SELF:Owner
   DO CASE
   CASE oOwner==NULL_OBJECT
      TSTrace Warning NB Debug "oOwner==NULL_OBJECT"
      lRetVal:=FALSE
   CASE IsAccess( oOwner, #IsValidObject )
      IF IVarGet( oOwner, #IsValidObject )
         IF SELF:_ISink==NULL_OBJECT
            IF LOGIC( _CAST, SELF:_AlloweInInit )
               lRetVal:=TRUE
            ELSE
               TSTrace Warning NB Debug "SELF:_ISink==NULL_OBJECT"
               lRetVal:=FALSE
            END
         ELSE
            IF SELF:_ISink:IsValidObject
               lRetVal:=TRUE
            ELSE
               TSTrace Warning NB Debug "!IVarGet(SELF:_ISink,#IsValidObject)"
               lRetVal:=FALSE
            END
         END
         IF lRetVal
            IF SUPER:IsValidObject
               lRetVal:=TRUE
            ELSE
               TSTrace Warning NB Debug "!SUPER:IsValidObject"
               lRetVal:=FALSE
            END
         END
      ELSE
         TSTrace Warning NB Debug "!IVarGet(oOwner,#IsValidObject)"
         lRetVal:=FALSE
      END
   OTHERWISE
      TSTrace Warning NB Debug "!IsAccess(oOwner,#IsValidObject)"
      lRetVal:=FALSE
   END
   TSTrace Leave
RETURN lRetVal