* docs/pmc.pod:
[parrot.git] / src / call_list.txt
blobc536247a3213375d84313a837041871abae81885
1 # Copyright (C) 2002-2005, The Perl Foundation.
2 # $Id$
4 # Function signature declarations for Parrot Native Call Interface.
5 # The first alphanumeric is the type of the return value,
6 # the other alphanumerics denote the input parameter types.
8 # Types
10 # INT register stuff
11 # I - INTVAL
12 # c - char
13 # s - short
14 # i - int
15 # l - long
17 # NUM register stuff
18 # N - FLOATVAL
19 # f - float
20 # d - double
22 # STR register stuff
23 # S - pointer to a STRING-register
24 # t - character string (0-terminated)
25 # Buffers are not valid return parameters,
26 # use 'p' when the native function returns a pointer value
27 # b - void *
28 # B - void **
30 # PMC register stuff
31 # P - pointer to a PMC-register
32 # O - pointer to PMC-register (object)
33 # p - data pointer from PMC (on store into a new UnManagedStruct PMC)
34 # 2 - pointer to short
35 # 3 - pointer to int
36 # 4 - pointer to long
38 # void stuff
39 # v - void
41 # special stuff
42 # 0 - insert a NULL (pointer) - doesn't comsume a register
43 # J - Parrot_Interp param
44 # @ - slurpy array
46 # Callback Things
48 # U - Single PMC parameter to pass into callback - user data
50 c                # t/pmc/nci.t
51 c       p
52 c       pi
54 d                # t/pmc/nci.t
55 d       d
56 d       JOd      # Parrot builtins
57 I       JOS
58 S       JOS      # ParrotIO.readline
59 I       JI       # Parrot_is_char_*
60 v       JOSP     # String.trans
61 v       JOS      # String.reverse
62 P       JOS      # Added for os.stat
63 I       JOI      # os.umask
64 P       JOPS     # Namespace.get_global
65 v       JOPSP    # Namespace.set_global
67 v       JPPP     # infix MMD
68 v       JPIP
69 v       JPSP
70 v       JPNP
72 v       JPP      # inplace infix MMD
73 v       JPI
74 v       JPS
75 v       JPN
77 P       JPPP     # infix MMD new
78 P       JPIP
79 P       JPSP
80 P       JPNP
82 I       JPP      # MMD compare
84 f                # t/pmc/nci.t
85 f       ff       # t/pmc/nci.t
86 f       is
89 i       b        # t/pmc/nci.t
90 i       d
91 i       i
92 i       ii
93 i       ii4
94 i       ii4i
95 i       iiii
96 i       iiilsp
97 i       iil
98 i       iili
99 i       iip
100 i       iit
101 i       iiti
102 i       ilsp
103 i       iti
104 i       l
105 i       li
106 i       lp
107 i       lsp
108 i       p
109 i       p33
110 i       p333
111 i       p333333
112 i       p4
113 i       p42p
114 i       p4i
115 i       pb
116 i       pi
117 i       pii
118 i       pii4
119 i       pii4i
120 i       piii
121 i       piiiiii
122 i       piiilsp
123 i       piil
124 i       piili
125 i       piit
126 i       piiti
127 i       pilsp
128 i       pit
129 i       pl
130 i       pli
131 i       pll
132 i       pllllllll
133 i       plp
134 i       plsp
135 i       pp
136 i       ppi
137 i       ppiiiiiiii
138 i       pppp
139 i       psp
140 i       pt
141 i       pti
142 i       pitl
143 i       s
144 i       s22
145 i       s222
146 i       sp
147 i       sss
148 i       ssss
149 i       t
150 i       ti
151 i       4
152 i       4i
153 i       42p
155 l               # t/pmc/nci.t
156 l       ii
157 l       l4
158 l       p
159 l       pi
160 l       pii
161 l       p33l
162 l       33l
164 P       Ji       # Needed for parrot threads
165 P       JOl      # Parrot builtins
166 P       JOP      # PerlHash fromkeys, obsolete
167 P       Jt
170 p       B
171 p       b
172 p       Jt
173 p       i
174 p       ii
175 p       iiii
176 p       iiiiii
177 p       iiiiiiii
178 p       p
179 p       pt
180 p       pi
181 p       pii
182 p       piiii
183 p       t
184 p       tpp
185 p       ttttttt
187 s             # t/pmc/nci.t
189 t             # t/pmc/nci.t
190 t       i
191 t       ii
192 t       p
193 t       pi
194 t       pii
195 t       pt
196 t       t
197 t       tl4
198 t       t4
201 v       Jiiip    # examples/japh/japh11.pasm
202 v       JOP      # Needed for parrot threads
203 v       i
204 v       ii
205 v       illllllll
206 v       l
207 v       p
208 v       pbip     # for libsyck
209 v       pi
210 v       piiii
211 v       pl
212 v       pp
214 # These are needed for parrotio.pmc
215 i       JP
216 v       JP
217 i       JPi
218 i       JPii
219 i       JPiii
220 i       JPt
221 P       JOSSS
223 # Needed by string.pmc
224 v       JOSS
226 # Py_func signatures
227 P       JP
228 P       JPP
229 P       JO
230 S       JO
231 i       P
233 # Needed by integer.pmc
234 S       JOI
237 # the following are use by t/pmc/nci.t
238 i       sc
239 s       sc
240 c       sc
241 i       iii
242 i       i3
243 t       b
244 t       B
245 v       P
246 v       pP
247 p       ip
248 i       33
249 v       pii
250 v       JO
251 i       JO
252 i       JOi
253 i       JOt
254 i       Jt
255 i       Ji
257 # Oddball ones for postgres
258 p       ptippppi    PQexecParams
259 p       pi33ipi     PQfn
260 p       pttip       PQprepage
261 p       ptipppi     PQexecPrepared
262 p       ppP         PQsetNoticeReceiver
264 # The following are used by library/pcre.pir
265 p       tiB3P
266 p       tip3P
267 i       pPtiiipi
268 i       tpiibi
270 # Used by SDL
271 p       iiil
272 i       ppl
273 v       pip
274 p       pti
275 i       ppp
277 # Used by SDL::Font
278 p       ti
279 p       ptp
280 i       pt33
282 # For python
283 i       JPP
285 #required for mod_parrot
286 i       tp
287 v       tiiiptt
288 i       Pip
289 p   J
290 t   J
291 t   Jp
292 p   Jp
293 t   Jpt
294 i   Jp
295 i   Jpi
296 i   JPip
297 v   ptt
298 v   pit
299 i   Jpii
300 i   ip
302 # PyBuiltins
303 P       JOPP
304 P       JOPPP
305 v       JOPP
306 v       JOPPP
307 P       JOPPPP
308 P       JOPPPPP
310 # Added for Tcl
311 I       JOSI
312 P       JOSII
314 # libpast
315 p       Ji
316 p       Jipp
317 p       Jbip
318 v       Jp
319 v       JS
321 # crypt
322 t       tt
324 # Sub.__get_regs_used
325 I       JOt
327 # declare_lex_preg
328 v       JOSI
330 # Added for .NET => PIR translator dynamic PMCs.
331 S      JOi
332 v      JOi
333 I      JO
334 N      JO
335 v      JON
336 P      JOi
337 v      JOI
339 # Make lua stop panic'ing.
340 P      JOI
342 # ParrotThread creation
343 i      JOP@
344 I      JOP@
345 I      JOIP@
346 # other ParrotThread
347 P      JO 
349 # --- start mysqlclient library ---
350 # Created from mysql.h using the following manual method:
351 # Edited copy of mysql.h using vi by doing g/, *$/j (repeat) then g/\* *$/j (repeat)
352 # to get all functions on one line each.
353 # Extracted list of api func names from http://dev.mysql.com/doc/refman/4.1/en/c-api-functions.html
354 # and copied to a temporary file to clean up (mysql_api_names.txt)
355 # Stripped down to bare names and merged into one line separated by |
356 # then egrep -w `cat mysql_api_names.txt` mysql.h > mysql_api.ncidef
357 # then edit mysql_api.ncidef in vi: %s/^/   #  /
358 # to create space for nci signatures and to use original definition as a # comment.
359 # This method isn't ideal, I'm just noting it here in case it helps others.
360 # Ideally the process should be automated - but there be many dragons along # that path.
362 # long long values (my_ulonglong) aren't handled by nci - spec'd as just long for now
364 #       MYSQL_FIELD and MYSQL_RES are structs
365 #       typedef char **MYSQL_ROW;               /* return data as array of strings */
366 #       typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
367 #       typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;   /* offset to current row */
369 l p     #! my_ulonglong mysql_num_rows(MYSQL_RES *res)
370 i p     #  unsigned int mysql_num_fields(MYSQL_RES *res)
371 c p     #  my_bool mysql_eof(MYSQL_RES *res)
372 p pi    #  MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *res, unsigned int fieldnr)
373 p p     #  MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res)
374 p p     #  MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res)
375 i p     #  MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res)
376 i p     #  unsigned int mysql_field_count(MYSQL *mysql)
377 l p     #! my_ulonglong mysql_affected_rows(MYSQL *mysql)
378 l p     #! my_ulonglong mysql_insert_id(MYSQL *mysql)
379 i p     #  unsigned int mysql_errno(MYSQL *mysql)
380 t p     #  const char * mysql_error(MYSQL *mysql)
381 t p     #  const char * mysql_info(MYSQL *mysql)
382 l p     #  unsigned long mysql_thread_id(MYSQL *mysql)
383 t p     #  const char * mysql_character_set_name(MYSQL *mysql)
384 p p     #  MYSQL * mysql_init(MYSQL *mysql)
385 i pttttt        #  int mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert, const char *ca, const char *capath, const char *cipher)
386 c pttt          #  my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *passwd, const char *db)
387 p pttttiti      #  MYSQL * mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int clientflag)
388 v p     #  void mysql_close(MYSQL *sock)
389 i pt    #  int mysql_select_db(MYSQL *mysql, const char *db)
390 i pt    #  int mysql_query(MYSQL *mysql, const char *q)
391 i ptl   #  int mysql_real_query(MYSQL *mysql, const char *q, unsigned long length)
392 i p     #  int mysql_shutdown(MYSQL *mysql)
393 i p     #  int mysql_dump_debug_info(MYSQL *mysql)
394 i pi    #  int mysql_refresh(MYSQL *mysql, unsigned int refresh_options)
395 i pl    #  int mysql_kill(MYSQL *mysql,unsigned long pid)
396 i p     #  int mysql_ping(MYSQL *mysql)
397 t p     #  const char * mysql_stat(MYSQL *mysql)
398 t p     #  const char * mysql_get_server_info(MYSQL *mysql)
399 t p     #  const char * mysql_get_client_info(void)
400 l       #  unsigned long mysql_get_client_version(void)
401 t p     #  const char * mysql_get_host_info(MYSQL *mysql)
402 t p     #  unsigned int mysql_get_proto_info(MYSQL *mysql)
403 p pt    #  MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild)
404 p pt    #  MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild)
405 p ptt   #  MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
406 p p     #  MYSQL_RES * mysql_list_processes(MYSQL *mysql)
407 p p     #  MYSQL_RES * mysql_store_result(MYSQL *mysql)
408 p p     #  MYSQL_RES * mysql_use_result(MYSQL *mysql)
409 i pit   #  int mysql_options(MYSQL *mysql,enum mysql_option option, const char *arg)
410 v p     #  void mysql_free_result(MYSQL_RES *result)
411 v pl    #  void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
412 p pp    #  MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)
413 i pi    #  MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
414 p p     #  MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
415 l p     #  unsigned long * mysql_fetch_lengths(MYSQL_RES *result)
416 p p     #  MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result)
417 l ttl   #  unsigned long mysql_escape_string(char *to,const char *from, unsigned long from_length)
418 l pttl  #  unsigned long mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, unsigned long length)
419 v t     #  void mysql_debug(const char *debug)
420 # --- end mysqlclient library ---
422 # win32
423 l lttl