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`