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 shortTaken from an I register
i
Parameter is an intTaken from an I register
l
Parameter is a longTaken from an I register
f
Paramter is a floatTaken from an N register.
d
Parameter is a double.Taken from an N register.
t
Paramter is a char *, presumably a C stringTaken 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 longTaken from an I register


parrot