Macro: ARRAY_PROPERTY_NAME_HELPER2
// Check property for proper placement
// 1. Must be in class or object
// 2. Cannot be in a child object defined by a class
// 3. If in class, must be in procedure (constructor)
// 4. If in object, must not be in procedure.
#IF ((!Zl & 1) = 0)
#IF (!b & 3 ) // Within class or object? It should be
#IF ((!b & 3)=3 ) // but not both....Error
#ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Property cannot be defined in an object within a class
#ELSE
#IF (!b & 2) // in-class: Must be within a method (constructor)
#IF ( (!b & 4)=0) // in-class and not in method...bad
#ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Class Property must be defined within a constructor procedure
#ENDIF
#ELSE // in-object: Cannot be in method
#IF (!b & 4) // if within object and within method...an error
#ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Object Property cannot be in a method
#ENDIF
#ENDIF
#ENDIF
#ELSE
#ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Property can only be defined within a class or object
#ENDIF
#ENDIF
#IF (!b & 1 ) // if within object
!A [] CLONE$CLASS // Create a new class
#ENDIF
#IF ( (!Zl & 1)=0)
#IFSAME FN$!2 __F__
#ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION !2 is an internal function name
#ENDIF
#ENDIF
// Check for GET_ name conflicts as follows:
// 1. If defined as an overloaded message - error
// 2. If defined as object access - error
// 3. If defined as global method - error
#IFDEF GET_!2_OVERLOADED
#ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION This GET Method Was Previously Defined As Overloaded
#ELSE
#IFDEF GET_!2
#IF (GET_!2>$40000000)
#ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION GET !2 is already defined as an object name
#ELSE
#IF (GET_!2<0)
#ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION GET !2 is already defined as a global function
#ENDIF // note else condition...defined as proeprty or class function...this is ok
#ENDIF
#ELSE
MESSAGE$ADDRESS GET_!2
#ENDIF
#ENDIF
#DPUSH GET_!2 // Push the get property id
#FREG GET_!2 RETURNS !1 |GB[] //Make it array type by appending [], the number of dimensions are not used here
// Make sure Set message not defined as overloaded or global
#IFDEF SET_!2_OVERLOADED
#ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION This SET Method Was Previously Defined As Overloaded
#ELSE
#IFDEF SET_!2
#IF (SET_!2<0)
#ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION SET !2 is already defined as a global message
#ENDIF
#ELSE
MESSAGE$ADDRESS SET_!2
#ENDIF
#ENDIF
#DPUSH SET_!2 // Push the set property id
#PREG SET_!2 !1 |GB[] //Make it array type by appending [], the number of dimensions are not used here