diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-06-10 23:40:19 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-06-10 23:40:19 (GMT) |
commit | 7b9542a3f747787aedf056ddaef99e4469777aa9 (patch) | |
tree | bcbb8eb84c0606c27c8890f528f4378eaed25996 /Doc | |
parent | fcc54cab100108f97c5b5641e3df11b7614993c2 (diff) | |
download | cpython-7b9542a3f747787aedf056ddaef99e4469777aa9.zip cpython-7b9542a3f747787aedf056ddaef99e4469777aa9.tar.gz cpython-7b9542a3f747787aedf056ddaef99e4469777aa9.tar.bz2 |
Initial support for 'q' and 'Q' struct format codes: for now, only in
native mode, and only when config #defines HAVE_LONG_LONG. Standard mode
will eventually treat them as 8-byte ints across all platforms, but that
likely requires a new set of routines in longobject.c first (while
sizeof(long) >= 4 is guaranteed by C, there's nothing in C we can rely
on x-platform to hold 8 bytes of int, so we'll have to roll our own;
I'm thinking of a simple pair of conversion functions, Python long
to/from sized vector of unsigned bytes; that may be useful for GMP
conversions too; std q/Q would call them with size fixed at 8).
test_struct.py: In addition to adding some native-mode 'q' and 'Q' tests,
got rid of unused code, and repaired a non-portable assumption about
native sizeof(short) (it isn't 2 on some Cray boxes).
libstruct.tex: In addition to adding a bit of 'q'/'Q' docs (more needed
later), removed an erroneous footnote about 'I' behavior.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/lib/libstruct.tex | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex index 637d3e6..9a1942d 100644 --- a/Doc/lib/libstruct.tex +++ b/Doc/lib/libstruct.tex @@ -53,9 +53,11 @@ C and Python values should be obvious given their types: \lineiv{h}{\ctype{short}}{integer}{} \lineiv{H}{\ctype{unsigned short}}{integer}{} \lineiv{i}{\ctype{int}}{integer}{} - \lineiv{I}{\ctype{unsigned int}}{long}{(1)} + \lineiv{I}{\ctype{unsigned int}}{long}{} \lineiv{l}{\ctype{long}}{integer}{} \lineiv{L}{\ctype{unsigned long}}{long}{} + \lineiv{q}{\ctype{long long}}{long}{(1)} + \lineiv{Q}{\ctype{unsigned long long}}{long}{(1)} \lineiv{f}{\ctype{float}}{float}{} \lineiv{d}{\ctype{double}}{float}{} \lineiv{s}{\ctype{char[]}}{string}{} @@ -68,10 +70,9 @@ Notes: \begin{description} \item[(1)] - The \character{I} conversion code will convert to a Python long if - the C \ctype{int} is the same size as a C \ctype{long}, which is - typical on most modern systems. If a C \ctype{int} is smaller than - a C \ctype{long}, an Python integer will be created instead. + The \character{q} and \character{Q} conversion codes are available in + native mode only if the platform C compiler supports C \ctype{long long}, + or, on Windows, \ctype{__int64}. \end{description} |