changes: 1. Allow New syntax: Property type Name {dflt} public|private is optional 2. Check placement as follows: 2.1. Must be in class or object 2.2. Cannot be in a child object defined by a class 2.3. If in class, must be in procedure (constructor) 2.4. If in object, must not be in procedure. 3. Check for Property Name conflicts (Get_name conflict) 3.1. If defined as object access - error 3.2. If defined as global method - error 3.3. If defined with different param list - error (already does this) Changes: 1. No_image is optional if windows (always provided by compiler) 2. If within class, s/b within a class (in df$object)
#IFDEF IS$WINDOWS
// If windows we can check for no_image and if it is not presented then
// we will provide a no_image argument. Therefore you should NEVER need to use
// No_image with windows.
#IF (!0<5) // if no image try to aquire one
#IFDEF !1.N // if image exists with object name, use that
OBJECT !1 !2 !3 !4 !1
#ELSE
OBJECT !1 !2 !3 !4 NO_IMAGE // else use no_image
#ENDIF
#ELSE
#IFDEF !5.N // if passed a valid image or
DF$OBJECT !1 !2 !3 !4 !5 !6 !7 !8 !9 // no_image use them. Else add
#ELSE // the no_image parameter.
#IFSAME !5 NO_IMAGE
DF$OBJECT !1 !2 !3 !4 !5 !6 !7 !8 !9
#ELSE
DF$OBJECT !1 !2 !3 !4 NO_IMAGE !5 !6 !7 !8 !9
#ENDIF
#ENDIF
#ENDIF
#ELSE
// If character mode no_image must be explicitly provided (as it has always been).
// we cannot use the no_image replacement because it does not work with dynamic
// visual objects (like edits).
#IF (!0<5) // if no image try to aquire one
DF$OBJECT !1 !2 !3 !4 !1
#ELSE
DF$OBJECT !1 !2 !3 !4 !5 !6 !7 !8 !9
#ENDIF
#ENDIF