User Defined Types

#DECLARATIONDeclaration
	Declaring and describing user defined types
#REFERENCINGReferencing
	Accessing data in a user defined type
#MEMBERPROCMember Procedures
	Declaring and defining methods related to a user defined type
#MEMBERACCESSMember Access Control
	Controlling when data and member procedures are accessed

DECLARATIONDeclarations
	KeyPgEnumEnum...End Enum
		User defined enumeration of values
	KeyPgTypeType...End Type
		User defined structure of non overlapping data and member procedures
	KeyPgClassClass...End Class
		Not implemented.  Keyword reserved.
	KeyPgUnionUnion...End Union
		User defined structure of overlapping data
	KeyPgExtendsExtends
		Extends an user defined type to derive another
	KeyPgExtendsWstringExtends Wstring
		Extends an user defined type to inherits Wstring behavior
	KeyPgExtendsZstringExtends Zstring
		Extends an user defined type to inherits Zstring behavior
	KeyPgImplementsImplements
		Not implemented.  Keyword reserved.
	KeyPgFieldField
		Specifies field alignment within a user defined type
	KeyPgObjectObject
		Built-in type providing run-time type information

REFERENCINGReferencing
	KeyPgTypeTempTemporary Types
		Creates a temporary copy of a user defined type
	KeyPgThisThis
		Built-in, hidden, parameter passed to non-static member procedures to 
		access the user defined type instance
	KeyPgBaseBase (Member Access)
		Built-in, hidden, variable to access the base user defined type 
		instance in derived user defined types
	KeyPgTypeAliasType Alias
		Declares a user defined type from other user defined or standard data 
		types
	KeyPgWithWith
		Compound statement to access the data and members of a user defined 
		type

MEMBERPROCMember Procedures
	KeyPgBaseInitBase (Initialization)
		Specifies an initializer for the base user defined type in derived 
		user defined type constructors
	KeyPgConstructorConstructor
		Declares or defines a member procedure that is automatically called 
		when a user defined type is created
	KeyPgDestructorDestructor
		Declares or defines a member procedure that is automatically called 
		when a user defined type is destroyed or goes out of scope
	KeyPgMemberFunctionFunction
		Declares or defines a member procedure returning a value
	KeyPgOperatorOperator
		Declares or defines an overloaded operator
	KeyPgOverrideOverride
		Member method attribute that specifies that the method is expected to 
		override a virtual method in the base user defined type
	KeyPgPropertyProperty
		Declares or defines property member procedures for a user defined 
		type
	KeyPgMemberSubSub
		Declare or defines a member procedure
	KeyPgStaticMemberStatic (Member)
		Declares or defines a member procedure or variable is static
	KeyPgVirtualVirtual
		Member method attribute that declares that a member must have an 
		implementation
	KeyPgAbstractAbstract
		Member method attribute that declares that a member must be 
		implemented in a derived user defined type
	KeyPgConstMemberConst (Member)
		Member method attribute that declares or defines that the method is 
		readonly and does not modify the user defined types's data

MEMBERACCESSMember Access Control
	KeyPgVisPublicPublic: (Access Control)
		Data and members in a user defined type have public visibility
	KeyPgVisPrivatePrivate: (Access Control)
		Data and members in a user defined type have private visibility
	KeyPgVisProtectedProtected: (Access Control)
		Data and members in a user defined type have protected visibility

