[docs] Update docs referring to get_intval which is now get_integer
[parrot.git] / docs / embed.pod
blob3283b5586d4ace2d958b801b89d746635ac3556b
1 # Copyright (C) 2001-2009, Parrot Foundation.
2 # $Id$
4 =head1 NAME
6 embed.pod - Parrot embedding system
8 =head1 SYNOPSIS
10     #include <parrot/embed.h>
11     #include <parrot/extend.h>
13     int main(int argc, char* argv[])
14     {
15         Parrot_Interp interp;
16         Parrot_PackFile pf;
18         interp = Parrot_new(NULL);
19         if (!interp) {
20             return 1;
21         }
23         pf = Parrot_pbc_read(interp, "foo.pbc", 0);
24         Parrot_pbc_load(interp, pf);
25         Parrot_runcode(interp, argc, argv);
27         Parrot_destroy(interp);
29         return 0;
30     }
32 =head1 FILES
34 =over 4
36 =item F<include/parrot/embed.h>
38 =item F<include/parrot/extend.h>
40 =back
42 =head1 DESCRIPTION
44 This is the documentation for Parrot's embedding API.
46 =head2 Data structures
48 =over 4
50 =item C<Parrot_Interp>
52 The topmost data structure in Parrot is C<Parrot_Interp>, which represents
53 a Parrot interpreter.  It is a required argument to almost every Parrot API
54 function.  The structure is opaque in an embedded environment, so you cannot
55 directly access any of its members.
57 =item C<Parrot_PackFile>
59 A Parrot packfile, the internal structure containing Parrot bytecode.
61 =item C<Parrot_String>
63 Parrot's internal string type, which contains character encoding information.
65 =item C<Parrot_PMC>
67 A Polymorphic Container.  This is the opaque external type for (PMC *).  Note
68 that this is a macro, so there can be only one C<Parrot_PMC> declaration per
69 line.
71 =item C<Parrot_Int>
73 =item C<Parrot_Float>
75 =item C<Parrot_UInt>
77 Parrot's numeric types.
79 =back
81 =head2 Constants
83 Not documented yet.
85 =head2 Type signatures
87     TODO: Write about signature strings
89 =head2 Interpreter initialization and destruction
91 =over 4
93 =item C<Parrot_Interp Parrot_new(Parrot_Interp parent)>
95 Creates a new interpreter, inheriting some data structures from a parent
96 interpreter, if supplied.  The first interpreter in any process should be
97 created with a NULL parent, and all subsequent interpreters in the same
98 process should use the first interpreter as their parent.  Failure to do so
99 may result in unpredictable errors.
101 =item C<Parrot_set_flag(PARROT_INTERP, Parrot_int flags)>
103 Sets or unsets interpreter flags.  Flags should be OR'd together.  Valid
104 flags include:
106 =over 4
108 =item PARROT_NO_FLAGS
110 =item PARROT_BOUNDS_FLAG
112 =item PARROT_GC_DEBUG_FLAG
114 =item PARROT_EXTERN_CODE_FLAG
116 =item PARROT_DESTROY_FLAG
118 =item PARROT_IS_THREAD
120 =item PARROT_THR_COPY_INTERP
122 =item PARROT_THR_THREAD_POOL
124 =back
126 See F<interpreter.h> for the definition of these flags (TODO: document flag
127 definitions here).
129 =item C<void Parrot_set_run_core(PARROT_INTERP, Parrot_Run_core_t core)>
131 Sets the runcore for the interpreter.  Must be called before executing any
132 bytecode.  Valid runcores include:
134 =over 4
136 =item PARROT_SLOW_CORE
138 =item PARROT_FUNCTION_CORE
140 =item PARROT_FAST_CORE
142 =item PARROT_EXEC_CORE
144 =item PARROT_GC_DEBUG_CORE
146 =back
148 See F<interpreter.h> for the definitive list.  If you're not sure which runcore
149 to use, don't call this function.  The default will be fine for most cases.
150 (TODO: document runcores here).
152 =item C<Parrot_set_trace(Parrot_Interp, Parrot_UInt flags)>
154 Sets the interpreter's trace flags.  Flags should be OR'd together.  Valid
155 flags are:
157 =over 4
159 =item PARROT_NO_TRACE
161 =item PARROT_TRACE_OPS_FLAG
163 =item PARROT_TRACE_FIND_METH_FLAG
165 =item PARROT_TRACE_SUB_CALL_FLAG
167 =item PARROT_ALL_TRACE_FLAGS
171 =back
173 =item C<void Parrot_set_executable_name(PARROT_INTERP, Parrot_string name)>
175 Sets the executable name of the calling process.  Note that the name is a
176 Parrot string, not a C string.
178 =item C<void Parrot_destroy(PARROT_INTERP)>
180 Destroys an interpreter.  At the time of this writing, this is a no-op.
181 See <Parrot_really_destroy()>.
183 =item C<void Parrot_really_destroy(PARROT_INTERP, int exit_code)>
185 Destroys an interpreter, regardless of the environment.  The exit code is
186 currently unused.
188 =item C<void Parrot_exit(PARROT_INTERP, int status)>
190 Destroys the interpreter and exits with an exit code of C<status>.  Before
191 exiting, the function calls all registered exit handlers in LIFO order.
192 C<Parrot_really_destroy()> is usually called as the last exit handler.
194 =item C<void Parrot_on_exit(PARROT_INTERP,
195                             void (*handler)(Parrot_Interp, int, void *), void *arg)>
197 Registers an exit handler to be called from C<Parrot_exit()> in LIFO order.
198 The handler function should accept as arguments an interpreter, an integer
199 exit code, and an argument (which can be NULL).
201 =back
203 =head2 Loading and running bytecode
205 =over 4
207 =item C<Parrot_PackFile Parrot_pbc_read(PARROT_INTERP, const char *path, const int debug)>
209 Reads Parrot bytecode or PIR from the file referenced by C<path>.  Returns
210 a packfile structure for use by C<Parrot_pbc_load()>. C<debug> should be 0.
212 =item C<void Parrot_pbc_load(PARROT_INTERP, Parrot_PackFile pf)>
214 Loads a packfile into the interpreter.  After this operation the interpreter
215 is ready to run the bytecode in the packfile.
217 =item C<void Parrot_runcode(PARROT_INTERP, int argc, char *argv[])>
219 Runs the bytecode associated with the interpreter.  Use C<argc> and C<argv[]>
220 to pass arguments to the bytecode.
222 =item C<Parrot_PackFile PackFile_new_dummy(PARROT_INTERP, char *name)>
224 Creates a "dummy" packfile in lieu of actually creating one from a bytecode
225 file on disk.
227 =item C<void Parrot_load_bytecode(PARROT_INTERP, STRING *path)>
229 Reads and load Parrot bytecode or PIR from the file referenced by C<path>.
230 You should create a dummy packfile beforehand; see C<PackFile_new_dummy> for
231 details.  Due to the void return type, the behavior of this function on error
232 is unclear.
234 =back
236 =head2 Data manipulation
238 =head3 Native types
240 =over 4
242 =item C<int Parrot_PMC_typenum(PARROT_INTERP, const char *type)>
244 Returns the internal type number corresponding to C<type>.  Useful for
245 instantiating various Parrot data types.
247 =item C<char *Parrot_str_to_cstring(PARROT_INTERP, const STRING *s)>
249 XXX needs to be a formal Parrot_* API.
250 Returns the C string representation of a Parrot string.
252 =item C<STRING *Parrot_str_new(PARROT_INTERP, const char *string, int len)>
254 XXX needs to be a formal Parrot_* API.
255 Returns the Parrot string representation of a C string.
257 =item C<string_from_literal(PARROT_INTERP, const char *string)>
259 XXX needs to be a formal Parrot_* API.
260 A macro for simplifying calls to C<Parrot_str_new>.
262 =back
264 =head3 PMCs
266 =over 4
268 =item C<Parrot_PMC Parrot_PMC_new(PARROT_INTERP, int typenum)>
270 Creates a new PMC of the type identified by C<typenum>.  Use
271 C<Parrot_PMC_typenum> to obtain the correct type number.
273 =item C<void Parrot_register_pmc(Parrot_PMC pmc)>
275 Registers an externally created PMC with the garbage collector.  You MUST call
276 this for any PMCs you create outside of Parrot bytecode, otherwise your PMC
277 may be garbage collected before you are finished using it.
279 =item C<void Parrot_unregister_pmc(Parrot_PMC pmc)>
281 Unregisters an externally created PMC from the garbage collector.  You MUST call
282 this after you are finished using PMCs you create outside of Parrot bytecode,
283 or risk memory leaks.
285 =back
287 =head3 Globals
289 =over 4
291 =item C<Parrot_PMC Parrot_find_global_cur(PARROT_INTERP, Parrot_String name)>
293 Find and return a global called C<name> in the current namespace.  Returns
294 C<PMCNULL> if not found.
296 =item C<Parrot_PMC Parrot_find_global_n(PARROT_INTERP, PMC namespace, Parrot_String name)>
298 Search the namespace PMC C<namespace> for an object with name C<globalname>.
299 Return the object, or NULL if not found.
301 =item C<Parrot_PMC Parrot_find_global_s(PARROT_INTERP, Parrot_String namespace, Parrot_String name)>
303 Find and return a global called C<name> in the namespace C<namespace>.  Returns
304 C<PMCNULL> if not found.
306 =item C<void Parrot_store_global_n(PARROT_INTERP, PMC namespace, Parrot_String name, Parrot_PMC val)>
308 Store the PMC C<val> into the namespace PMC C<namespace> with name C<globalname>.
310 =item C<void Parrot_store_global_s(PARROT_INTERP, Parrot_String namespace, Parrot_String name, Parrot_PMC val)>
312 Sets the value of a global called C<name> in the namespace C<namespace>.  Does
313 nothing if the global is not found.
315 =back
317 =head3 Lexicals
319 Not documented yet.
321 =head2 Calling subroutines
323 =over 4
325 =item C<void Parrot_ext_call(PARROT_INTERP, Parrot_PMC sub, const_char *signature, varargs ...)>
327 Call a Parrot subroutine using the supplied signature. Variables to be filled
328 with return values are passed as references in the varargs list, after all
329 arguments.
331 =back
333 =head2 Objects
335 =head3 Creating and destroying objects
337 =over 4
339 =item C<Parrot_PMC Parrot_oo_get_class(PARROT_INTERP, Parrot_PMC namespace)>
341 Returns the class corresponding to the supplied namespace.
343 =item C<Parrot_PMC Parrot_PMC_instantiate(PARROT_INTERP, Parrot_PMC the_class, Parrot_PMC arg)>
345 Instantiates a new object of class C<the_class>, which can be obtained from
346 C<Parrot_oo_get_class()>.  Passes an optional PMC argument C<arg> to the
347 constructor (see init versus init_pmc).  Use C<PMCNULL> if you are not
348 supplying an argument.
350 =back
352 =head3 Calling methods
354 =over 4
356 =item C<void Parrot_ext_call(PARROT_INTERP, Parrot_PMC method, const_char *signature, varargs ...)>
358 Methods are called using the same API function as calling a subroutine. The
359 first argument should be the object that the method will be invoked on, and it
360 should have the signature "Pi".
362 =back
364 =head1 COMPILING
366 Note: This section is aimed at you if you are writing an application
367 external to parrot which links against an installed parrot library.
369 =head2 Caveats
371 Several API functions are missing prototypes in Parrot's header files.  This
372 means you may receive type warnings during compilation even though the types
373 of your arguments and return variables are correct.  In this case it is safe
374 to cast to the correct type; not doing so may cause undesired behavior.
376 =head2 Compiler and linker flags
378 Your application will need to include the appropriate header files and
379 link against parrot and its dependencies.
381 Because the location of these files can vary from platform to platform, and
382 build to build, a general method is provided to find out the necessary flags to
383 use.
385 pkg-config is a helper tool, now common on many platforms, which many packages
386 have adopted to provide the necessary compiler and linker flags required to
387 build against a library. parrot will install a file called F<parrot.pc> which
388 can be queried using pkg-config.
390 To start with, find out what version of parrot is installed by running
391 pkg-config with the C<--modversion> flag. If this command fails with an error,
392 skip to the end of this section.
394   pkg-config --modversion parrot
396 To find out the necessary C<-I> flags, use C<--cflags>:
398   pkg-config --cflags parrot
400 ... and to find the necessary C<-L> and C<-l> flags, use C<--libs>:
402   pkg-config --libs parrot
404 Where both compiling and linking are performed in one step, query both sets of
405 flags with:
407   pkg-config --cflags --libs parrot
409 The pkg-config command can be incorporated with a compile as shown here.
411   cc src/disassemble.c `pkg-config --cflags --libs parrot`
413 Most applications will probably choose to run pkg-config as part of a
414 configure script, so if you are using autoconf you could use a test
415 such as this.
417   PARROT_REQUIRED_VERSION=0.4.1
418   AC_SUBST(PARROT_REQUIRED_VERSION)
419   PKG_CHECK_MODULES(PARROT, parrot >= $PARROT_REQUIRED_VERSION,
420                     [AC_DEFINE([HAVE_PARROT], 1, [define if have parrot])])
421   AC_SUBST(PARROT_LIBS)
422   AC_SUBST(PARROT_CFLAGS)
424 If parrot has been installed system-wide, then any of the previous
425 lines should have returned the relevant flags. If it is not installed
426 in one of the standard places that pkg-config looks, then you will get
427 an error message.
429   pkg-config --libs parrot
430   Package parrot was not found in the pkg-config search path.
431   Perhaps you should add the directory containing `parrot.pc'
432   to the PKG_CONFIG_PATH environment variable
433   No package 'parrot' found
435 As stated in the error message, use an environment variable to make pkg-config
436 look in more locations.
438   export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
440 The last part of the variable will almost certainly be F<.../lib/pkgconfig>.
441 Set this variable in your login scripts if you need it to be available in
442 future.
444 =head1 EXAMPLES
446 =head2 Load bytecode as a library and run a single subroutine
448     #include <parrot/parrot.h>
449     #include <parrot/embed.h>
450     #include <parrot/extend.h>
452     int main(int argc, char *argv[])
453     {
454         Parrot_Interp interp;
455         Parrot_PackFile pf;
456         Parrot_PMC sub;
457         Parrot_String pstr;
459         interp = Parrot_new(NULL);
460         imcc_init(interp);
462         /* create a new packfile -- any name will do */
463         pf = PackFile_new_dummy(interp, "my-parrot-code");
465         pstr = string_from_literal(interp, "foo.pir");
466         Parrot_load_bytecode(interp, pstr);
468         /* find the subroutine named "foo" in the global namespace */
469         pstr = string_from_literal(interp, "foo");
470         sub = Parrot_find_global_cur(interp, pstr);
472         /* run foo(), which returns nothing */
473         Parrot_ext_call(interp, sub, "->");
475         Parrot_destroy(interp);
477         return(0);
478     }
480 =head1 EXPORTED FUNCTIONS
482 The Parrot embedding API is not finalized, and it will go through several
483 deprecation cycles before stabilizing.  Below is the comprehensive list of
484 candidates for inclusion in the Parrot embedding API.  It includes the
485 following types of functions:
487 =over 4
489 =item * The core functions documented above
491 =item * Functions required by macros
493 =item * Parrot_PMC_* VTABLE wrappers
495 =item * Miscellaneous functions whose utility outside of the core is
496 uncertain.  This includes functions used by HLLs.
498 =item * Functions that should be removed in a future deprecation cycle.  A
499 good example of this is most of the internal string_* functions, which now
500 have formal Parrot_str_* wrappers.
502 =back
504 The list may also be augmented if additional functionality is required.
506 =over 4
508 =item C<disable_event_checking>
510 =item C<enable_event_checking>
512 =item C<interpinfo>
514 =item C<interpinfo_p>
516 =item C<interpinfo_s>
518 =item C<mem_allocate_n_typed>
520 =item C<mem_allocate_n_zeroed_typed>
522 =item C<mem_allocate_zeroed_typed>
524 =item C<mem_sys_allocate>
526 =item C<mem_sys_allocate_zeroed>
528 =item C<mem_sys_free>
530 =item C<mem_sys_realloc>
532 =item C<mem_sys_realloc_zeroed>
534 =item C<PackFile_Constant_pack>
536 =item C<PackFile_ConstTable_pack>
538 =item C<PackFile_ConstTable_pack_size>
540 =item C<PackFile_destroy>
542 =item C<PackFile_find_in_const>
544 =item C<PackFile_fixup_subs>
546 =item C<PackFile_new>
548 =item C<PackFile_new_dummy>
550 =item C<PackFile_pack>
552 =item C<PackFile_pack_size>
554 =item C<Parrot_assert>
556 =item C<Parrot_block_GC_mark>
558 =item C<Parrot_block_GC_sweep>
560 =item C<Parrot_byte_index>
562 =item C<Parrot_byte_rindex>
564 =item C<Parrot_callback_C>
566 =item C<Parrot_callback_D>
568 =item C<Parrot_ext_call>
570 =item C<Parrot_char_digit_value>
572 =item C<Parrot_charset_c_name>
574 =item C<Parrot_charset_name>
576 =item C<Parrot_charset_number>
578 =item C<Parrot_charset_number_of_str>
580 =item C<Parrot_charsets_encodings_deinit>
582 =item C<Parrot_charsets_encodings_init>
584 =item C<Parrot_clear_debug>
586 =item C<Parrot_clear_flag>
588 =item C<Parrot_clear_i>
590 =item C<Parrot_clear_n>
592 =item C<Parrot_clear_p>
594 =item C<Parrot_clear_s>
596 =item C<Parrot_clear_trace>
598 =item C<Parrot_clone>
600 =item C<Parrot_compile_file>
602 =item C<Parrot_compile_string>
604 =item C<Parrot_ComposeRole>
606 =item C<Parrot_compreg>
608 =item C<Parrot_ComputeMRO_C3>
610 =item C<Parrot_confess>
612 =item C<Parrot_context_ref_trace>
614 =item C<Parrot_cx_add_handler>
616 =item C<Parrot_cx_add_handler_local>
618 =item C<Parrot_cx_broadcast_message>
620 =item C<Parrot_cx_count_handlers_local>
622 =item C<Parrot_cx_count_handlers_typed>
624 =item C<Parrot_cx_delete_handler_local>
626 =item C<Parrot_cx_delete_handler_typed>
628 =item C<Parrot_cx_delete_suspend_for_gc>
630 =item C<Parrot_cx_delete_task>
632 =item C<Parrot_cx_find_handler_for_task>
634 =item C<Parrot_cx_find_handler_local>
636 =item C<Parrot_cx_handle_tasks>
638 =item C<Parrot_cx_peek_task>
640 =item C<Parrot_cx_request_suspend_for_gc>
642 =item C<Parrot_cx_runloop_end>
644 =item C<Parrot_cx_schedule_callback>
646 =item C<Parrot_cx_schedule_repeat>
648 =item C<Parrot_cx_schedule_sleep>
650 =item C<Parrot_cx_schedule_task>
652 =item C<Parrot_cx_schedule_timer>
654 =item C<Parrot_cx_send_message>
656 =item C<Parrot_default_charset>
658 =item C<Parrot_default_encoding>
660 =item C<Parrot_del_timer_event>
662 =item C<Parrot_destroy>
664 =item C<Parrot_disassemble>
666 =item C<Parrot_do_check_events>
668 =item C<Parrot_do_handle_events>
670 =item C<Parrot_dump_dynamic_environment>
672 =item C<Parrot_encoding_c_name>
674 =item C<Parrot_encoding_name>
676 =item C<Parrot_encoding_number>
678 =item C<Parrot_encoding_number_of_str>
680 =item C<Parrot_eprintf>
682 =item C<Parrot_event_add_io_event>
684 =item C<Parrot_ex_add_c_handler>
686 =item C<Parrot_ex_build_exception>
688 =item C<Parrot_exit>
690 =item C<Parrot_ex_mark_unhandled>
692 =item C<Parrot_ex_rethrow_from_c>
694 =item C<Parrot_ex_rethrow_from_op>
696 =item C<Parrot_ex_throw_from_c>
698 =item C<Parrot_ex_throw_from_c_args>
700 =item C<Parrot_ex_throw_from_op>
702 =item C<Parrot_ex_throw_from_op_args>
704 =item C<Parrot_find_charset>
706 =item C<Parrot_find_charset_converter>
708 =item C<Parrot_find_encoding>
710 =item C<Parrot_find_encoding_converter>
712 =item C<Parrot_find_global_cur>
714 =item C<Parrot_find_global_k>
716 =item C<Parrot_find_global_n>
718 =item C<Parrot_find_global_op>
720 =item C<Parrot_find_global_s>
722 =item C<Parrot_find_language>
724 =item C<Parrot_find_method_direct>
726 =item C<Parrot_find_method_with_cache>
728 =item C<Parrot_find_name_op>
730 =item C<Parrot_float_rand>
732 =item C<Parrot_fprintf>
734 =item C<Parrot_free_context>
736 =item C<Parrot_free_cstring>
738 =item C<Parrot_freeze>
740 =item C<Parrot_freeze_at_destruct>
742 =item C<Parrot_full_sub_name>
744 =item C<parrot_gc_context>
746 =item C<Parrot_gc_gms_init>
748 =item C<parrot_gc_gms_Parrot_gc_mark_PObj_alive>
750 =item C<Parrot_gc_mark_PObj_alive>
752 =item C<Parrot_get_charset>
754 =item C<Parrot_get_ctx_HLL_namespace>
756 =item C<Parrot_get_ctx_HLL_type>
758 =item C<Parrot_get_datatype_enum>
760 =item C<Parrot_get_datatype_name>
762 =item C<Parrot_get_encoding>
764 =item C<Parrot_get_global>
766 =item C<Parrot_get_HLL_id>
768 =item C<Parrot_get_HLL_name>
770 =item C<Parrot_get_HLL_namespace>
772 =item C<Parrot_get_HLL_type>
774 =item C<Parrot_get_intreg>
776 =item C<Parrot_get_namespace_autobase>
778 =item C<Parrot_get_namespace_keyed>
780 =item C<Parrot_get_namespace_keyed_str>
782 =item C<Parrot_get_numreg>
784 =item C<Parrot_get_pmcreg>
786 =item C<Parrot_get_root_namespace>
788 =item C<Parrot_get_runtime_path>
790 =item C<Parrot_get_runtime_prefix>
792 =item C<Parrot_get_strreg>
794 =item C<Parrot_get_vtable>
796 =item C<Parrot_get_vtable_index>
798 =item C<Parrot_get_vtable_name>
800 =item C<Parrot_init_events>
802 =item C<Parrot_init_signals>
804 =item C<Parrot_init_stacktop>
806 =item C<Parrot_int_rand>
808 =item C<Parrot_invalidate_method_cache>
810 =item C<Parrot_io_accept>
812 =item C<Parrot_io_bind>
814 =item C<Parrot_io_close>
816 =item C<Parrot_io_close_filehandle>
818 =item C<Parrot_io_close_piohandle>
820 =item C<Parrot_io_connect>
822 =item C<Parrot_IOData_mark>
824 =item C<Parrot_io_eof>
826 =item C<Parrot_io_eprintf>
828 =item C<Parrot_io_fdopen>
830 =item C<Parrot_io_finish>
832 =item C<Parrot_io_flush>
834 =item C<Parrot_io_flush_filehandle>
836 =item C<Parrot_io_fprintf>
838 =item C<Parrot_io_get_buffer_end>
840 =item C<Parrot_io_get_buffer_next>
842 =item C<Parrot_io_get_buffer_start>
844 =item C<Parrot_io_getfd>
846 =item C<Parrot_io_get_file_position>
848 =item C<Parrot_io_get_file_size>
850 =item C<Parrot_io_get_flags>
852 =item C<Parrot_io_get_last_file_position>
854 =item C<Parrot_io_get_os_handle>
856 =item C<Parrot_io_init>
858 =item C<Parrot_io_is_closed>
860 =item C<Parrot_io_is_closed_filehandle>
862 =item C<Parrot_io_is_encoding>
864 =item C<Parrot_io_is_tty>
866 =item C<Parrot_io_listen>
868 =item C<Parrot_io_make_offset>
870 =item C<Parrot_io_new_pmc>
872 =item C<Parrot_io_new_socket_pmc>
874 =item C<Parrot_io_open>
876 =item C<Parrot_io_parse_open_flags>
878 =item C<Parrot_io_peek>
880 =item C<Parrot_io_poll>
882 =item C<Parrot_io_printf>
884 =item C<Parrot_io_putps>
886 =item C<Parrot_io_puts>
888 =item C<Parrot_io_readline>
890 =item C<Parrot_io_reads>
892 =item C<Parrot_io_recv>
894 =item C<Parrot_io_seek>
896 =item C<Parrot_io_send>
898 =item C<Parrot_io_set_file_position>
900 =item C<Parrot_io_set_file_size>
902 =item C<Parrot_io_set_flags>
904 =item C<Parrot_io_set_os_handle>
906 =item C<Parrot_io_socket>
908 =item C<Parrot_io_socket_is_closed>
910 =item C<Parrot_io_STDERR>
912 =item C<Parrot_io_stdhandle>
914 =item C<Parrot_io_STDIN>
916 =item C<Parrot_io_STDOUT>
918 =item C<Parrot_io_tell>
920 =item C<Parrot_io_write>
922 =item C<Parrot_is_blocked_GC_mark>
924 =item C<Parrot_is_blocked_GC_sweep>
926 =item C<Parrot_kill_event_loop>
928 =item C<Parrot_lib_add_path>
930 =item C<Parrot_lib_add_path_from_cstring>
932 =item C<Parrot_load_bytecode>
934 =item C<Parrot_load_charset>
936 =item C<Parrot_load_encoding>
938 =item C<Parrot_load_language>
940 =item C<Parrot_load_lib>
942 =item C<Parrot_locate_runtime_file>
944 =item C<Parrot_locate_runtime_file_str>
946 =item C<Parrot_make_cb>
948 =item C<Parrot_make_default_charset>
950 =item C<Parrot_make_default_encoding>
952 =item C<Parrot_make_namespace_autobase>
954 =item C<Parrot_make_namespace_keyed>
956 =item C<Parrot_make_namespace_keyed_str>
958 =item C<Parrot_mmd_cache_create>
960 =item C<Parrot_mmd_cache_destroy>
962 =item C<Parrot_mmd_cache_lookup_by_values>
964 =item C<Parrot_mmd_cache_mark>
966 =item C<Parrot_mmd_cache_store_by_values>
968 =item C<Parrot_new>
970 =item C<Parrot_new_cb_event>
972 =item C<Parrot_new_charset>
974 =item C<Parrot_new_encoding>
976 =item C<Parrot_new_string>
978 =item C<Parrot_new_suspend_for_gc_event>
980 =item C<Parrot_new_terminate_event>
982 =item C<Parrot_new_timer_event>
984 =item C<Parrot_ns_get_name>
986 =item C<Parrot_on_exit>
988 =item C<Parrot_oo_get_class>
990 =item C<Parrot_oo_get_class_str>
992 =item C<Parrot_pbc_load>
994 =item C<Parrot_pbc_read>
996 =item C<Parrot_PMC_absolute>
998 =item C<Parrot_PMC_add>
1000 =item C<Parrot_PMC_add_attribute>
1002 =item C<Parrot_PMC_add_float>
1004 =item C<Parrot_PMC_add_int>
1006 =item C<Parrot_PMC_add_method>
1008 =item C<Parrot_PMC_add_parent>
1010 =item C<Parrot_PMC_add_role>
1012 =item C<Parrot_PMC_add_vtable_override>
1014 =item C<Parrot_PMC_assign_pmc>
1016 =item C<Parrot_PMC_assign_string_native>
1018 =item C<Parrot_PMC_can>
1020 =item C<Parrot_PMC_clone>
1022 =item C<Parrot_PMC_clone_pmc>
1024 =item C<Parrot_PMC_cmp>
1026 =item C<Parrot_PMC_cmp_num>
1028 =item C<Parrot_PMC_cmp_pmc>
1030 =item C<Parrot_PMC_cmp_string>
1032 =item C<Parrot_PMC_concatenate>
1034 =item C<Parrot_PMC_concatenate_str>
1036 =item C<Parrot_PMC_decrement>
1038 =item C<Parrot_PMC_defined>
1040 =item C<Parrot_PMC_defined_keyed>
1042 =item C<Parrot_PMC_defined_keyed_int>
1044 =item C<Parrot_PMC_defined_keyed_str>
1046 =item C<Parrot_PMC_delete_keyed>
1048 =item C<Parrot_PMC_delete_keyed_int>
1050 =item C<Parrot_PMC_delete_keyed_str>
1052 =item C<Parrot_PMC_delete_pmckey>
1054 =item C<Parrot_PMC_delprop>
1056 =item C<Parrot_PMC_destroy>
1058 =item C<Parrot_PMC_divide>
1060 =item C<Parrot_PMC_divide_float>
1062 =item C<Parrot_PMC_divide_int>
1064 =item C<Parrot_PMC_does>
1066 =item C<Parrot_PMC_does_pmc>
1068 =item C<Parrot_PMC_elements>
1070 =item C<Parrot_PMC_exists_keyed>
1072 =item C<Parrot_PMC_exists_keyed_int>
1074 =item C<Parrot_PMC_exists_keyed_str>
1076 =item C<Parrot_PMC_find_method>
1078 =item C<Parrot_PMC_floor_divide>
1080 =item C<Parrot_PMC_floor_divide_float>
1082 =item C<Parrot_PMC_floor_divide_int>
1084 =item C<Parrot_PMC_get_attr_keyed>
1086 =item C<Parrot_PMC_get_attr_str>
1088 =item C<Parrot_PMC_get_bool>
1090 =item C<Parrot_PMC_get_class>
1092 =item C<Parrot_PMC_get_cstring>
1094 =item C<Parrot_PMC_get_cstring_intkey>
1096 =item C<Parrot_PMC_get_cstringn>
1098 =item C<Parrot_PMC_get_cstringn_intkey>
1100 =item C<Parrot_PMC_get_integer>
1102 =item C<Parrot_PMC_get_integer_keyed>
1104 =item C<Parrot_PMC_get_integer_keyed_int>
1106 =item C<Parrot_PMC_get_integer_keyed_str>
1108 =item C<Parrot_PMC_get_iter>
1110 =item C<Parrot_PMC_get_namespace>
1112 =item C<Parrot_PMC_get_number>
1114 =item C<Parrot_PMC_get_number_keyed>
1116 =item C<Parrot_PMC_get_number_keyed_int>
1118 =item C<Parrot_PMC_get_number_keyed_str>
1120 =item C<Parrot_PMC_get_numval>
1122 =item C<Parrot_PMC_get_numval_intkey>
1124 =item C<Parrot_PMC_get_pmc>
1126 =item C<Parrot_PMC_get_pmc_intkey>
1128 =item C<Parrot_PMC_get_pmc_keyed>
1130 =item C<Parrot_PMC_get_pmc_keyed_int>
1132 =item C<Parrot_PMC_get_pmc_keyed_str>
1134 =item C<Parrot_PMC_get_pmc_strkey>
1136 =item C<Parrot_PMC_get_pointer>
1138 =item C<Parrot_PMC_get_pointer_intkey>
1140 =item C<Parrot_PMC_get_pointer_keyed>
1142 =item C<Parrot_PMC_get_pointer_keyed_int>
1144 =item C<Parrot_PMC_get_pointer_keyed_str>
1146 =item C<Parrot_PMC_getprop>
1148 =item C<Parrot_PMC_getprops>
1150 =item C<Parrot_PMC_get_repr>
1152 =item C<Parrot_PMC_get_string>
1154 =item C<Parrot_PMC_get_string_intkey>
1156 =item C<Parrot_PMC_get_string_keyed>
1158 =item C<Parrot_PMC_get_string_keyed_int>
1160 =item C<Parrot_PMC_get_string_keyed_str>
1162 =item C<Parrot_PMC_i_absolute>
1164 =item C<Parrot_PMC_i_add>
1166 =item C<Parrot_PMC_i_add_float>
1168 =item C<Parrot_PMC_i_add_int>
1170 =item C<Parrot_PMC_i_concatenate>
1172 =item C<Parrot_PMC_i_concatenate_str>
1174 =item C<Parrot_PMC_i_divide>
1176 =item C<Parrot_PMC_i_divide_float>
1178 =item C<Parrot_PMC_i_divide_int>
1180 =item C<Parrot_PMC_i_floor_divide>
1182 =item C<Parrot_PMC_i_floor_divide_float>
1184 =item C<Parrot_PMC_i_floor_divide_int>
1186 =item C<Parrot_PMC_i_logical_not>
1188 =item C<Parrot_PMC_i_modulus>
1190 =item C<Parrot_PMC_i_modulus_float>
1192 =item C<Parrot_PMC_i_modulus_int>
1194 =item C<Parrot_PMC_i_multiply>
1196 =item C<Parrot_PMC_i_multiply_float>
1198 =item C<Parrot_PMC_i_multiply_int>
1200 =item C<Parrot_PMC_increment>
1202 =item C<Parrot_PMC_i_neg>
1204 =item C<Parrot_PMC_init>
1206 =item C<Parrot_PMC_init_pmc>
1208 =item C<Parrot_PMC_inspect>
1210 =item C<Parrot_PMC_inspect_str>
1212 =item C<Parrot_PMC_instantiate>
1214 =item C<Parrot_PMC_invoke>
1216 =item C<Parrot_PMC_i_pow>
1218 =item C<Parrot_PMC_i_pow_float>
1220 =item C<Parrot_PMC_i_pow_int>
1222 =item C<Parrot_PMC_i_repeat>
1224 =item C<Parrot_PMC_i_repeat_int>
1226 =item C<Parrot_PMC_isa>
1228 =item C<Parrot_PMC_isa_pmc>
1230 =item C<Parrot_PMC_is_equal>
1232 =item C<Parrot_PMC_is_equal_num>
1234 =item C<Parrot_PMC_is_equal_string>
1236 =item C<Parrot_PMC_is_same>
1238 =item C<Parrot_PMC_i_subtract>
1240 =item C<Parrot_PMC_i_subtract_float>
1242 =item C<Parrot_PMC_i_subtract_int>
1244 =item C<Parrot_PMC_logical_and>
1246 =item C<Parrot_PMC_logical_not>
1248 =item C<Parrot_PMC_logical_or>
1250 =item C<Parrot_PMC_logical_xor>
1252 =item C<Parrot_PMC_mark>
1254 =item C<Parrot_PMC_modulus>
1256 =item C<Parrot_PMC_modulus_float>
1258 =item C<Parrot_PMC_modulus_int>
1260 =item C<Parrot_PMC_morph>
1262 =item C<Parrot_PMC_multiply>
1264 =item C<Parrot_PMC_multiply_float>
1266 =item C<Parrot_PMC_multiply_int>
1268 =item C<Parrot_PMC_name>
1270 =item C<Parrot_PMC_neg>
1272 =item C<Parrot_PMC_new>
1274 =item C<Parrot_PMC_newclass>
1276 =item C<Parrot_PMC_null>
1278 =item C<Parrot_PMC_pop_float>
1280 =item C<Parrot_PMC_pop_integer>
1282 =item C<Parrot_PMC_pop_pmc>
1284 =item C<Parrot_PMC_pop_string>
1286 =item C<Parrot_PMC_pow>
1288 =item C<Parrot_PMC_pow_float>
1290 =item C<Parrot_PMC_pow_int>
1292 =item C<Parrot_PMC_push_float>
1294 =item C<Parrot_PMC_push_integer>
1296 =item C<Parrot_PMC_push_intval>
1298 =item C<Parrot_PMC_push_numval>
1300 =item C<Parrot_PMC_push_pmc>
1302 =item C<Parrot_PMC_push_pmcval>
1304 =item C<Parrot_PMC_push_string>
1306 =item C<Parrot_PMC_remove_attribute>
1308 =item C<Parrot_PMC_remove_method>
1310 =item C<Parrot_PMC_remove_parent>
1312 =item C<Parrot_PMC_remove_role>
1314 =item C<Parrot_PMC_remove_vtable_override>
1316 =item C<Parrot_PMC_repeat>
1318 =item C<Parrot_PMC_repeat_int>
1320 =item C<Parrot_PMC_set_attr_keyed>
1322 =item C<Parrot_PMC_set_attr_str>
1324 =item C<Parrot_PMC_set_bignum_int>
1326 =item C<Parrot_PMC_set_bignum_num>
1328 =item C<Parrot_PMC_set_bignum_str>
1330 =item C<Parrot_PMC_set_bool>
1332 =item C<Parrot_PMC_set_cstring>
1334 =item C<Parrot_PMC_set_cstring_intkey>
1336 =item C<Parrot_PMC_set_cstringn>
1338 =item C<Parrot_PMC_set_cstringn_intkey>
1340 =item C<Parrot_PMC_set_integer_keyed>
1342 =item C<Parrot_PMC_set_integer_keyed_int>
1344 =item C<Parrot_PMC_set_integer_keyed_str>
1346 =item C<Parrot_PMC_set_integer_native>
1348 =item C<Parrot_PMC_set_integer_same>
1350 =item C<Parrot_PMC_set_intval>
1352 =item C<Parrot_PMC_set_intval_intkey>
1354 =item C<Parrot_PMC_set_number_keyed>
1356 =item C<Parrot_PMC_set_number_keyed_int>
1358 =item C<Parrot_PMC_set_number_keyed_str>
1360 =item C<Parrot_PMC_set_number_native>
1362 =item C<Parrot_PMC_set_number_same>
1364 =item C<Parrot_PMC_set_numval>
1366 =item C<Parrot_PMC_set_numval_intkey>
1368 =item C<Parrot_PMC_set_pmc>
1370 =item C<Parrot_PMC_set_pmc_intkey>
1372 =item C<Parrot_PMC_set_pmc_keyed>
1374 =item C<Parrot_PMC_set_pmc_keyed_int>
1376 =item C<Parrot_PMC_set_pmc_keyed_str>
1378 =item C<Parrot_PMC_set_pmc_pmckey>
1380 =item C<Parrot_PMC_set_pmc_strkey>
1382 =item C<Parrot_PMC_set_pointer>
1384 =item C<Parrot_PMC_set_pointer_intkey>
1386 =item C<Parrot_PMC_set_pointer_keyed>
1388 =item C<Parrot_PMC_set_pointer_keyed_int>
1390 =item C<Parrot_PMC_set_pointer_keyed_str>
1392 =item C<Parrot_PMC_setprop>
1394 =item C<Parrot_PMC_set_string>
1396 =item C<Parrot_PMC_set_string_intkey>
1398 =item C<Parrot_PMC_set_string_keyed>
1400 =item C<Parrot_PMC_set_string_keyed_int>
1402 =item C<Parrot_PMC_set_string_keyed_str>
1404 =item C<Parrot_PMC_set_string_native>
1406 =item C<Parrot_PMC_set_string_same>
1408 =item C<Parrot_PMC_set_vtable>
1410 =item C<Parrot_PMC_share>
1412 =item C<Parrot_PMC_share_ro>
1414 =item C<Parrot_PMC_shift_float>
1416 =item C<Parrot_PMC_shift_integer>
1418 =item C<Parrot_PMC_shift_pmc>
1420 =item C<Parrot_PMC_shift_string>
1422 =item C<Parrot_PMC_splice>
1424 =item C<Parrot_PMC_substr>
1426 =item C<Parrot_PMC_substr_str>
1428 =item C<Parrot_PMC_subtract>
1430 =item C<Parrot_PMC_subtract_float>
1432 =item C<Parrot_PMC_subtract_int>
1434 =item C<Parrot_PMC_typenum>
1436 =item C<Parrot_PMC_unshift_float>
1438 =item C<Parrot_PMC_unshift_integer>
1440 =item C<Parrot_PMC_unshift_pmc>
1442 =item C<Parrot_PMC_unshift_string>
1444 =item C<Parrot_pop_context>
1446 =item C<Parrot_pop_mark>
1448 =item C<Parrot_printf>
1450 =item C<Parrot_psprintf>
1452 =item C<Parrot_push_action>
1454 =item C<Parrot_push_context>
1456 =item C<Parrot_push_mark>
1458 =item C<Parrot_range_rand>
1460 =item C<Parrot_regenerate_HLL_namespaces>
1462 =item C<Parrot_register_charset>
1464 =item C<Parrot_register_charset_converter>
1466 =item C<Parrot_register_encoding>
1468 =item C<Parrot_register_HLL>
1470 =item C<Parrot_register_HLL_lib>
1472 =item C<Parrot_register_HLL_type>
1474 =item C<Parrot_register_move>
1476 =item C<Parrot_register_pmc>
1478 =item C<Parrot_run_callback>
1480 =item C<Parrot_runcode>
1482 =item C<Parrot_run_native>
1484 =item C<Parrot_schedule_event>
1486 =item C<Parrot_schedule_interp_qentry>
1488 =item C<Parrot_secret_snprintf>
1490 =item C<Parrot_set_config_hash_internal>
1492 =item C<Parrot_set_context_threshold>
1494 =item C<Parrot_set_debug>
1496 =item C<Parrot_set_executable_name>
1498 =item C<Parrot_set_flag>
1500 =item C<Parrot_set_global>
1502 =item C<Parrot_set_intreg>
1504 =item C<Parrot_set_numreg>
1506 =item C<Parrot_set_pmcreg>
1508 =item C<Parrot_set_run_core>
1510 =item C<Parrot_set_strreg>
1512 =item C<Parrot_set_trace>
1514 =item C<Parrot_setwarnings>
1516 =item C<Parrot_shared_gc_block>
1518 =item C<Parrot_shared_gc_unblock>
1520 =item C<Parrot_sleep_on_event>
1522 =item C<Parrot_snprintf>
1524 =item C<Parrot_sprintf_c>
1526 =item C<Parrot_sprintf_s>
1528 =item C<Parrot_srand>
1530 =item C<Parrot_store_global_n>
1532 =item C<Parrot_store_global_s>
1534 =item C<Parrot_store_sub_in_namespace>
1536 =item C<Parrot_str_boolean>
1538 =item C<Parrot_str_byte_length>
1540 =item C<Parrot_str_change_charset>
1542 =item C<Parrot_str_change_encoding>
1544 =item C<Parrot_str_chopn>
1546 =item C<Parrot_str_chopn_inplace>
1548 =item C<Parrot_str_compare>
1550 =item C<Parrot_str_compose>
1552 =item C<Parrot_str_concat>
1554 =item C<Parrot_str_copy>
1556 =item C<Parrot_str_downcase>
1558 =item C<Parrot_str_downcase_inplace>
1560 =item C<Parrot_str_equal>
1562 =item C<Parrot_str_escape>
1564 =item C<Parrot_str_escape_truncate>
1566 =item C<Parrot_str_find_cclass>
1568 =item C<Parrot_str_find_index>
1570 =item C<Parrot_str_find_not_cclass>
1572 =item C<Parrot_str_finish>
1574 =item C<Parrot_str_format_data>
1576 =item C<Parrot_str_free_cstring>
1578 =item C<Parrot_str_from_int>
1580 =item C<Parrot_str_from_num>
1582 =item C<Parrot_str_indexed>
1584 =item C<Parrot_str_cstring>
1586 =item C<Parrot_str_init>
1588 =item C<Parrot_str_is_cclass>
1590 =item C<Parrot_str_join>
1592 =item C<Parrot_str_length>
1594 =item C<Parrot_str_new>
1596 =item C<Parrot_str_new_constant>
1598 =item C<Parrot_str_new_COW>
1600 =item C<Parrot_str_new_init>
1602 =item C<Parrot_str_new_noinit>
1604 =item C<Parrot_str_not_equal>
1606 =item C<Parrot_str_pin>
1608 =item C<Parrot_str_repeat>
1610 =item C<Parrot_str_replace>
1612 =item C<Parrot_str_resize>
1614 =item C<Parrot_str_reuse_COW>
1616 =item C<Parrot_str_set>
1618 =item C<Parrot_str_split>
1620 =item C<Parrot_str_substr>
1622 =item C<Parrot_str_titlecase>
1624 =item C<Parrot_str_titlecase_inplace>
1626 =item C<Parrot_str_to_cstring>
1628 =item C<Parrot_str_to_hashval>
1630 =item C<Parrot_str_to_int>
1632 =item C<Parrot_str_to_num>
1634 =item C<Parrot_str_unescape>
1636 =item C<Parrot_str_unpin>
1638 =item C<Parrot_str_upcase>
1640 =item C<Parrot_str_upcase_inplace>
1642 =item C<Parrot_str_write_COW>
1644 =item C<Parrot_sub_new_from_c_func>
1646 =item C<Parrot_test_debug>
1648 =item C<Parrot_test_flag>
1650 =item C<Parrot_test_trace>
1652 =item C<Parrot_thaw>
1654 =item C<Parrot_thaw_constants>
1656 =item C<Parrot_uint_rand>
1658 =item C<Parrot_unblock_GC_mark>
1660 =item C<Parrot_unblock_GC_sweep>
1662 =item C<Parrot_unregister_pmc>
1664 =item C<Parrot_vfprintf>
1666 =item C<Parrot_vsnprintf>
1668 =item C<Parrot_vsprintf_c>
1670 =item C<Parrot_vsprintf_s>
1672 =item C<Parrot_warn>
1674 =item C<Parrot_pmc_is_null>
1676 =item C<pmc_new>
1678 =item C<pmc_type>
1680 =item C<PObj_custom_destroy_SET>
1682 =item C<PObj_custom_mark_SET>
1684 =item C<string_capacity>
1686 =item C<string_chr>
1688 =item C<string_make>
1690 =item C<string_make_from_charset>
1692 =item C<string_max_bytes>
1694 =item C<string_ord>
1696 =item C<string_primary_encoding_for_representation>
1698 =item C<string_rep_compatible>
1700 =item C<string_to_cstring_nullable>
1702 =back
1704 =head1 SEE ALSO
1706 F<src/main.c> and F<t/src/*.t> for Parrot's use of the embedding system.
1708 L<http://pkgconfig.freedesktop.org/wiki/> A pkg-config page
1710 =cut