Hi All,

Recently some discussion began in the issue 3132 thread (http://bugs.python.org/issue3132) regarding
implementation of the new struct string syntax for PEP 3118.  Mark Dickinson
suggested that I bring the discussion on over to Python Dev.  Below is a summary
of the questions\comments from the thread. 

Unpacking a long-double
===================

1. Should this return a Decimal object or a ctypes 'long double'? 
2. Using ctypes 'long double' is easier to implement, but precision is
    lost when needing to do arithmetic, since the value for cytpes 'long double'
    is converted to a Python float.
3. Using Decimal keeps the desired precision, but the implementation would
    be non-trivial and architecture specific (unless we just picked a
    fixed number of bytes regardless of the architecture).
4. What representation should be used for standard size and alignment?
    IEEE 754 extended double precision?

Pointers
======

1. What is a specific pointer?  For example, is '&d' is a pointer to a
    double?
2. How would unpacking a pointer to a Python Object work out?  Given an
    address how would the appropriate object to be unpacked be determined?
3. Can pointers be nested, e.g. '&&d' ?
4. For the 'X{}' format (pointer to a function), is this supposed to mean a
    Python function or a C function?


String Syntax
==========

The syntax seems to have transcended verbal description.  I think we
need to put forth a grammar.  There are also some questions regarding nesting
levels and mixing specifiers that could perhaps be answered more clearly by
having a grammar:

   1. What nesting level can structures have? Arbitrary?
   2. The new array syntax claims "multi-dimensional array of whatever follows".
      Truly whatever? Arrays of structures? Arrays of pointers?
   3. How do array specifiers and pointer specifiers mix?  For example,
      would '(2, 2)&d' be a two-by-two array of pointers to doubles? 
      What about '&(2, 2)d'?  Is this a pointer to an two-by-two array of
      doubles?

An example grammar is contained in a diff against the PEP attached to this
mail.  NOTE:  I am *not* actually submitting a patch against the PEP.  This
was just the clearest way to present the example grammar.

Use Cases
========

   1. What are the real world use cases for these struct string extensions?
      These should be fleshed out and documented.


-- Meador