INIT

 (Available in 01 TS COM - TS_COM_VariantArg)

Source

METHOD INIT( uoOwner, uValue, udwType ) CLASS TS_VariantArg
LOCAL cAccessTypeList AS STRING
LOCAL dwType AS DWORD
LOCAL lInit AS LOGIC
   TSTrace Enter CREATE
   IF LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_ININIT  ; ...
  ... ) )
      SELF:_ObjectStat1+=TS_OBJSTAT1_COUNTVALUE
      cAccessTypeList:=TS_AccessTypeList( uoOwner, udwType )
      DO CASE
      CASE cAccessTypeList=="UU" .OR. cAccessTypeList=="OU"
         dwType:=SELF:_Type
         lInit:=TRUE
      CASE cAccessTypeList=="UN" .OR. cAccessTypeList=="ON"
         dwType:=udwType
         lInit:=TRUE
      OTHERWISE
         TSTrace Warning "Invalid parameter(s), Expected 'U|O', 'U|(Any)' and 'U|N(DW)'" ; ...
        ... +", Found '"+cAccessTypeList+"'"
         SELF:InvalidateObject( )
         lInit:=FALSE
      END
      IF lInit
         SUPER:INIT( uoOwner, NIL, NIL )
         IF SELF:IsInvalidated
            TSTrace Warning "SELF:IsInvalidated"
            SELF:InvalidateObject( )
         ELSE
            SELF:_WinVariantArgBot:=MemAlloc( _SIZEOF( _WinVARIANTARG  ; ...
           ... ) )
            IF SELF:_WinVariantArgBot==NULL_PTR
               TSTrace Fatal "SELF:_WinVariantArgBot:=MemAlloc(_SizeOf(_WinVARIANTARG))==NULL_PTR"
               SELF:InvalidateObject( )
            ELSE
               VariantInit( SELF:_WinVariantArgBot )
               IF !IsNil( uValue )
                  SELF:Value:=uValue
               END
               DO CASE
               CASE dwType==TS_USUAL2VARIANT_MAKE_VARIANT
                  SELF:Convert2Variant( )
               CASE dwType==TS_USUAL2VARIANT_MAKE_BYREF
                  SELF:Convert2ByRef( )
               CASE dwType<>TS_USUAL2VARIANT_MAKE_NORMAL
                  TSTrace Warning "SELF:_Type<>TS_USUAL2VARIANT_MAKE_NORMAL .AND. " ; ...
                 ... +"SELF:_Type<>TS_USUAL2VARIANT_MAKE_VARIANT .AND. SELF:_Type<>TS_USUAL2VARIANT_MAKE_BYREF"
               END
               SELF:RegisterAxit( )
            END
         END
      END
      SELF:_ObjectStat1-=TS_OBJSTAT1_COUNTVALUE
      IF _AND( SELF:_ObjectStat1, TS_OBJSTAT1_NEWTEST )==TS_OBJSTAT1_NEEDNEW
         SELF:_ObjectStat1:=_AND( SELF:_ObjectStat1 ; ...
        ... , _NOT( TS_OBJSTAT1_NEEDNEW ) )
         IF SELF:IsValidObject
            SELF:NEW( uoOwner, uValue, udwType )
         ELSE
            TSTrace Warning TS_TEXT_GEN_CAN_NOT_INITIALIZE
            SELF:InvalidateObject( )
         END
      END
   ELSE
      TSTrace Warning "!LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJECT_STATUS_ININIT))"
   END
   TSTrace Leave
RETURN SELF