# Copyright: 2002-2005 The Perl Foundation.  All Rights Reserved.
# $Id: call_list.txt 10851 2006-01-03 00:52:25Z leo $

# Function signature declarations for Parrot Native Call Interface.
# The first alphanumeric is the type of the return value,
# the other alphanumerics denote the input parameter types.

# Types

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

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

# STR register stuff
# S - pointer to a STRING-register
# t - character string (0-terminated)
# Buffers are not valid return parameters,
# use 'p' when the native function returns a pointer value
# b - void *
# B - void **

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

# void stuff
# v - void

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

# Callback Things

# U - Single PMC parameter to pass into callback - user data

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

d                # t/pmc/nci.t
d	d
d	JOd      # Parrot builtins
I       JOS
d	v
I	JI	 # Parrot_is_char_*
v       JOSP     # String.trans
v       JOS      # String.reverse
P       JOS      # Added for os.stat
I       JOI      # os.umask

v	JPPP	 # infix MMD
v	JPIP
v	JPSP
v	JPNP

v	JPP	 # inplace infix MMD
v	JPI
v	JPS
v	JPN

P	JPPP	 # infix MMD new
P	JPIP
P	JPSP
P	JPNP

I	JPP      # MMD compare

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	Ji       # Needed for parrot threads
P	JOl      # Parrot builtins
P	JOP      # PerlHash fromkeys, obsolete
P	Jt

p
p	B
p	b
p	Jt
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	Jiiip    # examples/japh/japh11.pasm
v	JOP      # Needed for parrot threads
v	i
v	ii
v	illllllll
v	l
v	p
v	pbip     # for libsyck
v	pi
v	piiii
v	pl
v	pp
v	v

# These are needed for parrotio.pmc
i	JP
v	JP
i	JPi
i	JPii
i	JPiii
i	JPt
P	JOSSS

# Needed by string.pmc
v	JOSS

# Py_func signatures
P	JP
P	JPP
P	JO
S	JO
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	JO
i	JO
i	JOi
i	JOt
i	Jt
i	Ji

# Oddball ones for postgres
# p	ptiLTLLi    this should be handled by ManagedStruct
p	pi33ipi
p	ptii33i
p	ptit33i
i	ptit33i
i	ptiit33i

# The following are used by library/pcre.pir
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	JPP

#required for mod_parrot
i	tp
v	tiiiptt
i	Pip
p   J
t   J
t   Jp
p   Jp
t   Jpt
i   Jp
i   Jpi
i   JPip
v   ptt
v   pit
i   Jpii
i   ip

# PyBuiltins
P	JOPP
P	JOPPP
v	JOPP
v	JOPPP
P	JOPPPP
P	JOPPPPP

# Added for Tcl
I	JOSI
P	JOSII

# libpast
p       Ji
p       Jipp
p       Jbip
v       Jp
v       JS

# crypt
t       tt

# Sub.__get_regs_used
I	JOt

# declare_lex_preg
v	JOSI

# Added for .NET => PIR translator dynamic PMCs.
S      JOi
v      JOi
I      JO
N      JO




