* Version....: 1.0
* Author.....: Maurice de Beijer
* Date.......: January 29, 1998
* Notice.....: Copyright (c) 1996-1998 ABL, All Rights Reserved.
* Compiler...: Visual FoxPro 05.00.00.0415 for Windows 
* Abstract...: Creates a one dimensional array with a pointer 
*              to all object contained within the object
*
* Returns....: The number of selected objects
*
* Parameters.: taTarget
*                Target array (passed by reference)
*              taObject
*                Container object reference
*
LPARAMETERS taTarget, taObject

LOCAL lnCount
lnCount = 0

DIMENSION taTarget[1, 1]
taTarget = NULL

*
* Make sure an object was passed
*
IF TYPE('taObject') = 'O' AND !ISNULL(taObject)
   *
   * Object passed into recursive call
   *
   object2array(@taTarget, taObject)
   
   IF TYPE('taTarget[1]') = 'O'
      *
      * Retun the number of objects
      *
      lnCount = ALEN(taTarget, 1)
   ENDIF
ENDIF

RETURN lnCount




*-------------------------------------------------------
* Function....: Object2Array
* Called by...: Obj2Arr
*
* Abstract....: Creates a one dimensional array with a pointer 
*               to all object contained within the object
*
* Returns.....: None
*
* Parameters..:	taTarget
*                 Target array (passed by reference)
*               taObject
*                 Container object reference
*
* Notes.......:
*-------------------------------------------------------
PROCEDURE Object2Array(taTarget, taObject)
LOCAL ARRAY laMembers[1, 1]
LOCAL lnCount, lnI

*
* Make sure the second parameter is an object before adding it to the array
*
IF TYPE('taObject') = 'O' AND !ISNULL(taObject)
   IF TYPE('taTarget[1]') = 'O' AND !ISNULL(taTarget[1])
      *
      * Increase the array size
      *
      lnCount = ALEN(taTarget, 1) + 1
      DIMENSION taTarget[lnCount]
      *
      * Add the current object to the end
      *
      taTarget[lnCount] = taObject
   ELSE
      *
      * First object in the array
      *
      taTarget[1] = taObject
   ENDIF
   
   *
   * Get all member names
   *
   lnCount = AMEMBERS(laMembers, taObject, 2)

   FOR lnI = 1 TO lnCount
      *
      * Get all contained objects from the member objects
      *
      object2array(@taTarget, EVAL('taObject.' + laMembers[lnI]) )
   ENDFOR
ENDIF

RETURN
