LoadClassMembers

 (Available in 01 TS COM - TS_COM_IDispatch)

Source

METHOD LoadClassMembers( ) CLASS TS_IDispatch
LOCAL symSelfClassName AS SYMBOL
LOCAL aClassMemberData AS ARRAY
LOCAL aClassMemberRepo AS ARRAY
LOCAL oCOMGlobalData AS _TS_COMGlobalData
LOCAL lRetVal AS LOGIC
LOCAL X AS DWORD
   TSTrace Enter
   oCOMGlobalData:=_TS_ModuleGetCOMGlobalData( )
   aClassMemberRepo:=oCOMGlobalData:_ClassMemberRepo
   DO CASE
   CASE SELF:_ClassMembersLoaded
      TSTrace Warning "SELF:_ClassMembersLoaded"
      lRetVal:=FALSE
   CASE aClassMemberRepo==NULL_ARRAY
      TSTrace Warning "aClassMemberRepo==NULL_ARRAY"
      lRetVal:=FALSE
   CASE SELF:_ClassMemberAccess<>NULL_PTR
      TSTrace Warning "SELF:_ClassMemberAccess<>NULL_PTR"
      lRetVal:=FALSE
   CASE SELF:_ClassMemberAssign<>NULL_PTR
      TSTrace Warning "SELF:_ClassMemberAssign<>NULL_PTR"
      lRetVal:=FALSE
   CASE SELF:_ClassMemberMethod<>NULL_PTR
      TSTrace Warning "SELF:_ClassMemberMethod<>NULL_PTR"
      lRetVal:=FALSE
   OTHERWISE
      symSelfClassName:=ClassName( SELF )
      X:=AScan( aClassMemberRepo, { | _a | _a[ _TS_DISP_CM_NAMESYM ]==symSelfClassName  ; ...
     ... } )
      IF LOGIC( _CAST, X )
         aClassMemberData:=aClassMemberRepo[ X ]
         SELF:_ClassMemberAccess:=aClassMemberData[ _TS_DISP_CM_ACCESSP  ; ...
        ... ]
         SELF:_ClassMemberAssign:=aClassMemberData[ _TS_DISP_CM_ASSIGNP  ; ...
        ... ]
         SELF:_ClassMemberMethod:=aClassMemberData[ _TS_DISP_CM_METHODP  ; ...
        ... ]
         aClassMemberData[ _TS_DISP_CM_REFCOUNT ]:=aClassMemberData[ _TS_DISP_CM_REFCOUNT  ; ...
        ... ]+1L
         SELF:_ClassMembersLoaded:=TRUE
         lRetVal:=TRUE
      ELSE
         lRetVal:=FALSE
      END
   END
   TSTrace Leave
RETURN lRetVal