Extends Wstring

Specifies a type which inherits a Wstring behavior

Syntax
   Type|Union typename Extends Wstring [, base_typename]
      ...
   End Type|Union

Description
   Extends Wstring declares typename to inherit properties and behaviors of 
   a 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 WString type).

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

   WString behaviour can be inherited directly, or indirectly and singly 
   from a base-type.
   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 Cast operator only), this promotes it 
   fully WString type compatible, even with StrPtr/SAdd, LSet/RSet, and 
   Select Case.

Example
   See Extends Zstring for similar examples.

Version
   * Before fbc 1.09.0, this promotion was not yet fully WString type 
     compatible with the built in functions Val/ValInt/ValLng/ValUInt/
     Valunlg and Left/Right.
   * Since fbc 1.07.0

Dialect Differences
   * Not available in the -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
   * Type
   * Union
   * Extends
   * WString
   * Extends Zstring

