Matt S Trout > Rakudo-Star > tools/dev/ncidef2pir.pl

Download:
Rakudo-Star-2012.08_001.tar.gz

Annotate this POD

Source  

NAME ^

tools/dev/ncidef2pir.pl - Turn an NCI library definition file into PIR

SYNOPSIS ^

    perl tools/dev/ncidef2pir.pl path/to/from_file [ path/to/to_file ]

DESCRIPTION ^

This program takes an NCI library definition file and creates a PIR file which loads the described library.

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. Double colon is used to to delimit namespaces.

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 preceding 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

Parameter is a float

Taken from an N register.

d

Parameter is a double.

Taken from an N register.

t

Parameter 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

syntax highlighting: