First let us introduce some notions concerning wide characters.
SICStus Prolog allows character codes in the range
0..2147483647 (= 2^31-1). Consequently, the built-in predicates
for building and decomposing atoms from/into character codes
atom_codes/2) accept and produce lists of integers
in the above range (excluding the 0 code).
Wide characters can be used in all contexts: in atoms (single
quoted, or unquoted, depending on the character-type mapping),
strings, character code notation (0'char), etc.
SICStus Prolog has three different external stream encoding
schemes built-in, selectable through an environment
variable. Furthermore it provides hooks for users to plug in their
own external stream encoding functions. The built-in
get_code/1, etc., accept and
return wide character codes, converting the bytes written or read
using the external encoding in force.
Note that an encoding need not be able to handle the whole range of
character codes allowed by SICStus Prolog.
WCX_CHANGES_ASCII; see WCX Hooks.
open/3, command line options, as returned by
), etc.). The system encoding is hookable in SICStus Prolog and has two built-in defaults.
As discussed above there are several points where the users can influence the behavior of SICStus Prolog. The user can decide on
Let us call WCX mode a particular setting of these parameters.
Note that the selection of the character code set is conceptual only and need not be communicated to SICStus Prolog, as the decision materializes in the functions for the mapping and encodings.