ncidef2asm.pl ^

Take an NCI library definition file and turn it into a

Sections ^

An NCI library definition file provides the information needed to generate a parrot wrapper for the named library (or libraries). Its format is simple, and looks like:

  [package]
  ncurses

  [lib]
  libform.so

  [defs]
  p new_field i i i i i i

  [lib]
  libncurses.so

  [defs]
  i is_term_resized i i

Note that the assembly file is generated in the order you specify, so if there are library dependencies, make sure you have them in the correct order.

package ^

Declares the package that all subsequent sub PMCs will be put into. The name is a simple concatenation of the package name, double colon, and the routine name, with no preceding punctuation.

lib ^

The name of the library to be loaded. Should be as qualified as necessary for your platform--generally the full filename is required, though the directory generally isn't.

You may load multiple libraries here, but only the last one loaded will be exposed to subsequent defs.

defs ^

This section holds the definitions of functions. Each function is assumed to be in the immediate preceeding library. The definition of the function is:

  return_type name [param [param [param ...]]]

The param and return_type parameters use the NCI standard, which for reference is:

p

Parameter is a void pointer, taken from the PMC's data pointer. PMC is assumed to be an unmanagedstruct or child class.

Taken from a P register

c

Parameter is a character.

Taken from an I register

s

Parameter is a short

Taken from an I register

i

Parameter is an int

Taken from an I register

l

Parameter is a long

Taken from an I register

f

Paramter is a float

Taken from an N register.

d

Parameter is a double.

Taken from an N register.

t

Paramter is a char *, presumably a C string

Taken from an S register

v

Void. Only valid as a return type, noting that the function returns no data.

I

Interpreter pointer. The current interpreter pointer is passed in

P

PMC.

2

Pointer to short.

Taken from an I register.

3

Pointer to int.

Taken from an I register

4

Pointer to long

Taken from an I register


parrot