>>>>> "Hildo" == Hildo Biersma <[EMAIL PROTECTED]> writes:

Hildo> I'm looking at writing Parrot support for a vendor library: IBM MQ
Hildo> (Message Queueing, aka "MQSeries", aka "WebSphere MQ").  The current
Hildo> perl module (which I maintain) uses XS code and Parrot's NCI should
Hildo> simplify this a lot.

Hildo> I have two questions though:

This thread got side-track with perl5 issues, so let me ask again:

- Are there any examples of creating a PMC class that maps to a C
  structure, with the PMC class (in C) setting defaults and adding
  accessor methods?

- How do I define a class with constant values that are accessible to
  other classes?  E.g. I want to be able to use constants like this
  pseudo-code:

    OpenOptions.Flags = WMQ.MQC.MQOO_READ_ONLY

  where MQOO_READ_ONLY is a typed constant that lives in the WMQ.MQC
  class.

Hildo> - MQ has some data structures that are a tad too complex to use
Hildo>   Parrot's UnManagedStruct and ManagedStruct.  In addition, the C
Hildo>   structures need to be initialized with a non-zero default from an
Hildo>   IBM header file, so there needs to be C code.

Hildo> Does anyone have code examples of how to create a PMC class that
Hildo> maps to external C structure definitions and how to use such a PMC
Hildo> class with NCI code?

Hildo> - MQ has constants.  Thousands of them.  In the perl module, these get
Hildo> mapped to perl XS subroutines (which bloats the symbol table no
Hildo> end).  For parrot, I'd prefer to use two big hash tables of the type

Hildo> name  => PMC with (value, kind, description)
Hildo> value => name (for reason codes only)

Hildo> What's the best way to create a big hash table in parrot?  I have
Hildo> an existing perl script to parse the IBM MQ header files and generate
Hildo> perl source code, so generating parrot code is not the issue -
Hildo> really, it's what the best structure in parrot is.

Hildo> I'd prefer to optimize for smallest data structure size, and am
Hildo> willing to take a minor hit at lookup time; looking up constants is
Hildo> not performance-critical.

Reply via email to