# Copyright: 2002-2005 The Perl Foundation.  All Rights Reserved.
# $Id: call_list.txt,v 1.56 2005/02/19 10:57:29 bernhard Exp $

# Function signature declarations for NCI

# Types

# INT register stuff
# c - char
# s - short
# i - int
# l - long

# NUM register stuff
# f - float
# d - double

# STR register stuff
# t - character string

# PMC register stuff
# p - data pointer from PMC (on store into a new UnManagedStruct PMC)
# P - pointer to a PMC-register
# S - pointer to a STRING-register ????
# O - pointer to PMC-register #2 (object)
# 2 - pointer to short
# 3 - pointer to int
# 4 - pointer to long

# void stuff
# v - void

# Buffers are not valid return parameters,
# use 'p' when the native function returns a pointer value 
# b - void *
# B - void **

# special stuff
# 0 - insert a NULL (pointer) - doesn't comsume a register
# I - Parrot_Interp param

# Arrayish things, terminated with NULL/0
# L - Long array
# T - Array of string pointers (Converted to cstrings)

# Callback Things
# C - Function pointer to call back into Parrot. The signature of
#     this function is: void (function *)(ExternalThing *, CallbackInfo *)
#     More docs in PDD 16.
# D - Function pointer. Like C, only the arg order is reversed:
#     this function is: void (function *)(CallbackInfo *, ExternalThing *)

# The following parameters must appear in a pair
# Y - sub PMC to call back into
# Z - Single PMC parameter to pass into sub Y

#Return params
c                # t/pmc/nci.t
c	p
c	pi
c	v

d                # t/pmc/nci.t
d	d
d	IOd      # Parrot builtins
d	v

f                # t/pmc/nci.t
f	ff       # t/pmc/nci.t
f	is
f	v

i
i       b        # t/pmc/nci.t
i	d
i	i
i	ii
i	ii4
i	ii4i
i	iiii
i	iiilsp
i	iil
i	iili
i	iip
i	iit
i	iiti
i	ilsp
i	iti
i	l
i	li
i	lp
i	lsp
i	p
i	p33
i	p333
i	p333333
i	p4
i	p42p
i	p4i
i	pb
i	pi
i	pii
i	pii4
i	pii4i
i	piii
i	piiiiii
i	piiilsp
i	piil
i	piili
i	piit
i	piiti
i	pilsp
i	pit
i	pl
i	pli
i	pll
i	pllllllll
i	plp
i	plsp
i	pp
i	ppi
i	ppiiiiiiii
i	pppp
i	psp
i	pt
i	pti
i	pitl
i	s
i	s22
i	s222
i	sp
i	sss
i	ssss
i	t
i	ti
i	v
i	4
i	4i
i	42p

l               # t/pmc/nci.t
l	ii
l	l4
l	p
l	pi
l	pii
l	p33l
l	v
l	33l

P	Ii       # Needed for parrot threads
P	IOl      # Parrot builtins
P	IOP      # PerlHash fromkeys, obsolete
P	It

p
p	B
p	b
p	It
p	i
p	ii
p	iiii
p	iiiiii
p	iiiiiiii
p	p
p	pt
p	pi
p	pii
p	piiii
p	t
p	tpp
p	ttttttt
p	v

s             # t/pmc/nci.t
s	v

t             # t/pmc/nci.t
t	i
t	ii
t	p
t	pi
t	pii
t	pt
t	t
t	tl4
t	t4
t	v

v
v	Iiiip    # examples/japh/japh11.pasm
v	IOP      # Needed for parrot threads
v	i
v	ii
v	illllllll
v	l
v	p
v	pi
v	piiii
v	pl
v	pp
v	v

# These are needed for parrotio.pmc
i	IP
v	IP
i	IPi
i	IPii
i	IPiii
i	IPt

# Py_func signatures
P	IP
P	IPP
P	IPPP
P	IO
S	IO
i       P

# the following are use by t/pmc/nci.t
i	sc
s	sc
c	sc
i	iii
i	i3
t	b
t	B
v	P
v	pP
p	ip
i	33
v	pii
v	IO
i	IO
i	IOi
i	IOt
i	It
i	Ii

# Oddball ones for postgres
p	ptiLTLLi
p	pi33ipi
p	ptii33i
p	ptit33i
i	ptit33i
i	ptiit33i

# The following are used by library/pcre.imc
p	tiB3P
p	tip3P
i	pPtiiipi
i	tpiibi

# Used by SDL
p	iiil
i	ppl
v	pip

# Used by SDL::Font
p	ti
p	ptp
i	pt33

# For python
i	IPP

#required for mod_parrot
i   tp
v   tiiiptt
i   Pip

# PyBuiltins
P	IOPP
P	IOPPP
v	IOPP
v	IOPPP
P	IOPPPP
P	IOPPPPP
