EvalArray

 (Available in 00 TS Base(Base) - TS_Base_0_Traverse)

Source

METHOD EvalArray( aItem AS ARRAY, aReUse AS ARRAY, aSelfReference AS ARRAY ) AS LOGIC  ; ...
...PASCAL CLASS TS_Traverse
LOCAL oTraverse AS TS_Traverse
LOCAL lEval AS LOGIC
LOCAL X AS DWORD
   lEval:=TRUE
   SELF:Arrays+=1U
   IF aItem==NULL_ARRAY
      SELF:NullArrays+=1U
   END
   IF LOGIC( _CAST, aReUse )
      SELF:ArrayReUses+=1U
   END
   IF SELF:_Profiling
      DO CASE
      CASE LOGIC( _CAST, aSelfReference )
         IF LOGIC( _CAST, aItem )
            IF SELF:_ShowRXIndexes
               IF LOGIC( _CAST, ALen( aSelfReference ) )
                  SELF:_ProfileAddString( "X'"+NTrim( aSelfReference ; ...
                 ... [ 1U ] ) )
                  FOR X:=2U UPTO ALen( aSelfReference )
                     SELF:_ProfileAddString( ";"+NTrim( aSelfReference ; ...
                    ... [ X ] ) )
                  NEXT
                  SELF:_ProfileAddString( "'" )
               ELSE
                  SELF:_ProfileAddString( "X'0'" )
               END
            ELSE
               SELF:_ProfileAddString( "X" )
            END
            IF SELF:_ShowStatisticsInProfile
               oTraverse:=TS_Traverse{ FALSE, FALSE }
               IF oTraverse:Traverse( aItem )
                  _TS_ModuleInternalErrors( "oTraverse:Traverse(aItem)", __ENTITY__ ; ...
                 ... , __LINE__, ES_ERROR )
                  SELF:Errors:=TRUE
               ELSE
                  SELF:_ProfileAddString( "["+oTraverse:Statistics ; ...
                 ... +"]" )
               END
               oTraverse:=NULL_OBJECT
            END
         ELSE
            _TS_ModuleInternalErrors( TS_S_THISSHOULDNEVERHAPPEN, __ENTITY__, __LINE__ ; ...
           ... , ES_WARNING )
            SELF:_ProfileAddString( "x" )
         END
      CASE LOGIC( _CAST, aReUse )
         IF LOGIC( _CAST, aItem )
            IF SELF:_ShowRXIndexes
               IF LOGIC( _CAST, ALen( aReUse ) )
                  SELF:_ProfileAddString( "R'"+NTrim( aReUse[  ; ...
                 ... 1U ] ) )
                  FOR X:=2U UPTO ALen( aReUse )
                     SELF:_ProfileAddString( ";"+NTrim( aReUse ; ...
                    ... [ X ] ) )
                  NEXT
                  SELF:_ProfileAddString( "'" )
               ELSE
                  SELF:_ProfileAddString( "R'0'" )
               END
            ELSE
               SELF:_ProfileAddString( "R" )
            END
            IF SELF:_ShowStatisticsInProfile
               oTraverse:=TS_Traverse{ FALSE, FALSE }
               IF oTraverse:Traverse( aItem )
                  _TS_ModuleInternalErrors( "oTraverse:Traverse(aItem)", __ENTITY__ ; ...
                 ... , __LINE__, ES_ERROR )
                  SELF:Errors:=TRUE
               ELSE
                  SELF:_ProfileAddString( "["+oTraverse:Statistics ; ...
                 ... +"]" )
               END
               oTraverse:=NULL_OBJECT
            END
         ELSE
            _TS_ModuleInternalErrors( TS_S_THISSHOULDNEVERHAPPEN, __ENTITY__, __LINE__ ; ...
           ... , ES_WARNING )
            SELF:_ProfileAddString( "r" )
         END
      OTHERWISE
         IF LOGIC( _CAST, aItem )
            SELF:_ProfileAddString( "A" )
         ELSE
            SELF:_ProfileAddString( "a" )
         END
      END
   END
RETURN lEval