Add

 (Available in 01 TS COM - TS_COM_StaticObjectsRepo)

Source

METHOD Add( oObject AS OBJECT ) AS PTR PASCAL CLASS TS_StaticObjectsRepo
LOCAL dwLevel AS DWORD
LOCAL dwSORID AS DWORD
LOCAL dwAStat AS DWORD
LOCAL hSORID AS PTR
   TSTrace Enter
   IF LOGIC( _CAST, SELF:_SORData )
      _TS_DynLock( PSZ( _CAST, __ENTITY__ ) )
      dwLevel:=0U
      dwSORID:=0U
      _TS_SORAdd( PTR( _CAST, oObject ), SELF:_SORData, @dwLevel ; ...
     ... , @dwSORID )
      IF !LOGIC( _CAST, dwSORID )
         dwLevel:=0U
         dwAStat:=_TS_SOR_ALLOC_NOSPACE
         _TS_SORAlloc( SELF:_SORData, @dwLevel, @dwAStat, _TS_SOR_MAX ; ...
        ... /_TS_SOR_STEP )
         DO CASE
         CASE dwAStat==_TS_SOR_ALLOC_SUCCEEDED
            dwLevel:=0U
            dwSORID:=0U
            _TS_SORAdd( PTR( _CAST, oObject ), SELF:_SORData,  ; ...
           ... @dwLevel, @dwSORID )
            IF !LOGIC( _CAST, dwSORID )
               TSTrace Error "!LOGIC(_CAST,dwSORID)"
            END
         CASE dwAStat==_TS_SOR_ALLOC_FAILED
            TSTrace Error "dwAStat==_TS_SOR_ALLOC_FAILED"
            dwSORID:=0U
         CASE dwAStat==_TS_SOR_ALLOC_NOSPACE
            TSTrace Error "dwAStat==_TS_SOR_ALLOC_NOSPACE"
            dwSORID:=0U
         OTHERWISE
            TSTrace Error "dwAStat==_TS_SOR_ALLOC_???"
            dwSORID:=0U
         END
      END
      _TS_DynUnLock( PSZ( _CAST, __ENTITY__ ) )
   ELSE
      TSTrace Error "!LOGIC(_CAST,SELF:_SORData)"
      dwSORID:=0U
   END
   hSORID:=PTR( _CAST, dwSORID )
   TSTrace Leave
RETURN hSORID