Extends Wstring

Specifies a type which inherits a Wstring behavior

Syntax
	KeyPgTypeType|KeyPgUnionUnion typename Extends Wstring [, base_typename]
		...
	End KeyPgTypeType|KeyPgUnionUnion

Description
	Extends Wstring declares typename to inherit properties and behaviors of 
	a KeyPgWstringWString. Purpose is to allow users to create custom string types (with 
	i.e. dynamic memory management) that can integrate well in to existing 
	fbc compiler built ins (good interoperability with fbc's KeyPgWstringWString type).

	This declaration of such a UDT with a suitable KeyPgOpCastCast operator will 
	instruct compiler to convert the UDT to a KeyPgWstringWString (in addition, other 
	suitable operators as KeyPgOpLetLet, KeyPgOpPtrIndex[] (Pointer Index), KeyPgLenLen, ..., can be also 
	declared).

	KeyPgWstringWString behaviour can be inherited directly, or indirectly and singly 
	from a base-type.
	KeyPgWstringWString behaviour can be inherited by a UDT also extending base_typename 
	(a kind of pseudo multiple-inheritance).

	By declaring a type (directly or indirectly) as Extends Wstring (in 
	addition to defining a suitable KeyPgOpCastCast operator only), this promotes it 
	fully KeyPgWstringWString type compatible, even with KeyPgOpStrptrStrPtr/KeyPgSaddSAdd, KeyPgLsetLSet/KeyPgRsetRSet, and 
	KeyPgSelectcaseSelect Case.

Example
	See KeyPgExtendsZstringExtends Zstring for similar examples.

Version
	* Before fbc 1.09.0, this promotion was not yet fully KeyPgWstringWString type 
	  compatible with the built in functions KeyPgValVal/KeyPgValintValInt/KeyPgVallngValLng/KeyPgValuintValUInt/
	  KeyPgValulngValunlg and KeyPgLeftLeft/KeyPgRightRight.
	* Since fbc 1.07.0

Dialect Differences
	* Not available in the CompilerOptlang-lang qb dialect unless referenced with the 
	  alias __Extends __Wstring, but unusable because no member procedure is 
	  allowed in this dialect.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgTypeType
	* KeyPgUnionUnion
	* KeyPgExtendsExtends
	* KeyPgWstringWString
	* KeyPgExtendsZstringExtends Zstring

