1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
.. _portability:
**Portability**
===============================================================================
Portable FLINT types
-------------------------------------------------------------------------------
For platform independence, FLINT provides two types ``ulong``
and ``slong`` to replace ``unsigned long`` and ``long``
respectively. These are guaranteed to be the same size as GMP's
``mp_limb_t`` and ``mp_limb_signed_t`` types, respectively.
A full list of types provided by FLINT is available in
``code_conventions.md`` in the top-level source tree.
As FLINT supports Windows 64 on which the FLINT ``ulong`` and
``slong`` types are 64 bits, whilst ``unsigned long`` and
``long`` are only 32 bits, it is necessary to have a special
format specifier which is 64 bits on Windows 64 instead of the usual
``"%lu"`` and ``"%ld"``.
For this purpose FLINT provides its own I/O functions, ``flint_printf``,
``flint_fprintf``, ``flint_sprintf``, ``flint_scanf``,
``flint_fscanf`` and ``flint_sscanf``, which work exactly as the
usual system versions, but which take the ``"%wu"`` and ``"%wd"``
format specifiers, which support FLINT ``ulong`` and ``slong``
types respectively.
Also, instead of using constants ``123UL`` and ``123L``, FLINT
provides the macros ``UWORD(123)`` and ``WORD(123)`` respectively
for constants of type ``ulong`` and ``slong`` respectively.
The maximum and minimum values that can be represented by these types
are given by ``UWORD_MAX`` and ``WORD_MAX`` respectively.
|