IsValidObject

 (Available in 01 TS COM - TS_COM_IUnknown)

Purpose

Test if the object is 'Valid'

Syntax

IF oSomeIObject: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 oSomeIObject:IsValidObject
// Start using the object
   ... 
ELSE
   TSTrace Warning "!oSomeIObject:IsValidObject"
END

Source

ACCESS IsValidObject CLASS TS_IUnknown
LOCAL lIsValidObject AS LOGIC
   TSTrace Enter
   DO CASE
   CASE IsDynPtr( PTR( _CAST, SELF ) )
      TSTrace Warning NB Debug "IsDynPtr(PTR(_CAST,SELF))"
      lIsValidObject:=FALSE
   CASE LOGIC( _CAST, SELF:_ObjectStat1 )
      DO CASE
      CASE LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_INDESTROY  ; ...
     ... ) )
         TSTrace Warning NB Debug "LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJSTAT1_INDESTROY))"
         lIsValidObject:=FALSE
      CASE LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_DESTROYED  ; ...
     ... ) )
         TSTrace Warning NB Debug "LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJSTAT1_DESTROYED))"
         lIsValidObject:=FALSE
      CASE LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_INVALID  ; ...
     ... ) )
         TSTrace Warning NB Debug "LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJSTAT1_INVALID))"
         lIsValidObject:=FALSE
      CASE LOGIC( _CAST, SELF:_AlloweInInit )
         lIsValidObject:=TRUE
      CASE SELF:RefCount<1
         TSTrace Warning NB Debug "SELF:RefCount<1"
         lIsValidObject:=FALSE
      CASE LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_ININIT  ; ...
     ... ) )
         TSTrace Warning NB Debug "LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJSTAT1_ININIT))"
         lIsValidObject:=FALSE
      CASE LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_COUNTMASK  ; ...
     ... ) )
         TSTrace Warning NB Debug "LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJSTAT1_COUNTMASK))"
         lIsValidObject:=FALSE
      OTHERWISE
         lIsValidObject:=TRUE
      END
   CASE LOGIC( _CAST, SELF:_AlloweInInit )
      lIsValidObject:=TRUE
   CASE SELF:RefCount<1
      TSTrace Warning NB Debug "SELF:RefCount<1"
      lIsValidObject:=FALSE
   OTHERWISE
      lIsValidObject:=TRUE
   END
   TSTrace Leave
RETURN lIsValidObject