Imported Upstream version 4.0.1

Former-commit-id: 6d37e02debfe41dd5c13ba6f6a2428c8b1ff5e28
This commit is contained in:
Jo Shields 2015-04-26 19:10:23 +01:00
parent 3c1f479b9d
commit 7272927785
252 changed files with 16715 additions and 1176 deletions

View File

@ -52,7 +52,7 @@ dist-hook:
d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive
rm -rf `find $(top_distdir)/external -path '*\.git'`
rm -f `find $(top_distdir)/external -path '*\.exe'`
rm -f `find $(top_distdir)/external -path '*\.dll' -not -path '*/binary-reference-assemblies/v4\.0*'`
rm -f `find $(top_distdir)/external -path '*\.dll' -not -path '*/binary-reference-assemblies/*'`
cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/
cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/
# Disable this for now because it is very slow and causes wrench to timeout:

View File

@ -947,7 +947,7 @@ dist-hook:
d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive
rm -rf `find $(top_distdir)/external -path '*\.git'`
rm -f `find $(top_distdir)/external -path '*\.exe'`
rm -f `find $(top_distdir)/external -path '*\.dll' -not -path '*/binary-reference-assemblies/v4\.0*'`
rm -f `find $(top_distdir)/external -path '*\.dll' -not -path '*/binary-reference-assemblies/*'`
cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/
cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/
.PHONY: get-monolite-latest

3
aclocal.m4 vendored
View File

@ -593,7 +593,8 @@ to "yes", and re-run configure.
END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi])
fi
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further

192
config.guess vendored
View File

@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2013 Free Software Foundation, Inc.
# Copyright 1992-2014 Free Software Foundation, Inc.
timestamp='2013-06-10'
timestamp='2014-03-23'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2013 Free Software Foundation, Inc.
Copyright 1992-2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
LIBC=gnu
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
;;
esac
@ -826,7 +826,7 @@ EOF
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:MSYS*:*)
*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
@ -969,10 +969,10 @@ EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
or1k:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
openrisc*:Linux:*:*)
echo or1k-unknown-linux-${LIBC}
exit ;;
or32:Linux:*:*)
or32:Linux:*:* | or1k*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
@ -1260,16 +1260,26 @@ EOF
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
# that puts up a graphical alert prompting to install
# developer tools. Any system running Mac OS X 10.7 or
# later (Darwin 11 and later) is required to have a 64-bit
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
@ -1361,154 +1371,6 @@ EOF
exit ;;
esac
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
# if !defined (ultrix)
# include <sys/param.h>
# if defined (BSD)
# if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
# else
# if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# endif
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# else
printf ("vax-dec-ultrix\n"); exit (0);
# endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
c34*)
echo c34-convex-bsd
exit ;;
c38*)
echo c38-convex-bsd
exit ;;
c4*)
echo c4-convex-bsd
exit ;;
esac
fi
cat >&2 <<EOF
$0: unable to guess system type

30
config.sub vendored
View File

@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2013 Free Software Foundation, Inc.
# Copyright 1992-2014 Free Software Foundation, Inc.
timestamp='2013-08-10'
timestamp='2014-09-11'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright 1992-2013 Free Software Foundation, Inc.
Copyright 1992-2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -265,6 +265,7 @@ case $basic_machine in
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
@ -282,8 +283,10 @@ case $basic_machine in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
@ -295,11 +298,11 @@ case $basic_machine in
| nds32 | nds32le | nds32be \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 \
| or1k | or32 \
| open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
| riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@ -324,7 +327,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@ -381,6 +384,7 @@ case $basic_machine in
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
@ -400,8 +404,10 @@ case $basic_machine in
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
@ -413,6 +419,7 @@ case $basic_machine in
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@ -822,6 +829,10 @@ case $basic_machine in
basic_machine=powerpc-unknown
os=-morphos
;;
moxiebox)
basic_machine=moxie-unknown
os=-moxiebox
;;
msdos)
basic_machine=i386-pc
os=-msdos
@ -1367,14 +1378,14 @@ case $os in
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@ -1592,9 +1603,6 @@ case $basic_machine in
mips*-*)
os=-elf
;;
or1k-*)
os=-elf
;;
or32-*)
os=-coff
;;

View File

@ -1 +1 @@
25aca4d9234ba9866baffb6d0b49f85530244ece
bb398f7ae55a546fb7bf939dabfed4a3fb9730bc

View File

@ -1 +1 @@
64b436391b7e39451d01b5d01756e5484d447684
01ba76eb592f8ee610b360b3614f3f6a8de954d6

40
docs/deploy/api-style.css Normal file
View File

@ -0,0 +1,40 @@
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}

View File

@ -0,0 +1,337 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-assembly.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Assemblies</h2>
<h3>Synopsis</h3>
<div class="header">
#include &lt;metadata/assembly.h&gt;
typedef struct _MonoImage MonoImage;
typedef struct _MonoAssembly MonoAssembly;
MonoAssembly* <a href="#api:mono_assembly_open">mono_assembly_open</a> (const char *filename,
MonoImageOpenStatus *status);
void <a href="#api:mono_assembly_close">mono_assembly_close</a> (MonoAssembly *assembly);
MonoAssembly* <a href="#api:mono_assembly_load">mono_assembly_load</a> (MonoAssemblyName *aname,
const char *basedir,
MonoImageOpenStatus *status);
MonoAssembly* <a href="#api:mono_assembly_load_full">mono_assembly_load_full</a> (MonoAssemblyName *aname,
const char *basedir,
MonoImageOpenStatus *status,
gboolean refonly);
MonoAssembly* <a href="#api:mono_assembly_loaded">mono_assembly_loaded</a> (MonoAssemblyName *aname);
<a href="#api:mono_assembly_get_object"></a>
MonoImage* <a href="#api:mono_assembly_get_image">mono_assembly_get_image</a> (MonoAssembly *assembly);
MonoAssembly* <a href="#api:mono_assembly_get_main">mono_assembly_get_main</a> (void);
G_CONST_RETURN gchar * <a href="#api:mono_assembly_getrootdir">mono_assembly_getrootdir</a> (void);
void <a href="#api:mono_assembly_name_free">mono_assembly_name_free</a> (MonoAssemblyName *aname);
char* <a href="#api:mono_stringify_assembly_name">mono_stringify_assembly_name</a> (MonoAssemblyName *aname);
gboolean <a href="#api:mono_assembly_names_equal">mono_assembly_names_equal</a> (MonoAssemblyName *l,
MonoAssemblyName *r);
<a href="#api:mono_module_file_get_object"></a>
<a href="#api:mono_module_get_object"></a>
</div>
<a name="cil_assembly_load"></a>
<h3>Assembly Loading</h3>
<a name="api:mono_assembly_open"></a>
<div class="api">
<div class="api-entry">mono_assembly_open</div>
<div class="prototype">MonoAssembly*
mono_assembly_open (const char *filename, MonoImageOpenStatus *status)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>filename:</i></dt><dd> Opens the assembly pointed out by this name</dd><dt><i>status:</i></dt><dd> where a status code can be returned</dd></blockquote>
<b>Returns</b>
<blockquote> a pointer to the MonoAssembly if <i>filename</i> contains a valid
assembly or NULL on error. Details about the error are stored in the
<i>status</i> variable.</blockquote>
<b>Remarks</b>
<p />
mono_assembly_open opens the PE-image pointed by <i>filename</i>, and
loads any external assemblies referenced by it.
</div> <a name="api:mono_assembly_close"></a>
<div class="api">
<div class="api-entry">mono_assembly_close</div>
<div class="prototype">void
mono_assembly_close (MonoAssembly *assembly)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>assembly:</i></dt><dd> the assembly to release.</dd></blockquote>
<b>Remarks</b>
<p />
This method releases a reference to the <i>assembly</i>. The assembly is
only released when all the outstanding references to it are released.
</div> <a name="api:mono_assembly_load"></a>
<div class="api">
<div class="api-entry">mono_assembly_load</div>
<div class="prototype">MonoAssembly*
mono_assembly_load (MonoAssemblyName *aname, const char *basedir, MonoImageOpenStatus *status)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>aname:</i></dt><dd> A MonoAssemblyName with the assembly name to load.</dd><dt><i>basedir:</i></dt><dd> A directory to look up the assembly at.</dd><dt><i>status:</i></dt><dd> a pointer to a MonoImageOpenStatus to return the status of the load operation</dd></blockquote>
<b>Returns</b>
<blockquote> the assembly referenced by <i>aname</i> loaded or NULL on error. On error the
value pointed by status is updated with an error code.</blockquote>
<b>Remarks</b>
<p />
Loads the assembly referenced by <i>aname</i>, if the value of <i>basedir</i> is not NULL, it
attempts to load the assembly from that directory before probing the standard locations.
</div> <a name="api:mono_assembly_load_full"></a>
<div class="api">
<div class="api-entry">mono_assembly_load_full</div>
<div class="prototype">MonoAssembly*
mono_assembly_load_full (MonoAssemblyName *aname, const char *basedir, MonoImageOpenStatus *status, gboolean refonly)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>aname:</i></dt><dd> A MonoAssemblyName with the assembly name to load.</dd><dt><i>basedir:</i></dt><dd> A directory to look up the assembly at.</dd><dt><i>status:</i></dt><dd> a pointer to a MonoImageOpenStatus to return the status of the load operation</dd><dt><i>refonly:</i></dt><dd> Whether this assembly is being opened in &quot;reflection-only&quot; mode.</dd></blockquote>
<b>Returns</b>
<blockquote> the assembly referenced by <i>aname</i> loaded or NULL on error. On error the
value pointed by status is updated with an error code.</blockquote>
<b>Remarks</b>
<p />
Loads the assembly referenced by <i>aname</i>, if the value of <i>basedir</i> is not NULL, it
attempts to load the assembly from that directory before probing the standard locations.
If the assembly is being opened in reflection-only mode (<i>refonly</i> set to TRUE) then no
assembly binding takes place.
</div> <a name="api:mono_assembly_loaded"></a>
<div class="api">
<div class="api-entry">mono_assembly_loaded</div>
<div class="prototype">MonoAssembly*
mono_assembly_loaded (MonoAssemblyName *aname)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>aname:</i></dt><dd> an assembly to look for.</dd></blockquote>
<b>Returns</b>
<blockquote> NULL If the given <i>aname</i> assembly has not been loaded, or a pointer to
a MonoAssembly that matches the MonoAssemblyName specified.</blockquote>
</div> <a name="api:mono_assembly_get_object"></a>
<div class="api">
<div class="api-entry">mono_assembly_get_object</div>
<div class="prototype">Prototype: mono_assembly_get_object</div>
<p />
</div><h3>Working with Assemblies</h3>
<a name="api:mono_assembly_get_image"></a>
<div class="api">
<div class="api-entry">mono_assembly_get_image</div>
<div class="prototype">MonoImage*
mono_assembly_get_image (MonoAssembly *assembly)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>assembly:</i></dt><dd> The assembly to retrieve the image from</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoImage associated with this assembly.
</blockquote>
</div> <a name="api:mono_assembly_get_main"></a>
<div class="api">
<div class="api-entry">mono_assembly_get_main</div>
<div class="prototype">MonoAssembly*
mono_assembly_get_main (void)
</div>
<p />
<b>Returns</b>
<blockquote> the assembly for the application, the first assembly that is loaded by the VM
</blockquote>
</div> <a name="api:mono_assembly_getrootdir"></a>
<div class="api">
<div class="api-entry">mono_assembly_getrootdir</div>
<div class="prototype">G_CONST_RETURN gchar *
mono_assembly_getrootdir (void)
</div>
<p />
<b>Returns</b>
<blockquote> a string with the directory, this string should not be freed.
</blockquote>
<b>Remarks</b>
<p /> <p />
Obtains the root directory used for looking up assemblies.
</div><h3>Assembly Names</h3>
<p />The MonoAssemblyName contains the full identity of an
assembly (name, culture, public key, public key token,
version and any other flags).
<p />These unmanaged objects represent the <a href="http://www.mono-project.com/monodoc/T:System.Reflection.AssemblyName">System.Reflection.AssemblyName</a>
managed type.
<a name="api:mono_assembly_name_free"></a>
<div class="api">
<div class="api-entry">mono_assembly_name_free</div>
<div class="prototype">void
mono_assembly_name_free (MonoAssemblyName *aname)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>aname:</i></dt><dd> assembly name to free</dd></blockquote>
<b>Remarks</b>
<p /> <p />
Frees the provided assembly name object.
(it does not frees the object itself, only the name members).
</div> <a name="api:mono_stringify_assembly_name"></a>
<div class="api">
<div class="api-entry">mono_stringify_assembly_name</div>
<div class="prototype">char*
mono_stringify_assembly_name (MonoAssemblyName *aname)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>aname:</i></dt><dd> the assembly name.</dd></blockquote>
<b>Returns</b>
<blockquote> a newly allocated string with a string representation of
the assembly name.</blockquote>
<b>Remarks</b>
<p />
Convert <i>aname</i> into its string format. The returned string is dynamically
allocated and should be freed by the caller.
</div> <a name="api:mono_assembly_names_equal"></a>
<div class="api">
<div class="api-entry">mono_assembly_names_equal</div>
<div class="prototype">gboolean
mono_assembly_names_equal (MonoAssemblyName *l, MonoAssemblyName *r)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>l:</i></dt><dd> first assembly</dd><dt><i>r:</i></dt><dd> second assembly.</dd></blockquote>
<b>Returns</b>
<blockquote> TRUE if both assembly names are equal.
</blockquote>
<b>Remarks</b>
<p />
Compares two MonoAssemblyNames and returns whether they are equal.
This compares the names, the cultures, the release version and their
public tokens.
</div><h3>Modules</h3>
<p />An assembly is made up of one or more modules.
<a name="api:mono_module_file_get_object"></a>
<div class="api">
<div class="api-entry">mono_module_file_get_object</div>
<div class="prototype">Prototype: mono_module_file_get_object</div>
<p />
</div> <a name="api:mono_module_get_object"></a>
<div class="api">
<div class="api-entry">mono_module_get_object</div>
<div class="prototype">Prototype: mono_module_get_object</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,821 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-class.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Class Operations</h2>
<a name="api:mono_class_array_element_size"></a>
<div class="api">
<div class="api-entry">mono_class_array_element_size</div>
<div class="prototype">gint32
mono_class_array_element_size (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> </dd></blockquote>
<b>Returns</b>
<blockquote> the number of bytes an element of type <i>klass</i>
uses when stored into an array.</blockquote>
</div> <a name="api:mono_class_data_size"></a>
<div class="api">
<div class="api-entry">mono_class_data_size</div>
<div class="prototype">gint32
mono_class_data_size (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> a class </dd></blockquote>
<b>Returns</b>
<blockquote> the size of the static class data
</blockquote>
<b>Remarks</b>
<p /> <p />
</div> <a name="api:mono_class_enum_basetype"></a>
<div class="api">
<div class="api-entry">mono_class_enum_basetype</div>
<div class="prototype">MonoType*
mono_class_enum_basetype (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the underlying type representation for an enumeration.
</blockquote>
</div> <a name="api:mono_class_from_generic_parameter"></a>
<div class="api">
<div class="api-entry">mono_class_from_generic_parameter</div>
<div class="prototype">Prototype: mono_class_from_generic_parameter</div>
<p />
</div> <a name="api:mono_class_from_mono_type"></a>
<div class="api">
<div class="api-entry">mono_class_from_mono_type</div>
<div class="prototype">Prototype: mono_class_from_mono_type</div>
<p />
</div> <a name="api:mono_class_from_name_case"></a>
<div class="api">
<div class="api-entry">mono_class_from_name_case</div>
<div class="prototype">MonoClass*
mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The MonoImage where the type is looked up in</dd><dt><i>name_space:</i></dt><dd> the type namespace</dd><dt><i>name:</i></dt><dd> the type short name.</dd><dt><i>deprecated:</i></dt><dd> use the _checked variant</dd></blockquote>
<b>Remarks</b>
<p />
Obtains a MonoClass with a given namespace and a given name which
is located in the given MonoImage. The namespace and name
lookups are case insensitive.
</div> <a name="api:mono_class_from_name"></a>
<div class="api">
<div class="api-entry">mono_class_from_name</div>
<div class="prototype">MonoClass*
mono_class_from_name (MonoImage *image, const char* name_space, const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The MonoImage where the type is looked up in</dd><dt><i>name_space:</i></dt><dd> the type namespace</dd><dt><i>name:</i></dt><dd> the type short name.</dd></blockquote>
<b>Remarks</b>
<p />
Obtains a MonoClass with a given namespace and a given name which
is located in the given MonoImage.
To reference nested classes, use the &quot;/&quot; character as a separator.
For example use &quot;Foo/Bar&quot; to reference the class Bar that is nested
inside Foo, like this: &quot;class Foo { class Bar {} }&quot;.
</div> <a name="api:mono_class_from_typeref"></a>
<div class="api">
<div class="api-entry">mono_class_from_typeref</div>
<div class="prototype">Prototype: mono_class_from_typeref</div>
<p />
</div> <a name="api:mono_class_get_byref_type"></a>
<div class="api">
<div class="api-entry">mono_class_get_byref_type</div>
<div class="prototype">MonoType*
mono_class_get_byref_type (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Remarks</b>
<p />
<p />
</div> <a name="api:mono_class_get_element_class"></a>
<div class="api">
<div class="api-entry">mono_class_get_element_class</div>
<div class="prototype">MonoClass*
mono_class_get_element_class (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the element class of an array or an enumeration.
</blockquote>
</div> <a name="api:mono_class_get_events"></a>
<div class="api">
<div class="api-entry">mono_class_get_events</div>
<div class="prototype">MonoEvent*
mono_class_get_events (MonoClass* klass, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> a <i>MonoEvent</i>* on each invocation, or NULL when no more are available.
</blockquote>
<b>Remarks</b>
<p />
This routine is an iterator routine for retrieving the properties in a class.
You must pass a gpointer that points to zero and is treated as an opaque handle to
iterate over all of the elements. When no more values are
available, the return value is NULL.
</div> <a name="api:mono_class_get_event_token"></a>
<div class="api">
<div class="api-entry">mono_class_get_event_token</div>
<div class="prototype">Prototype: mono_class_get_event_token</div>
<p />
</div> <a name="api:mono_class_get_field_from_name"></a>
<div class="api">
<div class="api-entry">mono_class_get_field_from_name</div>
<div class="prototype">MonoClassField*
mono_class_get_field_from_name (MonoClass *klass, const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the class to lookup the field.</dd><dt><i>name:</i></dt><dd> the field name</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoClassField pointer of the named field or NULL
</blockquote>
<b>Remarks</b>
<p />
Search the class <i>klass</i> and it's parents for a field with the name <i>name</i>.
<p />
</div> <a name="api:mono_class_get_field"></a>
<div class="api">
<div class="api-entry">mono_class_get_field</div>
<div class="prototype">MonoClassField*
mono_class_get_field (MonoClass *class, guint32 field_token)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>class:</i></dt><dd> the class to lookup the field.</dd><dt><i>field_token:</i></dt><dd> the field token</dd></blockquote>
<b>Returns</b>
<blockquote> A MonoClassField representing the type and offset of
the field, or a NULL value if the field does not belong to this
class.</blockquote>
</div> <a name="api:mono_class_get_fields"></a>
<div class="api">
<div class="api-entry">mono_class_get_fields</div>
<div class="prototype">MonoClassField*
mono_class_get_fields (MonoClass* klass, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> a <i>MonoClassField</i>* on each iteration, or NULL when no more fields are available.
</blockquote>
<b>Remarks</b>
<p />
This routine is an iterator routine for retrieving the fields in a class.
You must pass a gpointer that points to zero and is treated as an opaque handle to
iterate over all of the elements. When no more values are
available, the return value is NULL.
</div> <a name="api:mono_class_get_field_token"></a>
<div class="api">
<div class="api-entry">mono_class_get_field_token</div>
<div class="prototype">guint32
mono_class_get_field_token (MonoClassField *field)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>field:</i></dt><dd> the field we need the token of</dd></blockquote>
<b>Returns</b>
<blockquote> the token representing the field in the image it was loaded from.
</blockquote>
<b>Remarks</b>
<p />
Get the token of a field. Note that the tokesn is only valid for the image
the field was loaded from. Don't use this function for fields in dynamic types.
<p />
</div> <a name="api:mono_class_get_flags"></a>
<div class="api">
<div class="api-entry">mono_class_get_flags</div>
<div class="prototype">guint32
mono_class_get_flags (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the flags from the TypeDef table.
</blockquote>
<b>Remarks</b>
<p />
The type flags from the TypeDef table from the metadata.
see the TYPE_ATTRIBUTE_* definitions on tabledefs.h for the
different values.
</div> <a name="api:mono_class_get_full"></a>
<div class="api">
<div class="api-entry">mono_class_get_full</div>
<div class="prototype">MonoClass*
mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *context)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image where the class resides</dd><dt><i>type_token:</i></dt><dd> the token for the class</dd><dt><i>context:</i></dt><dd> the generic context used to evaluate generic instantiations in</dd><dt><i>deprecated:</i></dt><dd> Functions that expose MonoGenericContext are going away in mono 4.0</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoClass that represents <i>type_token</i> in <i>image</i>
</blockquote>
</div> <a name="api:mono_class_get_image"></a>
<div class="api">
<div class="api-entry">mono_class_get_image</div>
<div class="prototype">Prototype: mono_class_get_image</div>
<p />
</div> <a name="api:mono_class_get_interfaces"></a>
<div class="api">
<div class="api-entry">mono_class_get_interfaces</div>
<div class="prototype">MonoClass*
mono_class_get_interfaces (MonoClass* klass, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> a <i>Monoclass</i>* on each invocation, or NULL when no more are available.
</blockquote>
<b>Remarks</b>
<p />
This routine is an iterator routine for retrieving the interfaces implemented by this class.
You must pass a gpointer that points to zero and is treated as an opaque handle to
iterate over all of the elements. When no more values are
available, the return value is NULL.
</div> <a name="api:mono_class_get_method_from_name"></a>
<div class="api">
<div class="api-entry">mono_class_get_method_from_name</div>
<div class="prototype">MonoMethod*
mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> where to look for the method</dd><dt><i>name:</i></dt><dd> name of the method</dd><dt><i>param_count:</i></dt><dd> number of parameters. -1 for any number.</dd></blockquote>
<b>Remarks</b>
<p />
Obtains a MonoMethod with a given name and number of parameters.
It only works if there are no multiple signatures for any given method name.
</div> <a name="api:mono_class_get_methods"></a>
<div class="api">
<div class="api-entry">mono_class_get_methods</div>
<div class="prototype">MonoMethod*
mono_class_get_methods (MonoClass* klass, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> a MonoMethod on each iteration or NULL when no more methods are available.
</blockquote>
<b>Remarks</b>
<p />
This routine is an iterator routine for retrieving the fields in a class.
You must pass a gpointer that points to zero and is treated as an opaque handle to
iterate over all of the elements. When no more values are
available, the return value is NULL.
</div> <a name="api:mono_class_get"></a>
<div class="api">
<div class="api-entry">mono_class_get</div>
<div class="prototype">Prototype: mono_class_get</div>
<p />
</div> <a name="api:mono_class_get_name"></a>
<div class="api">
<div class="api-entry">mono_class_get_name</div>
<div class="prototype">const char*
mono_class_get_name (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the name of the class.
</blockquote>
</div> <a name="api:mono_class_get_namespace"></a>
<div class="api">
<div class="api-entry">mono_class_get_namespace</div>
<div class="prototype">const char*
mono_class_get_namespace (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the namespace of the class.
</blockquote>
</div> <a name="api:mono_class_get_nested_types"></a>
<div class="api">
<div class="api-entry">mono_class_get_nested_types</div>
<div class="prototype">MonoClass*
mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> a <i>Monoclass</i>* on each invocation, or NULL when no more are available.
</blockquote>
<b>Remarks</b>
<p />
This routine is an iterator routine for retrieving the nested types of a class.
This works only if <i>klass</i> is non-generic, or a generic type definition.
You must pass a gpointer that points to zero and is treated as an opaque handle to
iterate over all of the elements. When no more values are
available, the return value is NULL.
</div> <a name="api:mono_class_get_nesting_type"></a>
<div class="api">
<div class="api-entry">mono_class_get_nesting_type</div>
<div class="prototype">Prototype: mono_class_get_nesting_type</div>
<p />
</div> <a name="api:mono_class_get_parent"></a>
<div class="api">
<div class="api-entry">mono_class_get_parent</div>
<div class="prototype">MonoClass*
mono_class_get_parent (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the parent class for this class.
</blockquote>
</div> <a name="api:mono_class_get_properties"></a>
<div class="api">
<div class="api-entry">mono_class_get_properties</div>
<div class="prototype">MonoProperty*
mono_class_get_properties (MonoClass* klass, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> a <i>MonoProperty</i>* on each invocation, or NULL when no more are available.
</blockquote>
<b>Remarks</b>
<p />
This routine is an iterator routine for retrieving the properties in a class.
You must pass a gpointer that points to zero and is treated as an opaque handle to
iterate over all of the elements. When no more values are
available, the return value is NULL.
</div> <a name="api:mono_class_get_property_from_name"></a>
<div class="api">
<div class="api-entry">mono_class_get_property_from_name</div>
<div class="prototype">Prototype: mono_class_get_property_from_name</div>
<p />
</div> <a name="api:mono_class_get_property_token"></a>
<div class="api">
<div class="api-entry">mono_class_get_property_token</div>
<div class="prototype">Prototype: mono_class_get_property_token</div>
<p />
</div> <a name="api:mono_class_get_rank"></a>
<div class="api">
<div class="api-entry">mono_class_get_rank</div>
<div class="prototype">int
mono_class_get_rank (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the rank for the array (the number of dimensions).
</blockquote>
</div> <a name="api:mono_class_get_type"></a>
<div class="api">
<div class="api-entry">mono_class_get_type</div>
<div class="prototype">MonoType*
mono_class_get_type (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoType from the class.
</blockquote>
<b>Remarks</b>
<p />
This method returns the internal Type representation for the class.
</div> <a name="api:mono_class_inflate_generic_method"></a>
<div class="api">
<div class="api-entry">mono_class_inflate_generic_method</div>
<div class="prototype">Prototype: mono_class_inflate_generic_method</div>
<p />
</div> <a name="api:mono_class_inflate_generic_type"></a>
<div class="api">
<div class="api-entry">mono_class_inflate_generic_type</div>
<div class="prototype">Prototype: mono_class_inflate_generic_type</div>
<p />
</div> <a name="api:mono_class_init"></a>
<div class="api">
<div class="api-entry">mono_class_init</div>
<div class="prototype">gboolean
mono_class_init (MonoClass *class)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>class:</i></dt><dd> the class to initialize</dd></blockquote>
<b>Remarks</b>
<p />
Compute the instance_size, class_size and other infos that cannot be
computed at mono_class_get() time. Also compute vtable_size if possible.
Returns TRUE on success or FALSE if there was a problem in loading
the type (incorrect assemblies, missing assemblies, methods, etc).
LOCKING: Acquires the loader lock.
</div> <a name="api:mono_class_instance_size"></a>
<div class="api">
<div class="api-entry">mono_class_instance_size</div>
<div class="prototype">gint32
mono_class_instance_size (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> a class </dd></blockquote>
<b>Returns</b>
<blockquote> the size of an object instance
</blockquote>
<b>Remarks</b>
<p /> <p />
</div> <a name="api:mono_class_is_assignable_from"></a>
<div class="api">
<div class="api-entry">mono_class_is_assignable_from</div>
<div class="prototype">gboolean
mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the class to be assigned to</dd><dt><i>oklass:</i></dt><dd> the source class</dd></blockquote>
<b>Returns</b>
<blockquote> true if an instance of object oklass can be assigned to an
instance of object <i>klass</i></blockquote>
</div> <a name="api:mono_class_is_enum"></a>
<div class="api">
<div class="api-entry">mono_class_is_enum</div>
<div class="prototype">gboolean
mono_class_is_enum (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> true if the MonoClass represents an enumeration.
</blockquote>
</div> <a name="api:mono_class_is_subclass_of"></a>
<div class="api">
<div class="api-entry">mono_class_is_subclass_of</div>
<div class="prototype">gboolean
mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
gboolean check_interfaces)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> class to probe if it is a subclass of another one</dd><dt><i>klassc:</i></dt><dd> the class we suspect is the base class</dd><dt><i>check_interfaces:</i></dt><dd> whether we should perform interface checks</dd></blockquote>
<b>Remarks</b>
<p />
This method determines whether <i>klass</i> is a subclass of <i>klassc</i>.
If the <i>check_interfaces</i> flag is set, then if <i>klassc</i> is an interface
this method return true if the <i>klass</i> implements the interface or
if <i>klass</i> is an interface, if one of its base classes is <i>klass</i>.
If <i>check_interfaces</i> is false then, then if <i>klass</i> is not an interface
then it returns true if the <i>klass</i> is a subclass of <i>klassc</i>.
if <i>klass</i> is an interface and <i>klassc</i> is System.Object, then this function
return true.
</div> <a name="api:mono_class_is_valuetype"></a>
<div class="api">
<div class="api-entry">mono_class_is_valuetype</div>
<div class="prototype">gboolean
mono_class_is_valuetype (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> true if the MonoClass represents a ValueType.
</blockquote>
</div> <a name="api:mono_class_min_align"></a>
<div class="api">
<div class="api-entry">mono_class_min_align</div>
<div class="prototype">gint32
mono_class_min_align (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> a class </dd></blockquote>
<b>Returns</b>
<blockquote> minimm alignment requirements
</blockquote>
<b>Remarks</b>
<p /> <p />
</div> <a name="api:mono_class_num_events"></a>
<div class="api">
<div class="api-entry">mono_class_num_events</div>
<div class="prototype">int
mono_class_num_events (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the number of events in the class.
</blockquote>
</div> <a name="api:mono_class_num_fields"></a>
<div class="api">
<div class="api-entry">mono_class_num_fields</div>
<div class="prototype">int
mono_class_num_fields (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the number of static and instance fields in the class.
</blockquote>
</div> <a name="api:mono_class_num_methods"></a>
<div class="api">
<div class="api-entry">mono_class_num_methods</div>
<div class="prototype">int
mono_class_num_methods (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the number of methods in the class.
</blockquote>
</div> <a name="api:mono_class_num_properties"></a>
<div class="api">
<div class="api-entry">mono_class_num_properties</div>
<div class="prototype">int
mono_class_num_properties (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> the MonoClass to act on</dd></blockquote>
<b>Returns</b>
<blockquote> the number of properties in the class.
</blockquote>
</div> <a name="api:mono_class_value_size"></a>
<div class="api">
<div class="api-entry">mono_class_value_size</div>
<div class="prototype">gint32
mono_class_value_size (MonoClass *klass, guint32 *align)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> a class </dd></blockquote>
<b>Returns</b>
<blockquote> the size of a value of kind <i>klass</i>
</blockquote>
<b>Remarks</b>
<p />
This function is used for value types, and return the
space and the alignment to store that kind of value object.
</div> <a name="api:mono_class_vtable"></a>
<div class="api">
<div class="api-entry">mono_class_vtable</div>
<div class="prototype">MonoVTable*
mono_class_vtable (MonoDomain *domain, MonoClass *class)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> the application domain</dd><dt><i>class:</i></dt><dd> the class to initialize</dd></blockquote>
<b>Remarks</b>
<p />
VTables are domain specific because we create domain specific code, and
they contain the domain specific static class data.
On failure, NULL is returned, and class-&gt;exception_type is set.
</div> <a name="api:mono_class_get_method_from_name_flags"></a>
<div class="api">
<div class="api-entry">mono_class_get_method_from_name_flags</div>
<div class="prototype">MonoMethod*
mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> where to look for the method</dd><dt><i>name_space:</i></dt><dd> name of the method</dd><dt><i>param_count:</i></dt><dd> number of parameters. -1 for any number.</dd><dt><i>flags:</i></dt><dd> flags which must be set in the method</dd></blockquote>
<b>Remarks</b>
<p />
Obtains a MonoMethod with a given name and number of parameters.
It only works if there are no multiple signatures for any given method name.
</div></body>
</html>
</span>

View File

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-codegen.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h3>Code manager</h3>
<a name="api:mono_code_manager_commit"></a>
<div class="api">
<div class="api-entry">mono_code_manager_commit</div>
<div class="prototype">void
mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsize)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>cman:</i></dt><dd> a code manager</dd><dt><i>data:</i></dt><dd> the pointer returned by mono_code_manager_reserve ()</dd><dt><i>size:</i></dt><dd> the size requested in the call to mono_code_manager_reserve ()</dd><dt><i>newsize:</i></dt><dd> the new size to reserve</dd></blockquote>
<b>Remarks</b>
<p />
If we reserved too much room for a method and we didn't allocate
already from the code manager, we can get back the excess allocation
for later use in the code manager.
</div> <a name="api:mono_code_manager_destroy"></a>
<div class="api">
<div class="api-entry">mono_code_manager_destroy</div>
<div class="prototype">void
mono_code_manager_destroy (MonoCodeManager *cman)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>cman:</i></dt><dd> a code manager</dd></blockquote>
<b>Remarks</b>
<p />
Free all the memory associated with the code manager <i>cman</i>.
</div> <a name="api:mono_code_manager_foreach"></a>
<div class="api">
<div class="api-entry">mono_code_manager_foreach</div>
<div class="prototype">void
mono_code_manager_foreach (MonoCodeManager *cman, MonoCodeManagerFunc func, void *user_data)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>cman:</i></dt><dd> a code manager</dd><dt><i>func:</i></dt><dd> a callback function pointer</dd><dt><i>user_data:</i></dt><dd> additional data to pass to <i>func</i></dd></blockquote>
<b>Remarks</b>
<p />
Invokes the callback <i>func</i> for each different chunk of memory allocated
in the code manager <i>cman</i>.
</div> <a name="api:mono_code_manager_invalidate"></a>
<div class="api">
<div class="api-entry">mono_code_manager_invalidate</div>
<div class="prototype">void
mono_code_manager_invalidate (MonoCodeManager *cman)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>cman:</i></dt><dd> a code manager</dd></blockquote>
<b>Remarks</b>
<p />
Fill all the memory with an invalid native code value
so that any attempt to execute code allocated in the code
manager <i>cman</i> will fail. This is used for debugging purposes.
</div> <a name="api:mono_code_manager_new_dynamic"></a>
<div class="api">
<div class="api-entry">mono_code_manager_new_dynamic</div>
<div class="prototype">MonoCodeManager*
mono_code_manager_new_dynamic (void)
</div>
<p />
<b>Returns</b>
<blockquote> the new code manager
</blockquote>
<b>Remarks</b>
<p />
Creates a new code manager suitable for holding native code that can be
used for single or small methods that need to be deallocated independently
of other native code.
</div> <a name="api:mono_code_manager_new"></a>
<div class="api">
<div class="api-entry">mono_code_manager_new</div>
<div class="prototype">MonoCodeManager*
mono_code_manager_new (void)
</div>
<p />
<b>Returns</b>
<blockquote> the new code manager
</blockquote>
<b>Remarks</b>
<p />
Creates a new code manager. A code manager can be used to allocate memory
suitable for storing native code that can be later executed.
A code manager allocates memory from the operating system in large chunks
(typically 64KB in size) so that many methods can be allocated inside them
close together, improving cache locality.
</div></body>
</html>
</span>

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-counters.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Counters</h2>
<p />Counters is a Mono API for flexible statistics collection
and is used to track different events inside the JIT.
<p />You would typically register an address with the
<tt>mono_counters_register</tt> routine and increment the
counters from your application as you go. At the end of the
program you would call mono_counters_dump which will display
all the registered counters.
<p />If you need more complicated counter computation, a
function can be provided instead of an address. In that case
the <tt>MONO_COUNTER_CALLBACK</tt> flag must be ored in the
type request.
<p />The types that can be rendered are:
<pre>
MONO_COUNTER_INT
MONO_COUNTER_UINT
MONO_COUNTER_WORD
MONO_COUNTER_LONG
MONO_COUNTER_ULONG
MONO_COUNTER_DOUBLE
MONO_COUNTER_STRING
</pre>
<p />To organize the output, you register also a section where
the counter will be displayed, or one of the following values
when you register your counter:
<pre>
MONO_COUNTER_JIT
MONO_COUNTER_GC
MONO_COUNTER_METADATA
MONO_COUNTER_GENERICS
MONO_COUNTER_SECURITY
</pre>
<a name="api:mono_counters_dump"></a>
<div class="api">
<div class="api-entry">mono_counters_dump</div>
<div class="prototype">void
mono_counters_dump (int section_mask, FILE *outfile)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>section_mask:</i></dt><dd> The sections to dump counters for</dd><dt><i>outfile:</i></dt><dd> a FILE to dump the results to</dd></blockquote>
<b>Remarks</b>
<p />
Displays the counts of all the enabled counters registered.
To filter by variance, you can OR one or more variance with the specific section you want.
Use MONO_COUNTER_SECTION_MASK to dump all categories of a specific variance.
</div> <a name="api:mono_counters_enable"></a>
<div class="api">
<div class="api-entry">mono_counters_enable</div>
<div class="prototype">void
mono_counters_enable (int section_mask)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>section_mask:</i></dt><dd> a mask listing the sections that will be displayed</dd></blockquote>
<b>Remarks</b>
<p />
This is used to track which counters will be displayed.
</div></body>
</html>
</span>

View File

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-debug.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<a name="api:mono_debug_il_offset_from_address"></a>
<div class="api">
<div class="api-entry">mono_debug_il_offset_from_address</div>
<div class="prototype">gint32
mono_debug_il_offset_from_address (MonoMethod *method, MonoDomain *domain, guint32 native_offset)
</div>
<p />
<b>Remarks</b>
<p />
Compute the IL offset corresponding to NATIVE_OFFSET inside the native
code of METHOD in DOMAIN.
</div> <a name="api:mono_debug_add_method"></a>
<div class="api">
<div class="api-entry">mono_debug_add_method</div>
<div class="prototype">Prototype: mono_debug_add_method</div>
<p />
</div> <a name="api:mono_debug_close_mono_symbol_file"></a>
<div class="api">
<div class="api-entry">mono_debug_close_mono_symbol_file</div>
<div class="prototype">Prototype: mono_debug_close_mono_symbol_file</div>
<p />
</div> <a name="api:mono_debug_find_method"></a>
<div class="api">
<div class="api-entry">mono_debug_find_method</div>
<div class="prototype">Prototype: mono_debug_find_method</div>
<p />
</div> <a name="api:mono_debug_using_mono_debugger"></a>
<div class="api">
<div class="api-entry">mono_debug_using_mono_debugger</div>
<div class="prototype">Prototype: mono_debug_using_mono_debugger</div>
<p />
</div><h3>Mono Debugger Interface</h3>
<p />These are methods that are invoked by the debugger at
runtime.
<a name="api:mono_debugger_breakpoint_callback"></a>
<div class="api">
<div class="api-entry">mono_debugger_breakpoint_callback</div>
<div class="prototype">Prototype: mono_debugger_breakpoint_callback</div>
<p />
</div> <a name="api:mono_debugger_check_runtime_version"></a>
<div class="api">
<div class="api-entry">mono_debugger_check_runtime_version</div>
<div class="prototype">Prototype: mono_debugger_check_runtime_version</div>
<p />
</div> <a name="api:mono_debugger_event"></a>
<div class="api">
<div class="api-entry">mono_debugger_event</div>
<div class="prototype">Prototype: mono_debugger_event</div>
<p />
</div> <a name="api:mono_debugger_handle_exception"></a>
<div class="api">
<div class="api-entry">mono_debugger_handle_exception</div>
<div class="prototype">Prototype: mono_debugger_handle_exception</div>
<p />
</div> <a name="api:mono_debugger_insert_breakpoint_full"></a>
<div class="api">
<div class="api-entry">mono_debugger_insert_breakpoint_full</div>
<div class="prototype">Prototype: mono_debugger_insert_breakpoint_full</div>
<p />
</div> <a name="api:mono_debugger_insert_breakpoint"></a>
<div class="api">
<div class="api-entry">mono_debugger_insert_breakpoint</div>
<div class="prototype">Prototype: mono_debugger_insert_breakpoint</div>
<p />
</div> <a name="api:mono_debugger_lock"></a>
<div class="api">
<div class="api-entry">mono_debugger_lock</div>
<div class="prototype">Prototype: mono_debugger_lock</div>
<p />
</div> <a name="api:mono_debugger_method_has_breakpoint"></a>
<div class="api">
<div class="api-entry">mono_debugger_method_has_breakpoint</div>
<div class="prototype">Prototype: mono_debugger_method_has_breakpoint</div>
<p />
</div> <a name="api:mono_debugger_remove_breakpoint"></a>
<div class="api">
<div class="api-entry">mono_debugger_remove_breakpoint</div>
<div class="prototype">Prototype: mono_debugger_remove_breakpoint</div>
<p />
</div> <a name="api:mono_debugger_runtime_invoke"></a>
<div class="api">
<div class="api-entry">mono_debugger_runtime_invoke</div>
<div class="prototype">Prototype: mono_debugger_runtime_invoke</div>
<p />
</div> <a name="api:mono_debugger_unlock"></a>
<div class="api">
<div class="api-entry">mono_debugger_unlock</div>
<div class="prototype">Prototype: mono_debugger_unlock</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-decimal.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Decimal Support</h1>
<p />You can use the mono_decimal functions to access and
manipulate <tt>System.Decimal</tt> types from C.
<a name="api:mono_decimal2double"></a>
<div class="api">
<div class="api-entry">mono_decimal2double</div>
<div class="prototype">Prototype: mono_decimal2double</div>
<p />
</div> <a name="api:mono_decimal2Int64"></a>
<div class="api">
<div class="api-entry">mono_decimal2Int64</div>
<div class="prototype">Prototype: mono_decimal2Int64</div>
<p />
</div> <a name="api:mono_decimal2string"></a>
<div class="api">
<div class="api-entry">mono_decimal2string</div>
<div class="prototype">Prototype: mono_decimal2string</div>
<p />
</div> <a name="api:mono_decimal2UInt64"></a>
<div class="api">
<div class="api-entry">mono_decimal2UInt64</div>
<div class="prototype">Prototype: mono_decimal2UInt64</div>
<p />
</div> <a name="api:mono_decimalCompare"></a>
<div class="api">
<div class="api-entry">mono_decimalCompare</div>
<div class="prototype">Prototype: mono_decimalCompare</div>
<p />
</div> <a name="api:mono_decimalDiv"></a>
<div class="api">
<div class="api-entry">mono_decimalDiv</div>
<div class="prototype">Prototype: mono_decimalDiv</div>
<p />
</div> <a name="api:mono_decimalFloorAndTrunc"></a>
<div class="api">
<div class="api-entry">mono_decimalFloorAndTrunc</div>
<div class="prototype">Prototype: mono_decimalFloorAndTrunc</div>
<p />
</div> <a name="api:mono_decimalIncr"></a>
<div class="api">
<div class="api-entry">mono_decimalIncr</div>
<div class="prototype">Prototype: mono_decimalIncr</div>
<p />
</div> <a name="api:mono_decimalIntDiv"></a>
<div class="api">
<div class="api-entry">mono_decimalIntDiv</div>
<div class="prototype">Prototype: mono_decimalIntDiv</div>
<p />
</div> <a name="api:mono_decimalMult"></a>
<div class="api">
<div class="api-entry">mono_decimalMult</div>
<div class="prototype">Prototype: mono_decimalMult</div>
<p />
</div> <a name="api:mono_decimalRound"></a>
<div class="api">
<div class="api-entry">mono_decimalRound</div>
<div class="prototype">Prototype: mono_decimalRound</div>
<p />
</div> <a name="api:mono_decimalSetExponent"></a>
<div class="api">
<div class="api-entry">mono_decimalSetExponent</div>
<div class="prototype">Prototype: mono_decimalSetExponent</div>
<p />
</div> <a name="api:mono_double2decimal"></a>
<div class="api">
<div class="api-entry">mono_double2decimal</div>
<div class="prototype">Prototype: mono_double2decimal</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,307 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-domains.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Application Domains</h2>
<h3>Synopsis</h3>
<div class="header">
#include &lt;metadata/appdomain.h&gt;
/* Managed AppDomain */
typedef struct _MonoAppDomain MonoAppDomain;
/* Unmanaged representation */
typedef struct _MonoDomain MonoDomain;
/* Represents System.Runtime.Remoting.Contexts.Context */
typedef struct _MonoAppContext MonoAppContext
MonoAssembly* <a href="#api:mono_domain_assembly_open">mono_domain_assembly_open</a> (MonoDomain *domain,
const char *name);
<a href="#api:mono_domain_create"></a>
gboolean <a href="#api:mono_domain_finalize">mono_domain_finalize</a> (MonoDomain *domain,
guint32 timeout) ;
<a href="#api:mono_domain_foreach"></a>
<a href="#api:mono_domain_free"></a>
<a href="#api:mono_domain_get_by_id"></a>
MonoDomain* <a href="#api:mono_domain_get_id">mono_domain_get_by_id</a> (gint32 domainid) ;
MonoDomain* <a href="#api:mono_domain_get">mono_domain_get</a> ();
gboolean <a href="#api:mono_domain_has_type_resolve">mono_domain_has_type_resolve</a> (MonoDomain *domain);
<a href="#api:mono_domain_is_unloading"></a>
void <a href="#api:mono_domain_set_internal">mono_domain_set_internal</a> (MonoDomain *domain);
gboolean <a href="#api:mono_domain_set">mono_domain_set</a> (MonoDomain *domain,
gboolean force);
MonoReflectionAssembly* <a href="#api:mono_domain_try_type_resolve">mono_domain_try_type_resolve</a> (MonoDomain *domain,
char *name,
MonoObject *tb);
gboolean <a href="#api:mono_domain_owns_vtable_slot">mono_domain_owns_vtable_slot</a> (MonoDomain *domain,
gpointer vtable_slot);
<a href="#api:mono_context_get"></a>
<a href="#api:mono_context_set"></a>
</div>
<p />Application domains are used to isolate multiple
applications on a single Mono virtual machine. They are
conceptually similiar to processes, the difference is that
processes are managed by the operating system, while
application domains are managed by the Mono virtual machine.
<p />For more information on applications domains see the <a href="http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx">AppDomain FAQ</a>.
<p />The <tt>MonoDomain</tt> is the unmanaged representation of
the <a href="http://www.mono-project.com/monodoc/T:System.AppDomain">System.AppDomain</a>
managed type, while the <tt>MonoAppDomain</tt> type represents
the managed version (<tt>MonoAppDomain</tt> has a pointer to
a <tt>MonoDomain</tt>).
<a name="api:mono_domain_assembly_open"></a>
<div class="api">
<div class="api-entry">mono_domain_assembly_open</div>
<div class="prototype">MonoAssembly*
mono_domain_assembly_open (MonoDomain *domain, const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> the application domain</dd><dt><i>name:</i></dt><dd> file name of the assembly</dd></blockquote>
<b>Remarks</b>
<p />
fixme: maybe we should integrate this with mono_assembly_open ??
</div> <a name="api:mono_domain_create"></a>
<div class="api">
<div class="api-entry">mono_domain_create</div>
<div class="prototype">Prototype: mono_domain_create</div>
<p />
</div> <a name="api:mono_domain_finalize"></a>
<div class="api">
<div class="api-entry">mono_domain_finalize</div>
<div class="prototype">
gboolean
mono_domain_finalize (MonoDomain *domain, guint32 timeout)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> the domain to finalize</dd><dt><i>timeout:</i></dt><dd> msects to wait for the finalization to complete, -1 to wait indefinitely</dd></blockquote>
<b>Returns</b>
<blockquote> TRUE if succeeded, FALSE if there was a timeout
</blockquote>
<b>Remarks</b>
<p />
Request finalization of all finalizable objects inside <i>domain</i>. Wait
<i>timeout</i> msecs for the finalization to complete.
</div> <a name="api:mono_domain_foreach"></a>
<div class="api">
<div class="api-entry">mono_domain_foreach</div>
<div class="prototype">Prototype: mono_domain_foreach</div>
<p />
</div> <a name="api:mono_domain_free"></a>
<div class="api">
<div class="api-entry">mono_domain_free</div>
<div class="prototype">Prototype: mono_domain_free</div>
<p />
</div> <a name="api:mono_domain_get_by_id"></a>
<div class="api">
<div class="api-entry">mono_domain_get_by_id</div>
<div class="prototype">Prototype: mono_domain_get_by_id</div>
<p />
</div> <a name="api:mono_domain_get_id"></a>
<div class="api">
<div class="api-entry">mono_domain_get_id</div>
<div class="prototype">MonoDomain*
mono_domain_get_by_id (gint32 domainid)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domainid:</i></dt><dd> the ID</dd></blockquote>
<b>Returns</b>
<blockquote> the a domain for a specific domain id.
</blockquote>
</div> <a name="api:mono_domain_get"></a>
<div class="api">
<div class="api-entry">mono_domain_get</div>
<div class="prototype">MonoDomain*
mono_domain_get ()
</div>
<p />
<b>Returns</b>
<blockquote> the current domain, to obtain the root domain use
mono_get_root_domain().</blockquote>
</div> <a name="api:mono_domain_has_type_resolve"></a>
<div class="api">
<div class="api-entry">mono_domain_has_type_resolve</div>
<div class="prototype">gboolean
mono_domain_has_type_resolve (MonoDomain *domain)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> application domains being looked up</dd></blockquote>
<b>Remarks</b>
<p />
Returns true if the AppDomain.TypeResolve field has been
set.
</div> <a name="api:mono_domain_is_unloading"></a>
<div class="api">
<div class="api-entry">mono_domain_is_unloading</div>
<div class="prototype">Prototype: mono_domain_is_unloading</div>
<p />
</div> <a name="api:mono_domain_set_internal"></a>
<div class="api">
<div class="api-entry">mono_domain_set_internal</div>
<div class="prototype">void
mono_domain_set_internal (MonoDomain *domain)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> the new domain</dd></blockquote>
<b>Remarks</b>
<p />
Sets the current domain to <i>domain</i>.
</div> <a name="api:mono_domain_set"></a>
<div class="api">
<div class="api-entry">mono_domain_set</div>
<div class="prototype">gboolean
mono_domain_set (MonoDomain *domain, gboolean force)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> domain</dd><dt><i>force:</i></dt><dd> force setting.</dd></blockquote>
<b>Returns</b>
<blockquote>
TRUE on success;
FALSE if the domain is unloaded</blockquote>
<b>Remarks</b>
<p />
Set the current appdomain to <i>domain</i>. If <i>force</i> is set, set it even
if it is being unloaded.
</div> <a name="api:mono_domain_try_type_resolve"></a>
<div class="api">
<div class="api-entry">mono_domain_try_type_resolve</div>
<div class="prototype">MonoReflectionAssembly*
mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> application domainwhere the name where the type is going to be resolved</dd><dt><i>name:</i></dt><dd> the name of the type to resolve or NULL.</dd><dt><i>tb:</i></dt><dd> A System.Reflection.Emit.TypeBuilder, used if name is NULL.</dd></blockquote>
<b>Returns</b>
<blockquote> A MonoReflectionAssembly or NULL if not found
</blockquote>
<b>Remarks</b>
<p />
This routine invokes the internal System.AppDomain.DoTypeResolve and returns
the assembly that matches name.
If <i>name</i> is null, the value of ((TypeBuilder)tb).FullName is used instead
</div> <a name="api:mono_domain_owns_vtable_slot"></a>
<div class="api">
<div class="api-entry">mono_domain_owns_vtable_slot</div>
<div class="prototype">gboolean
mono_domain_owns_vtable_slot (MonoDomain *domain, gpointer vtable_slot)
</div>
<p />
<b>Remarks</b>
<p />
Returns whenever VTABLE_SLOT is inside a vtable which belongs to DOMAIN.
</div><h3>Contexts</h3>
<a name="api:mono_context_get"></a>
<div class="api">
<div class="api-entry">mono_context_get</div>
<div class="prototype">Prototype: mono_context_get</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-dynamic-codegen.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Dynamic Code Generation</h2>
<p />The dynamic code generation interface inside the Mono
runtime is similar to the API exposed by
System.Reflection.Emit.
<p />This interface is used by Mono internally to generate code
on the flight in a cross-platform fashion. For example,
P/Invoke marshalling in Mono is implemented in terms of this
interface, but it is also used in various other parts of the
runtime.
<p />Unlike Reflection.Emit, the dynamic code generation
interface does not start with an assembly builder. The code
generation interface starts directly at the method level,
which is represented by a pointer to the MonoMethodBuilder
structure.
<p />To JIT this method, the process is this:
<ul>
<li>Create a <tt>MonoMethodBuilder</tt> object using
the <tt>mono_mb_new</tt> method. The method's class
is specified as the first argument.
<li>Create the method signature, using
<tt>mono_metadata_signature_alloc</tt>. The call
takes the number of arguments that the method takes.
Then you must initialize the types for each one of the
parameters.
<li>Emit the CIL code, using one of the
<tt>mono_mb_emit_*</tt> functions. There are some
helper routines that you can use.
<li>Create the <tt>MonoMethod</tt> from the
<tt>MethodBuilder</tt> using
<tt>mono_mb_create_method</tt>.
<li>Release the <tt>MonoMethodBuilder</tt> resources
using mono_mb_free.
</li></li></li></li></li></ul>
<p />The result of this process is a <tt>MonoMethod</tt> which
can be called using <tt><a href="api:mono_create_jit_trampoline">mono_create_jit_trampoline</a></tt>
routine or can be passed to any other functions that require
the MonoMethod.
<p />Example:
<pre>
MonoMethod *adder ()
{
MonoMethodBuilder *mb;
MonoMethodSignature *sig;
MonoMethod *method;
mb = mono_mb_new (mono_defaults.object_class, &quot;adder&quot;, MONO_WRAPPER_NONE);
/* Setup method signature */
sig = mono_metadata_signature_alloc (2);
sig-&gt;ret = &amp;mono_get_int32_class ()-&gt;byval_arg;
sig-&gt;params [0] = &amp;mono_get_int32_class ()-&gt;byval_arg;
sig-&gt;params [1] = &amp;mono_defaults.int32_class-&gt;byval_arg;
/* Emit CIL code */
mono_mb_emit_ldarg (mb, 0);
mono_mb_emit_ldarg (mb, 1);
mono_mb_emit_byte (mb, CEE_ADD);
mono_mb_emit_byte (mb, CEE_RET);
/* Get the method */
method = mono_mb_create_method (mb, sig, max_stack);
/* Cleanup */
mono_mb-free (mb);
return method;
}
</pre>
<a name="api:mono_mb_new"></a>
<div class="api">
<div class="api-entry">mono_mb_new</div>
<div class="prototype">Prototype: mono_mb_new</div>
<p />
<p />The possible values for the <i>type</i> argument are:
<pre>
MONO_WRAPPER_NONE
MONO_WRAPPER_DELEGATE_INVOKE
MONO_WRAPPER_DELEGATE_BEGIN_INVOKE
MONO_WRAPPER_DELEGATE_END_INVOKE
MONO_WRAPPER_RUNTIME_INVOKE
MONO_WRAPPER_NATIVE_TO_MANAGED
MONO_WRAPPER_MANAGED_TO_NATIVE
MONO_WRAPPER_REMOTING_INVOKE
MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK
MONO_WRAPPER_XDOMAIN_INVOKE
MONO_WRAPPER_XDOMAIN_DISPATCH
MONO_WRAPPER_LDFLD
MONO_WRAPPER_STFLD
MONO_WRAPPER_LDFLD_REMOTE
MONO_WRAPPER_STFLD_REMOTE
MONO_WRAPPER_SYNCHRONIZED
MONO_WRAPPER_DYNAMIC_METHOD
MONO_WRAPPER_ISINST
MONO_WRAPPER_CASTCLASS
MONO_WRAPPER_PROXY_ISINST
MONO_WRAPPER_STELEMREF
MONO_WRAPPER_UNBOX
MONO_WRAPPER_LDFLDA
MONO_WRAPPER_UNKNOWN
</pre>
</div><h3>Emitting IL</h3>
<p />Functions that can be used to generate IL on the flight,
similar in spirit to System.Reflection.Emit.ILGenerator.
<a name="api:mono_mb_emit_add_to_local"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_add_to_local</div>
<div class="prototype">Prototype: mono_mb_emit_add_to_local</div>
<p />
</div> <a name="api:mono_mb_emit_branch"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_branch</div>
<div class="prototype">Prototype: mono_mb_emit_branch</div>
<p />
</div> <a name="api:mono_mb_emit_byte"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_byte</div>
<div class="prototype">Prototype: mono_mb_emit_byte</div>
<p />
</div> <a name="api:mono_mb_emit_exception"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_exception</div>
<div class="prototype">Prototype: mono_mb_emit_exception</div>
<p />
</div> <a name="api:mono_mb_emit_i2"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_i2</div>
<div class="prototype">Prototype: mono_mb_emit_i2</div>
<p />
</div> <a name="api:mono_mb_emit_i4"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_i4</div>
<div class="prototype">Prototype: mono_mb_emit_i4</div>
<p />
</div> <a name="api:mono_mb_emit_icon"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_icon</div>
<div class="prototype">Prototype: mono_mb_emit_icon</div>
<p />
</div> <a name="api:mono_mb_emit_ldarg_addr"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_ldarg_addr</div>
<div class="prototype">Prototype: mono_mb_emit_ldarg_addr</div>
<p />
</div> <a name="api:mono_mb_emit_ldarg"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_ldarg</div>
<div class="prototype">Prototype: mono_mb_emit_ldarg</div>
<p />
</div> <a name="api:mono_mb_emit_ldflda"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_ldflda</div>
<div class="prototype">Prototype: mono_mb_emit_ldflda</div>
<p />
</div> <a name="api:mono_mb_emit_ldloc_addr"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_ldloc_addr</div>
<div class="prototype">Prototype: mono_mb_emit_ldloc_addr</div>
<p />
</div> <a name="api:mono_mb_emit_ldloc"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_ldloc</div>
<div class="prototype">Prototype: mono_mb_emit_ldloc</div>
<p />
</div> <a name="api:mono_mb_emit_ldstr"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_ldstr</div>
<div class="prototype">Prototype: mono_mb_emit_ldstr</div>
<p />
</div> <a name="api:mono_mb_emit_managed_call"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_managed_call</div>
<div class="prototype">Prototype: mono_mb_emit_managed_call</div>
<p />
</div> <a name="api:mono_mb_emit_native_call"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_native_call</div>
<div class="prototype">Prototype: mono_mb_emit_native_call</div>
<p />
</div> <a name="api:mono_mb_emit_stloc"></a>
<div class="api">
<div class="api-entry">mono_mb_emit_stloc</div>
<div class="prototype">Prototype: mono_mb_emit_stloc</div>
<p />
</div><h3>Local variables and Methods</h3>
<a name="api:mono_mb_create_method"></a>
<div class="api">
<div class="api-entry">mono_mb_create_method</div>
<div class="prototype">MonoMethod*
mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, int max_stack)
</div>
<p />
<b>Returns</b>
<blockquote> the newly created method.
</blockquote>
<b>Remarks</b>
<p />
Create a MonoMethod from this method builder.
</div> <a name="api:mono_mb_add_data"></a>
<div class="api">
<div class="api-entry">mono_mb_add_data</div>
<div class="prototype">Prototype: mono_mb_add_data</div>
<p />
</div> <a name="api:mono_mb_add_local"></a>
<div class="api">
<div class="api-entry">mono_mb_add_local</div>
<div class="prototype">Prototype: mono_mb_add_local</div>
<p />
</div> <a name="api:mono_mb_free"></a>
<div class="api">
<div class="api-entry">mono_mb_free</div>
<div class="prototype">Prototype: mono_mb_free</div>
<p />
</div><h3>Patching Addresses</h3>
<a name="api:mono_mb_patch_addr"></a>
<div class="api">
<div class="api-entry">mono_mb_patch_addr</div>
<div class="prototype">Prototype: mono_mb_patch_addr</div>
<p />
</div> <a name="api:mono_mb_patch_addr_s"></a>
<div class="api">
<div class="api-entry">mono_mb_patch_addr_s</div>
<div class="prototype">Prototype: mono_mb_patch_addr_s</div>
<p />
</div><h3>Method Signatures</h3>
<a name="api:mono_metadata_signature_alloc"></a>
<div class="api">
<div class="api-entry">mono_metadata_signature_alloc</div>
<div class="prototype">Prototype: mono_metadata_signature_alloc</div>
<p />
</div> <a name="api:mono_metadata_signature_dup"></a>
<div class="api">
<div class="api-entry">mono_metadata_signature_dup</div>
<div class="prototype">Prototype: mono_metadata_signature_dup</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,428 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-embedding.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Embedding Mono</h2>
<p />The simplest way of embedding Mono is illustrated here:
<pre>
int main (int argc, char *argv)
{
/*
* Load the default Mono configuration file, this is needed
* if you are planning on using the dllmaps defined on the
* system configuration
*/
mono_config_parse (NULL);
/*
* mono_jit_init() creates a domain: each assembly is
* loaded and run in a MonoDomain.
*/
MonoDomain *domain = mono_jit_init (&quot;startup.exe&quot;);
/*
* Optionally, add an internal call that your startup.exe
* code can call, this will bridge startup.exe to Mono
*/
mono_add_internal_call (&quot;Sample::GetMessage&quot;, getMessage);
/*
* Open the executable, and run the Main method declared
* in the executable
*/
MonoAssembly *assembly = mono_domain_assembly_open (domain, &quot;startup.exe&quot;);
if (!assembly)
exit (2);
/*
* mono_jit_exec() will run the Main() method in the assembly.
* The return value needs to be looked up from
* System.Environment.ExitCode.
*/
mono_jit_exec (domain, assembly, argc, argv);
}
/* The C# signature for this method is: string GetMessage () in class Sample */
MonoString*
getMessage ()
{
return mono_string_new (mono_domain_get (), &quot;Hello, world&quot;);
}
</pre>
<a name="api:mono_jit_init"></a>
<div class="api">
<div class="api-entry">mono_jit_init</div>
<div class="prototype">Prototype: mono_jit_init</div>
<p />
</div> <a name="api:mono_jit_exec"></a>
<div class="api">
<div class="api-entry">mono_jit_exec</div>
<div class="prototype">int
mono_jit_exec (MonoDomain *domain, MonoAssembly *assembly, int argc, char *argv[])
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>assembly:</i></dt><dd> reference to an assembly</dd><dt><i>argc:</i></dt><dd> argument count</dd><dt><i>argv:</i></dt><dd> argument vector</dd></blockquote>
<b>Remarks</b>
<p />
Start execution of a program.
</div> <a name="api:mono_set_dirs"></a>
<div class="api">
<div class="api-entry">mono_set_dirs</div>
<div class="prototype">void
mono_set_dirs (const char *assembly_dir, const char *config_dir)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>assembly_dir:</i></dt><dd> the base directory for assemblies</dd><dt><i>config_dir:</i></dt><dd> the base directory for configuration files</dd></blockquote>
<b>Remarks</b>
<p />
This routine is used internally and by developers embedding
the runtime into their own applications.
There are a number of cases to consider: Mono as a system-installed
package that is available on the location preconfigured or Mono in
a relocated location.
If you are using a system-installed Mono, you can pass NULL
to both parameters. If you are not, you should compute both
directory values and call this routine.
The values for a given PREFIX are:
assembly_dir: PREFIX/lib
config_dir: PREFIX/etc
Notice that embedders that use Mono in a relocated way must
compute the location at runtime, as they will be in control
of where Mono is installed.
</div> <a name="api:mono_main"></a>
<div class="api">
<div class="api-entry">mono_main</div>
<div class="prototype">int
mono_main (int argc, char* argv[])
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>argc:</i></dt><dd> number of arguments in the argv array</dd><dt><i>argv:</i></dt><dd> array of strings containing the startup arguments</dd></blockquote>
<b>Remarks</b>
<p />
Launches the Mono JIT engine and parses all the command line options
in the same way that the mono command line VM would.
</div> <a name="api:mono_parse_default_optimizations"></a>
<div class="api">
<div class="api-entry">mono_parse_default_optimizations</div>
<div class="prototype">Prototype: mono_parse_default_optimizations</div>
<p />
</div> <a name="api:mono_jit_cleanup"></a>
<div class="api">
<div class="api-entry">mono_jit_cleanup</div>
<div class="prototype">Prototype: mono_jit_cleanup</div>
<p />
</div> <a name="api:mono_set_defaults"></a>
<div class="api">
<div class="api-entry">mono_set_defaults</div>
<div class="prototype">Prototype: mono_set_defaults</div>
<p />
</div><h3>Internal Calls</h3>
<p />The Mono runtime provides two mechanisms to expose C code
to the CIL universe: internal calls and native C
code. Internal calls are tightly integrated with the runtime,
and have the least overhead, as they use the same data types
that the runtime uses.
<p />The other option is to use the Platform Invoke (P/Invoke)
to call C code from the CIL universe, using the standard
<a href="http://www.mono-project.com/Interop_with_Native_Libraries">P/Invoke</a>
mechanisms.
<p />To register an internal call, use this call you use the
<a href="#api:mono_add_internal_call"><tt>mono_add_internal_call</tt>
routine.
<a name="api:mono_add_internal_call"></a>
<div class="api">
<div class="api-entry">mono_add_internal_call</div>
<div class="prototype">Prototype: mono_add_internal_call</div>
<p />
</div><h3>P/Invoke with embedded applications</h3>
<p />Unlike internal calls, Platform/Invoke is easier to use and
more portable. It allows you to share code with Windows and
.NET that have a different setup for internal calls to their
own runtime.
<p />Usually P/Invoke declarations reference external libraries
like:
<pre>
[DllImport (&quot;opengl&quot;)]
void glBegin (GLEnum mode)
</pre>
<p />Mono extends P/Invoke to support looking up symbols not in
an external library, but looking up those symbols into the
same address space as your program, to do this, use the
special library name &quot;__Internal&quot;. This will direct Mono to
lookup the method in your own process.
<p />There are situations where the host operating system does
not support looking up symbols on the process address space.
For situations like this you can use
the <a href="#api:mono_dl_register_library">mono_dl_register_library</a>.
<h4><a name="api:mono_dl_register_library">mono_dl_register_library</a></h4>
<h3>Data Marshalling</h3>
<p />Managed objects are represented as <tt>MonoObject*</tt>
types. Those objects that the runtime consumes directly have
more specific C definitions (for example strings are of type
<tt>MonoString *</tt>, delegates are of type
<tt>MonoDelegate*</tt> but they are still <tt>MonoObject
*</tt>s).
<p />As of Mono 1.2.x types defined in mscorlib.dll do not have
their fields reordered in any way. But other libraries might
have their fields reordered. In these cases, Managed
structures and objects have the same layout in the C# code as
they do in the unmanaged world.
<p />Structures defined outside corlib must have a specific
StructLayout definition, and have it set as sequential if you
plan on accessing these fields directly from C code.
<p /><b>Important</b> Internal calls do not provide support for
marshalling structures. This means that any API calls that
take a structure (excluding the system types like int32,
int64, etc) must be passed as a pointer, in C# this means
passing the value as a &quot;ref&quot; or &quot;out&quot; parameter.
<h3>Mono Runtime Configuration</h3>
<p />Certain features of the Mono runtime, like DLL mapping, are
available through a configuration file that is loaded at
runtime. The default Mono implementation loads the
configuration file from <tt>$sysconfig/mono/config</tt>
(typically this is <tt>/etc/mono/config</tt>).
<p />See the <tt>mono-config(5)</tt> man page for more details
on what goes in this file.
<p />The following APIs expose this functionality:
<a name="api:mono_config_parse"></a>
<div class="api">
<div class="api-entry">mono_config_parse</div>
<div class="prototype">void
mono_config_parse (const char *filename)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>filename:</i></dt><dd> the filename to load the configuration variables from.</dd></blockquote>
<b>Remarks</b>
<p />
Pass a NULL filename to parse the default config files
(or the file in the MONO_CONFIG env var).
</div> <a name="api:mono_config_parse_memory"></a>
<div class="api">
<div class="api-entry">mono_config_parse_memory</div>
<div class="prototype">void
mono_config_parse_memory (const char *buffer)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>buffer:</i></dt><dd> a pointer to an string XML representation of the configuration</dd></blockquote>
<b>Remarks</b>
<p />
Parses the configuration from a buffer
</div> <a name="api:mono_get_config_dir"></a>
<div class="api">
<div class="api-entry">mono_get_config_dir</div>
<div class="prototype">Prototype: mono_get_config_dir</div>
<p />
</div><h3>Function Pointers</h3>
<p />To wrap a function pointer into something that the Mono
runtime can consume, you should use the mono_create_ftnptr.
This is only important if you plan on running on the IA64
architecture. Otherwise you can just use the function
pointer address.
<a name="api:mono_create_ftnptr"></a>
<div class="api">
<div class="api-entry">mono_create_ftnptr</div>
<div class="prototype">Prototype: mono_create_ftnptr</div>
<p />
</div><h3>Advanced Execution Setups</h3>
<p />These are not recommended ways of initializing Mono, they
are done internally by mono_jit_init, but are here to explain
what happens internally.
<a name="api:mono_runtime_exec_managed_code"></a>
<div class="api">
<div class="api-entry">mono_runtime_exec_managed_code</div>
<div class="prototype">void
mono_runtime_exec_managed_code (MonoDomain *domain,
MonoMainThreadFunc main_func,
gpointer main_args)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> Application domain</dd><dt><i>main_func:</i></dt><dd> function to invoke from the execution thread</dd><dt><i>main_args:</i></dt><dd> parameter to the main_func</dd></blockquote>
<b>Remarks</b>
<p />
Launch a new thread to execute a function
main_func is called back from the thread with main_args as the
parameter. The callback function is expected to start Main()
eventually. This function then waits for all managed threads to
finish.
It is not necesseray anymore to execute managed code in a subthread,
so this function should not be used anymore by default: just
execute the code and then call mono_thread_manage ().
</div> <a name="api:mono_runtime_exec_main"></a>
<div class="api">
<div class="api-entry">mono_runtime_exec_main</div>
<div class="prototype">Prototype: mono_runtime_exec_main</div>
<p />
</div> <a name="api:mono_init_from_assembly"></a>
<div class="api">
<div class="api-entry">mono_init_from_assembly</div>
<div class="prototype">MonoDomain*
mono_init_from_assembly (const char *domain_name, const char *filename)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain_name:</i></dt><dd> name to give to the initial domain</dd><dt><i>filename:</i></dt><dd> filename to load on startup</dd></blockquote>
<b>Returns</b>
<blockquote> the initial domain.
</blockquote>
<b>Remarks</b>
<p />
Used by the runtime, users should use mono_jit_init instead.
Creates the initial application domain and initializes the mono_defaults
structure.
This function is guaranteed to not run any IL code.
The runtime is initialized using the runtime version required by the
provided executable. The version is determined by looking at the exe
configuration file and the version PE field)
</div> <a name="api:mono_init"></a>
<div class="api">
<div class="api-entry">mono_init</div>
<div class="prototype">MonoDomain*
mono_init (const char *domain_name)
</div>
<p />
<b>Returns</b>
<blockquote> the initial domain.
</blockquote>
<b>Remarks</b>
<p /> <p />
Creates the initial application domain and initializes the mono_defaults
structure.
This function is guaranteed to not run any IL code.
The runtime is initialized using the default runtime version.
</div></a></body>
</html>
</span>

View File

@ -0,0 +1,694 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-exc.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Exception Handling</h2>
<div class="header">
void <a href="#api:mono_raise_exception">mono_raise_exception</a> (MonoException *ex) ;
void <a href="#api:mono_unhandled_exception">mono_unhandled_exception</a> (MonoObject *exc);
void <a href="#api:mono_print_unhandled_exception">mono_print_unhandled_exception</a> (MonoObject *exc);
MonoException* <a href="#api:mono_exception_from_name_domain">mono_exception_from_name_domain</a> (MonoDomain *domain,
MonoImage *image,
;
MonoException* <a href="#api:mono_exception_from_name">mono_exception_from_name</a> (MonoImage *image,
const char *name_space;
MonoException* <a href="#api:mono_exception_from_name_msg">mono_exception_from_name_msg</a> (MonoImage *image,
const char *name_space;
MonoException* <a href="#api:mono_exception_from_name_two_strings">mono_exception_from_name_two_strings</a> (MonoImage *image,
const char *name_space;
MonoException* <a href="#api:mono_get_exception_appdomain_unloaded">mono_get_exception_appdomain_unloaded</a> (void);
MonoException* <a href="#api:mono_get_exception_argument">mono_get_exception_argument</a> (const char *arg,
const char *msg);
MonoException* <a href="#api:mono_get_exception_argument_null">mono_get_exception_argument_null</a> (const char *arg);
MonoException* <a href="#api:mono_get_exception_argument_out_of_range">mono_get_exception_argument_out_of_range</a> (const char *arg);
MonoException* <a href="#api:mono_get_exception_arithmetic">mono_get_exception_arithmetic</a> ();
MonoException* <a href="#api:mono_get_exception_array_type_mismatch">mono_get_exception_array_type_mismatch</a> ();
MonoException* <a href="#api:mono_get_exception_bad_image_format">mono_get_exception_bad_image_format</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_cannot_unload_appdomain">mono_get_exception_cannot_unload_appdomain</a> (const char *msg);
<a href="#api:mono_get_exception_class"></a>
MonoException* <a href="#api:mono_get_exception_divide_by_zero">mono_get_exception_divide_by_zero</a> ();
MonoException* <a href="#api:mono_get_exception_execution_engine">mono_get_exception_execution_engine</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_file_not_found2">mono_get_exception_file_not_found2</a> (const char *msg,
MonoString *fname);
MonoException* <a href="#api:mono_get_exception_file_not_found">mono_get_exception_file_not_found</a> (MonoString *fname);
MonoException* <a href="#api:mono_get_exception_index_out_of_range">mono_get_exception_index_out_of_range</a> ();
MonoException* <a href="#api:mono_get_exception_invalid_cast">mono_get_exception_invalid_cast</a> ();
MonoException* <a href="#api:mono_get_exception_io">mono_get_exception_io</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_missing_method">mono_get_exception_missing_method</a> (const char *class_name,
const char *member_name);
MonoException* <a href="#api:mono_get_exception_not_implemented">mono_get_exception_not_implemented</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_null_reference">mono_get_exception_null_reference</a> ();
MonoException* <a href="#api:mono_get_exception_overflow">mono_get_exception_overflow</a> ();
MonoException* <a href="#api:mono_get_exception_security">mono_get_exception_security</a> ();
MonoException* <a href="#api:mono_get_exception_serialization">mono_get_exception_serialization</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_stack_overflow">mono_get_exception_stack_overflow</a> (void);
MonoException* <a href="#api:mono_get_exception_synchronization_lock">mono_get_exception_synchronization_lock</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_thread_abort">mono_get_exception_thread_abort</a> ();
MonoException* <a href="#api:mono_get_exception_thread_state">mono_get_exception_thread_state</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_type_initialization">mono_get_exception_type_initialization</a> (const gchar *type_name,
MonoException *inner);
MonoException* <a href="#api:mono_get_exception_type_load">mono_get_exception_type_load</a> (MonoString *class_name,
char *assembly_name);
MonoException* <a href="#api:mono_get_exception_invalid_operation">mono_get_exception_invalid_operation</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_missing_field">mono_get_exception_missing_field</a> (const char *class_name,
const char *member_name);
MonoException* <a href="#api:mono_get_exception_not_supported">mono_get_exception_not_supported</a> (const char *msg);
MonoException* <a href="#api:mono_get_exception_reflection_type_load">mono_get_exception_reflection_type_load</a> (MonoArray *types,
MonoArray *exceptions);
</div>
<h3>Raising and Catching exceptions</h3>
<a name="api:mono_raise_exception"></a>
<div class="api">
<div class="api-entry">mono_raise_exception</div>
<div class="prototype">void
mono_raise_exception (MonoException *ex)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>ex:</i></dt><dd> exception object</dd></blockquote>
<b>Remarks</b>
<p />
Signal the runtime that the exception <i>ex</i> has been raised in unmanaged code.
</div> <a name="api:mono_unhandled_exception"></a>
<div class="api">
<div class="api-entry">mono_unhandled_exception</div>
<div class="prototype">void
mono_unhandled_exception (MonoObject *exc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>exc:</i></dt><dd> exception thrown</dd></blockquote>
<b>Remarks</b>
<p />
This is a VM internal routine.
We call this function when we detect an unhandled exception
in the default domain.
It invokes the * UnhandledException event in AppDomain or prints
a warning to the console
</div> <a name="api:mono_print_unhandled_exception"></a>
<div class="api">
<div class="api-entry">mono_print_unhandled_exception</div>
<div class="prototype">void
mono_print_unhandled_exception (MonoObject *exc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>exc:</i></dt><dd> The exception</dd></blockquote>
<b>Remarks</b>
<p />
Prints the unhandled exception.
</div><h3>Exception Types: General API</h3>
<a name="api:mono_exception_from_name_domain"></a>
<div class="api">
<div class="api-entry">mono_exception_from_name_domain</div>
<div class="prototype">MonoException*
mono_exception_from_name_domain (MonoDomain *domain, MonoImage *image,
const char* name_space, const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> Domain where the return object will be created.</dd><dt><i>image:</i></dt><dd> the Mono image where to look for the class</dd><dt><i>name_space:</i></dt><dd> the namespace for the class</dd><dt><i>name:</i></dt><dd> class name</dd></blockquote>
<b>Returns</b>
<blockquote> the initialized exception instance.
</blockquote>
<b>Remarks</b>
<p />
Creates an exception object of the given namespace/name class on
the given domain.
</div> <a name="api:mono_exception_from_name"></a>
<div class="api">
<div class="api-entry">mono_exception_from_name</div>
<div class="prototype">MonoException*
mono_exception_from_name (MonoImage *image, const char *name_space,
const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the Mono image where to look for the class</dd><dt><i>name_space:</i></dt><dd> the namespace for the class</dd><dt><i>name:</i></dt><dd> class name</dd></blockquote>
<b>Returns</b>
<blockquote> the initialized exception instance.
</blockquote>
<b>Remarks</b>
<p />
Creates an exception of the given namespace/name class in the
current domain.
</div> <a name="api:mono_exception_from_name_msg"></a>
<div class="api">
<div class="api-entry">mono_exception_from_name_msg</div>
<div class="prototype">MonoException*
mono_exception_from_name_msg (MonoImage *image, const char *name_space,
const char *name, const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the Mono image where to look for the class</dd><dt><i>name_space:</i></dt><dd> the namespace for the class</dd><dt><i>name:</i></dt><dd> class name</dd><dt><i>msg:</i></dt><dd> the message to embed inside the exception</dd></blockquote>
<b>Returns</b>
<blockquote> the initialized exception instance.
</blockquote>
<b>Remarks</b>
<p />
Creates an exception and initializes its message field.
</div> <a name="api:mono_exception_from_name_two_strings"></a>
<div class="api">
<div class="api-entry">mono_exception_from_name_two_strings</div>
<div class="prototype">MonoException*
mono_exception_from_name_two_strings (MonoImage *image, const char *name_space,
const char *name, MonoString *a1, MonoString *a2)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the Mono image where to look for the class</dd><dt><i>name_space:</i></dt><dd> the namespace for the class</dd><dt><i>name:</i></dt><dd> class name</dd><dt><i>a1:</i></dt><dd> first string argument to pass</dd><dt><i>a2:</i></dt><dd> second string argument to pass</dd></blockquote>
<b>Returns</b>
<blockquote> the initialized exception instance.
</blockquote>
<b>Remarks</b>
<p />
Creates an exception from a constructor that takes two string
arguments.
</div><h3>Obtaining Common Exceptions</h3>
<p />There are a number of common exceptions that are used by
the runtime, use the routines in this section to get a copy of
those exceptions.
<a name="api:mono_get_exception_appdomain_unloaded"></a>
<div class="api">
<div class="api-entry">mono_get_exception_appdomain_unloaded</div>
<div class="prototype">MonoException*
mono_get_exception_appdomain_unloaded (void)
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.AppDomainUnloadedException
</blockquote>
</div> <a name="api:mono_get_exception_argument"></a>
<div class="api">
<div class="api-entry">mono_get_exception_argument</div>
<div class="prototype">MonoException*
mono_get_exception_argument (const char *arg, const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>arg:</i></dt><dd> the name of the invalid argument.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.ArgumentException
</blockquote>
</div> <a name="api:mono_get_exception_argument_null"></a>
<div class="api">
<div class="api-entry">mono_get_exception_argument_null</div>
<div class="prototype">MonoException*
mono_get_exception_argument_null (const char *arg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>arg:</i></dt><dd> the name of the argument that is null</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.ArgumentNullException
</blockquote>
</div> <a name="api:mono_get_exception_argument_out_of_range"></a>
<div class="api">
<div class="api-entry">mono_get_exception_argument_out_of_range</div>
<div class="prototype">MonoException*
mono_get_exception_argument_out_of_range (const char *arg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>arg:</i></dt><dd> the name of the out of range argument.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.ArgumentOutOfRangeException
</blockquote>
</div> <a name="api:mono_get_exception_arithmetic"></a>
<div class="api">
<div class="api-entry">mono_get_exception_arithmetic</div>
<div class="prototype">MonoException*
mono_get_exception_arithmetic ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.ArithmeticException.
</blockquote>
</div> <a name="api:mono_get_exception_array_type_mismatch"></a>
<div class="api">
<div class="api-entry">mono_get_exception_array_type_mismatch</div>
<div class="prototype">MonoException*
mono_get_exception_array_type_mismatch ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.ArrayTypeMismatchException
</blockquote>
</div> <a name="api:mono_get_exception_bad_image_format"></a>
<div class="api">
<div class="api-entry">mono_get_exception_bad_image_format</div>
<div class="prototype">MonoException*
mono_get_exception_bad_image_format (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> an informative message for the user.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.BadImageFormatException
</blockquote>
</div> <a name="api:mono_get_exception_cannot_unload_appdomain"></a>
<div class="api">
<div class="api-entry">mono_get_exception_cannot_unload_appdomain</div>
<div class="prototype">MonoException*
mono_get_exception_cannot_unload_appdomain (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>inner:</i></dt><dd> the inner exception.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.CannotUnloadAppDomainException
</blockquote>
</div> <a name="api:mono_get_exception_class"></a>
<div class="api">
<div class="api-entry">mono_get_exception_class</div>
<div class="prototype">Prototype: mono_get_exception_class</div>
<p />
</div> <a name="api:mono_get_exception_divide_by_zero"></a>
<div class="api">
<div class="api-entry">mono_get_exception_divide_by_zero</div>
<div class="prototype">MonoException*
mono_get_exception_divide_by_zero ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.DivideByZeroException
</blockquote>
</div> <a name="api:mono_get_exception_execution_engine"></a>
<div class="api">
<div class="api-entry">mono_get_exception_execution_engine</div>
<div class="prototype">MonoException*
mono_get_exception_execution_engine (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to pass to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.ExecutionEngineException
</blockquote>
</div> <a name="api:mono_get_exception_file_not_found2"></a>
<div class="api">
<div class="api-entry">mono_get_exception_file_not_found2</div>
<div class="prototype">MonoException*
mono_get_exception_file_not_found2 (const char *msg, MonoString *fname)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> an informative message for the user.</dd><dt><i>fname:</i></dt><dd> the name of the file not found.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.IO.FileNotFoundException
</blockquote>
</div> <a name="api:mono_get_exception_file_not_found"></a>
<div class="api">
<div class="api-entry">mono_get_exception_file_not_found</div>
<div class="prototype">MonoException*
mono_get_exception_file_not_found (MonoString *fname)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>fname:</i></dt><dd> the name of the file not found.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.IO.FileNotFoundException
</blockquote>
</div> <a name="api:mono_get_exception_index_out_of_range"></a>
<div class="api">
<div class="api-entry">mono_get_exception_index_out_of_range</div>
<div class="prototype">MonoException*
mono_get_exception_index_out_of_range ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.IndexOutOfRangeException
</blockquote>
</div> <a name="api:mono_get_exception_invalid_cast"></a>
<div class="api">
<div class="api-entry">mono_get_exception_invalid_cast</div>
<div class="prototype">MonoException*
mono_get_exception_invalid_cast ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.InvalidCastException
</blockquote>
</div> <a name="api:mono_get_exception_io"></a>
<div class="api">
<div class="api-entry">mono_get_exception_io</div>
<div class="prototype">MonoException*
mono_get_exception_io (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to present to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.IO.IOException
</blockquote>
</div> <a name="api:mono_get_exception_missing_method"></a>
<div class="api">
<div class="api-entry">mono_get_exception_missing_method</div>
<div class="prototype">MonoException*
mono_get_exception_missing_method (const char *class_name, const char *member_name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>class_name:</i></dt><dd> the class where the lookup was performed.</dd><dt><i>member_name:</i></dt><dd> the name of the missing method.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.MissingMethodException
</blockquote>
</div> <a name="api:mono_get_exception_not_implemented"></a>
<div class="api">
<div class="api-entry">mono_get_exception_not_implemented</div>
<div class="prototype">MonoException*
mono_get_exception_not_implemented (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to pass to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.NotImplementedException
</blockquote>
</div> <a name="api:mono_get_exception_null_reference"></a>
<div class="api">
<div class="api-entry">mono_get_exception_null_reference</div>
<div class="prototype">MonoException*
mono_get_exception_null_reference ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.NullReferenceException
</blockquote>
</div> <a name="api:mono_get_exception_overflow"></a>
<div class="api">
<div class="api-entry">mono_get_exception_overflow</div>
<div class="prototype">MonoException*
mono_get_exception_overflow ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.OverflowException
</blockquote>
</div> <a name="api:mono_get_exception_security"></a>
<div class="api">
<div class="api-entry">mono_get_exception_security</div>
<div class="prototype">MonoException*
mono_get_exception_security ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.Security.SecurityException
</blockquote>
</div> <a name="api:mono_get_exception_serialization"></a>
<div class="api">
<div class="api-entry">mono_get_exception_serialization</div>
<div class="prototype">MonoException*
mono_get_exception_serialization (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to pass to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.Runtime.Serialization.SerializationException
</blockquote>
</div> <a name="api:mono_get_exception_stack_overflow"></a>
<div class="api">
<div class="api-entry">mono_get_exception_stack_overflow</div>
<div class="prototype">MonoException*
mono_get_exception_stack_overflow (void)
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.StackOverflowException
</blockquote>
</div> <a name="api:mono_get_exception_synchronization_lock"></a>
<div class="api">
<div class="api-entry">mono_get_exception_synchronization_lock</div>
<div class="prototype">MonoException*
mono_get_exception_synchronization_lock (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>inner:</i></dt><dd> the inner exception.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.SynchronizationLockException
</blockquote>
</div> <a name="api:mono_get_exception_thread_abort"></a>
<div class="api">
<div class="api-entry">mono_get_exception_thread_abort</div>
<div class="prototype">MonoException*
mono_get_exception_thread_abort ()
</div>
<p />
<b>Returns</b>
<blockquote> a new instance of the System.Threading.ThreadAbortException.
</blockquote>
</div> <a name="api:mono_get_exception_thread_state"></a>
<div class="api">
<div class="api-entry">mono_get_exception_thread_state</div>
<div class="prototype">MonoException*
mono_get_exception_thread_state (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to present to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.Threading.ThreadStateException
</blockquote>
</div> <a name="api:mono_get_exception_type_initialization"></a>
<div class="api">
<div class="api-entry">mono_get_exception_type_initialization</div>
<div class="prototype">MonoException*
mono_get_exception_type_initialization (const gchar *type_name, MonoException *inner)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type_name:</i></dt><dd> the name of the type that failed to initialize.</dd><dt><i>inner:</i></dt><dd> the inner exception.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.TypeInitializationException
</blockquote>
</div> <a name="api:mono_get_exception_type_load"></a>
<div class="api">
<div class="api-entry">mono_get_exception_type_load</div>
<div class="prototype">MonoException*
mono_get_exception_type_load (MonoString *class_name, char *assembly_name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>class_name:</i></dt><dd> the name of the class that could not be loaded</dd><dt><i>assembly_name:</i></dt><dd> the assembly where the class was looked up.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.TypeLoadException.
</blockquote>
</div> <a name="api:mono_get_exception_invalid_operation"></a>
<div class="api">
<div class="api-entry">mono_get_exception_invalid_operation</div>
<div class="prototype">MonoException*
mono_get_exception_invalid_operation (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to pass to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.InvalidOperationException
</blockquote>
</div> <a name="api:mono_get_exception_missing_field"></a>
<div class="api">
<div class="api-entry">mono_get_exception_missing_field</div>
<div class="prototype">MonoException*
mono_get_exception_missing_field (const char *class_name, const char *member_name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>class_name:</i></dt><dd> the class where the lookup was performed</dd><dt><i>member_name:</i></dt><dd> the name of the missing method.</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.MissingFieldException
</blockquote>
</div> <a name="api:mono_get_exception_not_supported"></a>
<div class="api">
<div class="api-entry">mono_get_exception_not_supported</div>
<div class="prototype">MonoException*
mono_get_exception_not_supported (const char *msg)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>msg:</i></dt><dd> the message to pass to the user</dd></blockquote>
<b>Returns</b>
<blockquote> a new instance of the System.NotSupportedException
</blockquote>
</div></body>
</html>
</span>

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-gc.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Garbage Collector Interface</h1>
<h1>Public Interface</h1>
<p />The public interface of the Mono GC is fairly limited, and
its the only one that embedders should be using:
<a name="api:mono_gc_collect"></a>
<div class="api">
<div class="api-entry">mono_gc_collect</div>
<div class="prototype">void
mono_gc_collect (int generation)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>generation:</i></dt><dd> GC generation identifier</dd></blockquote>
<b>Remarks</b>
<p />
Perform a garbage collection for the given generation, higher numbers
mean usually older objects. Collecting a high-numbered generation
implies collecting also the lower-numbered generations.
The maximum value for <i>generation</i> can be retrieved with a call to
mono_gc_max_generation(), so this function is usually called as:
mono_gc_collect (mono_gc_max_generation ());
</div> <a name="api:mono_gc_max_generation"></a>
<div class="api">
<div class="api-entry">mono_gc_max_generation</div>
<div class="prototype">int
mono_gc_max_generation (void)
</div>
<p />
<b>Returns</b>
<blockquote> the maximum generation number.
</blockquote>
<b>Remarks</b>
<p />
Get the maximum generation number used by the current garbage
collector. The value will be 0 for the Boehm collector, 1 or more
for the generational collectors.
</div> <a name="api:mono_gc_get_heap_size"></a>
<div class="api">
<div class="api-entry">mono_gc_get_heap_size</div>
<div class="prototype">int64_t
mono_gc_get_heap_size (void)
</div>
<p />
<b>Returns</b>
<blockquote> the size of the heap in bytes
</blockquote>
<b>Remarks</b>
<p />
Get the amount of memory used by the garbage collector.
</div></body>
</html>
</span>

View File

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-gchandle.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h1>GC Handles</h1>
<h3>Synopsys</h3>
<div class="header">
guint32 <a href="#api:mono_gchandle_new">mono_gchandle_new</a> (MonoObject *obj,
gboolean pinned);
guint32 <a href="#api:mono_gchandle_new_weakref">mono_gchandle_new_weakref</a> (MonoObject *obj,
gboolean track_resurrection);
MonoObject* <a href="#api:mono_gchandle_get_target">mono_gchandle_get_target</a> (guint32 gchandle);
void <a href="#api:mono_gchandle_free">mono_gchandle_free</a> (guint32 gchandle);
</div>
<p />GC handles are wrappers that are used to keep references to
managed objects in the unmanaged space and preventing the
object from being disposed.
<p />These are the C equivalents of the <tt>System.GCHandle</tt>
structure.
<p />There are two kinds of GCHandles that can be created:
<ul>
<li>Handles to objects (use <tt><a href="#api:mono_gchandle_new">mono_gchandle_new</a></tt>).
<li>Weak handles to objects (use <tt><a href="#api:mono_gchandle_new_weakref">mono_gchandle_new_weakref</a></tt>).
Weak handles can have the objects reclaimed by the
garbage collector.
</li></li></ul>
<p />To retrieve the target address of an object pointed to by a
<tt>GCHandle</tt> you should use
<tt>mono_gchandle_get_target</tt>.
<p />For example, consider the following C code:
<div class="code">
static MonoObject* o = NULL;
</div>
<p />The object in `o' will *NOT* be scanned.
<p />If you need to store an object in a C variable and prevent
it from being collected, you need to acquire a GC handle for
it.
<div class="code">
guint32 handle = mono_gchandle_new (my_object, TRUE);
</div>
<p />TRUE means the object will be pinned, so it won't move in
memory when we'll use a moving GC. You can access the
MonoObject* referenced by a handle with:
<div class="code">
MonoObject* obj = mono_gchandle_get_target (handle);
</div>
<p />When you don't need the handle anymore you need to call:
<div class="code">
mono_gchandle_free (handle);
</div>
<p />Note that if you assign a new object to the C var, you need
to get a new handle, it's not enough to store a new object in
the C var.
<p />So code that looked like this:
<div class="code">
static MonoObject* o = NULL;
...
o = mono_object_new (...);
/* use o */
...
/* when done to allow the GC to collect o */
o = NULL;
</div>
<p />should now be changed to:
<div class="code">
static guint32 o_handle;
...
MonoObject *o = mono_object_new (...);
o_handle = mono_gchandle_new (o, TRUE);
/* use o or mono_gchandle_get_target (o_handle) */
...
/* when done to allow the GC to collect o */
mono_gchandle_free (o_handle);
</div>
<a name="api:mono_gchandle_new"></a>
<div class="api">
<div class="api-entry">mono_gchandle_new</div>
<div class="prototype">guint32
mono_gchandle_new (MonoObject *obj, gboolean pinned)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>obj:</i></dt><dd> managed object to get a handle for</dd><dt><i>pinned:</i></dt><dd> whether the object should be pinned</dd></blockquote>
<b>Returns</b>
<blockquote> a handle that can be used to access the object from
unmanaged code.</blockquote>
<b>Remarks</b>
<p />
This returns a handle that wraps the object, this is used to keep a
reference to a managed object from the unmanaged world and preventing the
object from being disposed.
<p />
If <i>pinned</i> is false the address of the object can not be obtained, if it is
true the address of the object can be obtained. This will also pin the
object so it will not be possible by a moving garbage collector to move the
object.
<p />
</div> <a name="api:mono_gchandle_new_weakref"></a>
<div class="api">
<div class="api-entry">mono_gchandle_new_weakref</div>
<div class="prototype">guint32
mono_gchandle_new_weakref (MonoObject *obj, gboolean track_resurrection)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>obj:</i></dt><dd> managed object to get a handle for</dd><dt><i>pinned:</i></dt><dd> whether the object should be pinned</dd></blockquote>
<b>Returns</b>
<blockquote> a handle that can be used to access the object from
unmanaged code.</blockquote>
<b>Remarks</b>
<p />
This returns a weak handle that wraps the object, this is used to
keep a reference to a managed object from the unmanaged world.
Unlike the mono_gchandle_new the object can be reclaimed by the
garbage collector. In this case the value of the GCHandle will be
set to zero.
<p />
If <i>pinned</i> is false the address of the object can not be obtained, if it is
true the address of the object can be obtained. This will also pin the
object so it will not be possible by a moving garbage collector to move the
object.
<p />
</div> <a name="api:mono_gchandle_get_target"></a>
<div class="api">
<div class="api-entry">mono_gchandle_get_target</div>
<div class="prototype">MonoObject*
mono_gchandle_get_target (guint32 gchandle)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>gchandle:</i></dt><dd> a GCHandle's handle.</dd></blockquote>
<b>Remarks</b>
<p />
The handle was previously created by calling mono_gchandle_new or
mono_gchandle_new_weakref.
Returns a pointer to the MonoObject represented by the handle or
NULL for a collected object if using a weakref handle.
</div></body>
</html>
</span>

View File

@ -0,0 +1,517 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-image.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Image Manipulation</h2>
<p />Images are the component of assemblies that actually hold
the CIL code and <a href="mono-api-metadata.html">metadata</a>
in the extended PE/COFF file.
<h3>Synopsis</h3>
<div class="header">
#include &lt;metadata/image.h&gt;
typedef struct _MonoImage MonoImage;
typedef enum {
MONO_IMAGE_OK,
MONO_IMAGE_ERROR_ERRNO,
MONO_IMAGE_MISSING_ASSEMBLYREF,
MONO_IMAGE_IMAGE_INVALID
} MonoImageOpenStatus;
MonoImage* <a href="#api:mono_image_open">mono_image_open</a> (const char *fname,
MonoImageOpenStatus *status);
<a href="#api:mono_image_open_full"></a>
<a href="#api:mono_image_open_from_data"></a>
<a href="#api:mono_image_open_from_data_full"></a>
void <a href="#api:mono_image_close">mono_image_close</a> (MonoImage *image);
void <a href="#api:mono_image_addref">mono_image_addref</a> (MonoImage *image);
<a href="#api:mono_image_load_file_for_image"></a>
<a href="#api:mono_image_get_guid"></a>
MonoAssembly* <a href="#api:mono_image_get_assembly">mono_image_get_assembly</a> (MonoImage *image);
guint32 <a href="#api:mono_image_get_entry_point">mono_image_get_entry_point</a> (MonoImage *image);
const char* <a href="#api:mono_image_get_filename">mono_image_get_filename</a> (MonoImage *image);
const char* <a href="#api:mono_image_get_name">mono_image_get_name</a> (MonoImage *image);
const char* <a href="#api:mono_image_get_resource">mono_image_get_resource</a> (MonoImage *image,
guint32 offset,
guint32 *size);
<a href="#api:mono_image_get_table_info"></a>
<a href="#api:mono_image_get_table_rows"></a>
gboolean <a href="#api:mono_image_is_dynamic">mono_image_is_dynamic</a> (MonoImage *image);
<a href="#api:mono_image_loaded_by_guid"></a>
MonoImage* <a href="#api:mono_image_loaded">mono_image_loaded</a> (const char *name);
gpointer <a href="#api:mono_image_lookup_resource">mono_image_lookup_resource</a> (MonoImage *image,
guint32 res_id,
guint32 lang_id,
gunichar2 *name);
const char * <a href="#api:mono_image_strerror">mono_image_strerror</a> (MonoImageOpenStatus status);
guint32 <a href="#api:mono_image_strong_name_position">mono_image_strong_name_position</a> (MonoImage *image,
guint32 *size);
const char* <a href="#api:mono_image_get_public_key">mono_image_get_public_key</a> (MonoImage *image,
guint32 *size);
const char* <a href="#api:mono_image_get_strong_name">mono_image_get_strong_name</a> (MonoImage *image,
guint32 *size);
gboolean <a href="#api:mono_image_has_authenticode_entry">mono_image_has_authenticode_entry</a> (MonoImage *image);
<a href="#api:mono_image_rva_map"></a>
int <a href="#api:mono_image_ensure_section_idx">mono_image_ensure_section_idx</a> (MonoImage *image,
int section);
int <a href="#api:mono_image_ensure_section">mono_image_ensure_section</a> (MonoImage *image,
const char *section);
</div>
<h3>Image APIs</h3>
<p />Images are the actual elements in the runtime that contain
the actual code being executed.
<a name="cil_image_open"></a>
<h3>Opening and closing MonoImages</h3>
<a name="api:mono_image_open"></a>
<div class="api">
<div class="api-entry">mono_image_open</div>
<div class="prototype">MonoImage*
mono_image_open (const char *fname, MonoImageOpenStatus *status)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>fname:</i></dt><dd> filename that points to the module we want to open</dd><dt><i>status:</i></dt><dd> An error condition is returned in this field</dd></blockquote>
<b>Returns</b>
<blockquote> An open image of type %MonoImage or NULL on error.
The caller holds a temporary reference to the returned image which should be cleared
when no longer needed by calling mono_image_close ().
if NULL, then check the value of <i>status</i> for details on the error</blockquote>
</div> <a name="api:mono_image_open_full"></a>
<div class="api">
<div class="api-entry">mono_image_open_full</div>
<div class="prototype">Prototype: mono_image_open_full</div>
<p />
</div> <a name="api:mono_image_open_from_data"></a>
<div class="api">
<div class="api-entry">mono_image_open_from_data</div>
<div class="prototype">Prototype: mono_image_open_from_data</div>
<p />
</div> <a name="api:mono_image_open_from_data_full"></a>
<div class="api">
<div class="api-entry">mono_image_open_from_data_full</div>
<div class="prototype">Prototype: mono_image_open_from_data_full</div>
<p />
</div> <a name="api:mono_image_close"></a>
<div class="api">
<div class="api-entry">mono_image_close</div>
<div class="prototype">void
mono_image_close (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The image file we wish to close</dd></blockquote>
<b>Remarks</b>
<p />
Closes an image file, deallocates all memory consumed and
unmaps all possible sections of the file
</div> <a name="api:mono_image_addref"></a>
<div class="api">
<div class="api-entry">mono_image_addref</div>
<div class="prototype">void
mono_image_addref (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The image file we wish to add a reference to</dd></blockquote>
<b>Remarks</b>
<p />
Increases the reference count of an image.
</div> <a name="api:mono_image_load_file_for_image"></a>
<div class="api">
<div class="api-entry">mono_image_load_file_for_image</div>
<div class="prototype">Prototype: mono_image_load_file_for_image</div>
<p />
</div><h3>Image Information</h3>
<a name="api:mono_image_get_guid"></a>
<div class="api">
<div class="api-entry">mono_image_get_guid</div>
<div class="prototype">Prototype: mono_image_get_guid</div>
<p />
</div> <a name="api:mono_image_get_assembly"></a>
<div class="api">
<div class="api-entry">mono_image_get_assembly</div>
<div class="prototype">MonoAssembly*
mono_image_get_assembly (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the MonoImage.</dd></blockquote>
<b>Returns</b>
<blockquote> the assembly that holds this image.
</blockquote>
<b>Remarks</b>
<p />
Use this routine to get the assembly that owns this image.
</div> <a name="api:mono_image_get_entry_point"></a>
<div class="api">
<div class="api-entry">mono_image_get_entry_point</div>
<div class="prototype">guint32
mono_image_get_entry_point (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image where the entry point will be looked up.</dd></blockquote>
<b>Returns</b>
<blockquote> the token for the entry point method in the image
</blockquote>
<b>Remarks</b>
<p />
Use this routine to determine the metadata token for method that
has been flagged as the entry point.
</div> <a name="api:mono_image_get_filename"></a>
<div class="api">
<div class="api-entry">mono_image_get_filename</div>
<div class="prototype">const char*
mono_image_get_filename (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote> the filename.
</blockquote>
<b>Remarks</b>
<p />
Used to get the filename that hold the actual MonoImage
</div> <a name="api:mono_image_get_name"></a>
<div class="api">
<div class="api-entry">mono_image_get_name</div>
<div class="prototype">const char*
mono_image_get_name (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>name:</i></dt><dd> a MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote> the name of the assembly.
</blockquote>
</div> <a name="api:mono_image_get_resource"></a>
<div class="api">
<div class="api-entry">mono_image_get_resource</div>
<div class="prototype">const char*
mono_image_get_resource (MonoImage *image, guint32 offset, guint32 *size)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image where the resource will be looked up.</dd><dt><i>offset:</i></dt><dd> The offset to add to the resource</dd><dt><i>size:</i></dt><dd> a pointer to an int where the size of the resource will be stored</dd></blockquote>
<b>Returns</b>
<blockquote> the pointer to the resource whose offset is <i>offset</i>.
</blockquote>
<b>Remarks</b>
<p />
This is a low-level routine that fetches a resource from the
metadata that starts at a given <i>offset</i>. The <i>size</i> parameter is
filled with the data field as encoded in the metadata.
</div> <a name="api:mono_image_get_table_info"></a>
<div class="api">
<div class="api-entry">mono_image_get_table_info</div>
<div class="prototype">Prototype: mono_image_get_table_info</div>
<p />
</div> <a name="api:mono_image_get_table_rows"></a>
<div class="api">
<div class="api-entry">mono_image_get_table_rows</div>
<div class="prototype">Prototype: mono_image_get_table_rows</div>
<p />
</div> <a name="api:mono_image_is_dynamic"></a>
<div class="api">
<div class="api-entry">mono_image_is_dynamic</div>
<div class="prototype">gboolean
mono_image_is_dynamic (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote> TRUE if the image was created dynamically, FALSE if not.
</blockquote>
<b>Remarks</b>
<p />
Determines if the given image was created dynamically through the
System.Reflection.Emit API
</div> <a name="api:mono_image_loaded_by_guid"></a>
<div class="api">
<div class="api-entry">mono_image_loaded_by_guid</div>
<div class="prototype">Prototype: mono_image_loaded_by_guid</div>
<p />
</div> <a name="api:mono_image_loaded"></a>
<div class="api">
<div class="api-entry">mono_image_loaded</div>
<div class="prototype">MonoImage*
mono_image_loaded (const char *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>name:</i></dt><dd> name of the image to load</dd></blockquote>
<b>Returns</b>
<blockquote> the loaded MonoImage, or NULL on failure.
</blockquote>
<b>Remarks</b>
<p />
This routine ensures that the given image is loaded.
</div> <a name="api:mono_image_lookup_resource"></a>
<div class="api">
<div class="api-entry">mono_image_lookup_resource</div>
<div class="prototype">gpointer
mono_image_lookup_resource (MonoImage *image, guint32 res_id, guint32 lang_id, gunichar2 *name)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the image to look up the resource in</dd><dt><i>res_id:</i></dt><dd> A MONO_PE_RESOURCE_ID_ that represents the resource ID to lookup.</dd><dt><i>lang_id:</i></dt><dd> The language id.</dd><dt><i>name:</i></dt><dd> the resource name to lookup.</dd></blockquote>
<b>Returns</b>
<blockquote> NULL if not found, otherwise a pointer to the in-memory representation
of the given resource. The caller should free it using g_free () when no longer
needed.</blockquote>
</div> <a name="api:mono_image_strerror"></a>
<div class="api">
<div class="api-entry">mono_image_strerror</div>
<div class="prototype">const char *
mono_image_strerror (MonoImageOpenStatus status)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>status:</i></dt><dd> an code indicating the result from a recent operation</dd></blockquote>
<b>Returns</b>
<blockquote> a string describing the error
</blockquote>
</div><h3>Public Keys, Strong Names and Certificates</h3>
<a name="api:mono_image_strong_name_position"></a>
<div class="api">
<div class="api-entry">mono_image_strong_name_position</div>
<div class="prototype">guint32
mono_image_strong_name_position (MonoImage *image, guint32 *size)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd><dt><i>size:</i></dt><dd> a guint32 pointer, or NULL.</dd></blockquote>
<b>Returns</b>
<blockquote> the position within the image file where the strong name
is stored.</blockquote>
<b>Remarks</b>
<p />
If the image has a strong name, and <i>size</i> is not NULL, the value
pointed to by size will have the size of the strong name.
</div> <a name="api:mono_image_get_public_key"></a>
<div class="api">
<div class="api-entry">mono_image_get_public_key</div>
<div class="prototype">const char*
mono_image_get_public_key (MonoImage *image, guint32 *size)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd><dt><i>size:</i></dt><dd> a guint32 pointer, or NULL.</dd></blockquote>
<b>Returns</b>
<blockquote> NULL if the image does not have a public key, or a pointer
to the public key.</blockquote>
<b>Remarks</b>
<p />
This is used to obtain the public key in the <i>image</i>.
<p />
If the image has a public key, and <i>size</i> is not NULL, the value
pointed to by size will have the size of the public key.
<p />
</div> <a name="api:mono_image_get_strong_name"></a>
<div class="api">
<div class="api-entry">mono_image_get_strong_name</div>
<div class="prototype">const char*
mono_image_get_strong_name (MonoImage *image, guint32 *size)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> a MonoImage</dd><dt><i>size:</i></dt><dd> a guint32 pointer, or NULL.</dd></blockquote>
<b>Returns</b>
<blockquote> NULL if the image does not have a strong name, or a
pointer to the public key.</blockquote>
<b>Remarks</b>
<p />
If the image has a strong name, and <i>size</i> is not NULL, the value
pointed to by size will have the size of the strong name.
</div> <a name="api:mono_image_has_authenticode_entry"></a>
<div class="api">
<div class="api-entry">mono_image_has_authenticode_entry</div>
<div class="prototype">gboolean
mono_image_has_authenticode_entry (MonoImage *image)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> the MonoImage</dd></blockquote>
<b>Returns</b>
<blockquote> TRUE if the image contains an authenticode entry in the PE
directory.</blockquote>
<b>Remarks</b>
<p />
Use this routine to determine if the image has a Authenticode
Certificate Table.
</div><h3>Low-level features</h3>
<a name="api:mono_image_rva_map"></a>
<div class="api">
<div class="api-entry">mono_image_rva_map</div>
<div class="prototype">Prototype: mono_image_rva_map</div>
<p />
</div> <a name="api:mono_image_ensure_section_idx"></a>
<div class="api">
<div class="api-entry">mono_image_ensure_section_idx</div>
<div class="prototype">int
mono_image_ensure_section_idx (MonoImage *image, int section)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>image:</i></dt><dd> The image we are operating on</dd><dt><i>section:</i></dt><dd> section number that we will load/map into memory</dd></blockquote>
<b>Returns</b>
<blockquote> TRUE on success
</blockquote>
<b>Remarks</b>
<p />
This routine makes sure that we have an in-memory copy of
an image section (.text, .rsrc, .data).
</div></body>
</html>
</span>

View File

@ -0,0 +1,587 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-internal.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Mono Internals</h1>
<p />This section documents some of the internal APIs used
inside Mono that developers extending or altering Mono might
want to use.
<h2>Marshalling functions</h2>
<a name="api:mono_marshal_alloc"></a>
<div class="api">
<div class="api-entry">mono_marshal_alloc</div>
<div class="prototype">Prototype: mono_marshal_alloc</div>
<p />
</div> <a name="api:mono_marshal_asany"></a>
<div class="api">
<div class="api-entry">mono_marshal_asany</div>
<div class="prototype">Prototype: mono_marshal_asany</div>
<p />
</div> <a name="api:mono_marshal_free_array"></a>
<div class="api">
<div class="api-entry">mono_marshal_free_array</div>
<div class="prototype">Prototype: mono_marshal_free_array</div>
<p />
</div> <a name="api:mono_marshal_free_asany"></a>
<div class="api">
<div class="api-entry">mono_marshal_free_asany</div>
<div class="prototype">Prototype: mono_marshal_free_asany</div>
<p />
</div> <a name="api:mono_marshal_free"></a>
<div class="api">
<div class="api-entry">mono_marshal_free</div>
<div class="prototype">Prototype: mono_marshal_free</div>
<p />
</div> <a name="api:mono_marshal_get_castclass"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_castclass</div>
<div class="prototype">Prototype: mono_marshal_get_castclass</div>
<p />
</div> <a name="api:mono_marshal_get_delegate_begin_invoke"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_delegate_begin_invoke</div>
<div class="prototype">Prototype: mono_marshal_get_delegate_begin_invoke</div>
<p />
</div> <a name="api:mono_marshal_get_delegate_end_invoke"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_delegate_end_invoke</div>
<div class="prototype">Prototype: mono_marshal_get_delegate_end_invoke</div>
<p />
</div> <a name="api:mono_marshal_get_delegate_invoke"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_delegate_invoke</div>
<div class="prototype">Prototype: mono_marshal_get_delegate_invoke</div>
<p />
</div> <a name="api:mono_marshal_get_icall_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_icall_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_icall_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_isinst"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_isinst</div>
<div class="prototype">Prototype: mono_marshal_get_isinst</div>
<p />
</div> <a name="api:mono_marshal_get_ldfld_remote_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_ldfld_remote_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_ldfld_remote_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_ldfld_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_ldfld_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_ldfld_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_managed_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_managed_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_managed_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_native_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_native_wrapper</div>
<div class="prototype">MonoMethod*
mono_marshal_get_native_wrapper (MonoMethod *method, gboolean check_exceptions, gboolean aot)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>method:</i></dt><dd> The MonoMethod to wrap.</dd><dt><i>check_exceptions:</i></dt><dd> Whenever to check for pending exceptions</dd></blockquote>
<b>Remarks</b>
<p />
generates IL code for the pinvoke wrapper (the generated method
calls the unmanaged code in piinfo-&gt;addr)
The wrapper info for the wrapper is a WrapperInfo structure.
</div> <a name="api:mono_marshal_get_proxy_cancast"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_proxy_cancast</div>
<div class="prototype">Prototype: mono_marshal_get_proxy_cancast</div>
<p />
</div> <a name="api:mono_marshal_get_ptr_to_struct"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_ptr_to_struct</div>
<div class="prototype">MonoMethod*
mono_marshal_get_ptr_to_struct (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd></dd></blockquote>
<b>Remarks</b>
<p />
generates IL code for PtrToStructure (IntPtr src, object structure)
The wrapper info for the wrapper is a WrapperInfo structure.
</div> <a name="api:mono_marshal_get_remoting_invoke_for_target"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_remoting_invoke_for_target</div>
<div class="prototype">Prototype: mono_marshal_get_remoting_invoke_for_target</div>
<p />
</div> <a name="api:mono_marshal_get_remoting_invoke"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_remoting_invoke</div>
<div class="prototype">Prototype: mono_marshal_get_remoting_invoke</div>
<p />
</div> <a name="api:mono_marshal_get_remoting_invoke_with_check"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_remoting_invoke_with_check</div>
<div class="prototype">Prototype: mono_marshal_get_remoting_invoke_with_check</div>
<p />
</div> <a name="api:mono_marshal_get_runtime_invoke"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_runtime_invoke</div>
<div class="prototype">Prototype: mono_marshal_get_runtime_invoke</div>
<p />
</div> <a name="api:mono_marshal_get_stelemref"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_stelemref</div>
<div class="prototype">Prototype: mono_marshal_get_stelemref</div>
<p />
</div> <a name="api:mono_marshal_get_stfld_remote_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_stfld_remote_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_stfld_remote_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_stfld_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_stfld_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_stfld_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_struct_to_ptr"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_struct_to_ptr</div>
<div class="prototype">MonoMethod*
mono_marshal_get_struct_to_ptr (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd></dd></blockquote>
<b>Remarks</b>
<p />
generates IL code for StructureToPtr (object structure, IntPtr ptr, bool fDeleteOld)
The wrapper info for the wrapper is a WrapperInfo structure.
</div> <a name="api:mono_marshal_get_synchronized_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_synchronized_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_synchronized_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_unbox_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_unbox_wrapper</div>
<div class="prototype">Prototype: mono_marshal_get_unbox_wrapper</div>
<p />
</div> <a name="api:mono_marshal_get_xappdomain_invoke"></a>
<div class="api">
<div class="api-entry">mono_marshal_get_xappdomain_invoke</div>
<div class="prototype">Prototype: mono_marshal_get_xappdomain_invoke</div>
<p />
</div> <a name="api:mono_marshal_load_type_info"></a>
<div class="api">
<div class="api-entry">mono_marshal_load_type_info</div>
<div class="prototype">MonoMarshalType*
mono_marshal_load_type_info (MonoClass* klass)
</div>
<p />
<b>Remarks</b>
<p />
Initialize klass-&gt;marshal_info using information from metadata. This function can
recursively call itself, and the caller is responsible to avoid that by calling
mono_marshal_is_loading_type_info () beforehand.
LOCKING: Acquires the loader lock.
</div> <a name="api:mono_marshal_method_from_wrapper"></a>
<div class="api">
<div class="api-entry">mono_marshal_method_from_wrapper</div>
<div class="prototype">Prototype: mono_marshal_method_from_wrapper</div>
<p />
</div> <a name="api:mono_marshal_realloc"></a>
<div class="api">
<div class="api-entry">mono_marshal_realloc</div>
<div class="prototype">Prototype: mono_marshal_realloc</div>
<p />
</div> <a name="api:mono_marshal_set_last_error"></a>
<div class="api">
<div class="api-entry">mono_marshal_set_last_error</div>
<div class="prototype">void
mono_marshal_set_last_error (void)
</div>
<p />
<b>Remarks</b>
<p />
This function is invoked to set the last error value from a P/Invoke call
which has SetLastError set.
</div> <a name="api:mono_marshal_type_size"></a>
<div class="api">
<div class="api-entry">mono_marshal_type_size</div>
<div class="prototype">Prototype: mono_marshal_type_size</div>
<p />
</div><h2>Metadata Loading Errors</h2>
<p />The routines in this section are used to cope with errors
during metadata loading. Errors in metadata handling can
happen for many reason, and these include (this is not an
exhaustive list).
<ul>
<li>An assembly referenced is missing.
<li>Fields referenced are missing.
<li>Methods referenced are missing.
</li></li></li></ul>
<p />The <tt>mono_loader_set_*</tt> routines are invoked during
metadata loading to flag that an error has happened. The
class loading errros are flagged in a per-thread basis.
<p />In various spots in the runtime the
<tt>mono_loader_get_last_error</tt> routine is called to check
if there was a problem, and then errors are propagated upwards
on the stack until we reach a point where an exception can be
raised and no runtime locks are held.
<p />The <tt>mono_loader_error_prepare_exception</tt> takes a
<tt>MonoLoaderError</tt> structure (the value returned from
<tt>mono_loader_get_last_error</tt>), turns that into an
exception and clears the error condition from the current
thread.
<a name="api:mono_loader_set_error_field_load"></a>
<div class="api">
<div class="api-entry">mono_loader_set_error_field_load</div>
<div class="prototype">Prototype: mono_loader_set_error_field_load</div>
<p />
</div> <a name="api:mono_loader_set_error_method_load"></a>
<div class="api">
<div class="api-entry">mono_loader_set_error_method_load</div>
<div class="prototype">Prototype: mono_loader_set_error_method_load</div>
<p />
</div> <a name="api:mono_loader_set_error_type_load"></a>
<div class="api">
<div class="api-entry">mono_loader_set_error_type_load</div>
<div class="prototype">void
mono_loader_set_error_type_load (const char *class_name, const char *assembly_name)
</div>
<p />
<b>Remarks</b>
<p />
Set the loader error for this thread.
</div> <a name="api:mono_loader_get_last_error"></a>
<div class="api">
<div class="api-entry">mono_loader_get_last_error</div>
<div class="prototype">Prototype: mono_loader_get_last_error</div>
<p />
</div> <a name="api:mono_loader_clear_error"></a>
<div class="api">
<div class="api-entry">mono_loader_clear_error</div>
<div class="prototype">void
mono_loader_clear_error (void)
</div>
<p />
<b>Remarks</b>
<p />
Disposes any loader error messages on this thread
</div> <a name="api:mono_loader_error_prepare_exception"></a>
<div class="api">
<div class="api-entry">mono_loader_error_prepare_exception</div>
<div class="prototype">MonoException*
mono_loader_error_prepare_exception (MonoLoaderError *error)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>error:</i></dt><dd> The MonoLoaderError to turn into an exception</dd></blockquote>
<b>Remarks</b>
<p />
This turns a MonoLoaderError into an exception that can be thrown
and resets the Mono Loader Error state during this process.
</div><h2>Metadata Loader Locking: Internals</h2>
<p />The locking functions here are used by code in class.c and
metadata.c to lock access to the shared hashtables inside the
MonoImage.
<a name="api:mono_loader_lock"></a>
<div class="api">
<div class="api-entry">mono_loader_lock</div>
<div class="prototype">void
mono_loader_lock (void)
</div>
<p />
<b>Remarks</b>
<p />
See docs/thread-safety.txt for the locking strategy.
</div> <a name="api:mono_loader_unlock"></a>
<div class="api">
<div class="api-entry">mono_loader_unlock</div>
<div class="prototype">Prototype: mono_loader_unlock</div>
<p />
</div><h2>Garbage Collector Internal Interface</h2>
<p />The internal interface of the Mono GC is the interface used
between the runtime engine and the garbage collector.
<a name="api:mono_gc_disable"></a>
<div class="api">
<div class="api-entry">mono_gc_disable</div>
<div class="prototype">Prototype: mono_gc_disable</div>
<p />
</div> <a name="api:mono_gc_enable"></a>
<div class="api">
<div class="api-entry">mono_gc_enable</div>
<div class="prototype">Prototype: mono_gc_enable</div>
<p />
</div> <a name="api:mono_gc_is_finalizer_thread"></a>
<div class="api">
<div class="api-entry">mono_gc_is_finalizer_thread</div>
<div class="prototype">gboolean
mono_gc_is_finalizer_thread (MonoThread *thread)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>thread:</i></dt><dd> the thread to test.</dd></blockquote>
<b>Remarks</b>
<p />
In Mono objects are finalized asynchronously on a separate thread.
This routine tests whether the <i>thread</i> argument represents the
finalization thread.
<p />
Returns true if <i>thread</i> is the finalization thread.
</div> <a name="api:mono_gc_out_of_memory"></a>
<div class="api">
<div class="api-entry">mono_gc_out_of_memory</div>
<div class="prototype">Prototype: mono_gc_out_of_memory</div>
<p />
</div> <a name="api:mono_gc_start_world"></a>
<div class="api">
<div class="api-entry">mono_gc_start_world</div>
<div class="prototype">Prototype: mono_gc_start_world</div>
<p />
</div> <a name="api:mono_gc_stop_world"></a>
<div class="api">
<div class="api-entry">mono_gc_stop_world</div>
<div class="prototype">Prototype: mono_gc_stop_world</div>
<p />
</div> <a name="api:mono_gc_alloc_fixed"></a>
<div class="api">
<div class="api-entry">mono_gc_alloc_fixed</div>
<div class="prototype">Prototype: mono_gc_alloc_fixed</div>
<p />
</div> <a name="api:mono_gc_enable_events"></a>
<div class="api">
<div class="api-entry">mono_gc_enable_events</div>
<div class="prototype">Prototype: mono_gc_enable_events</div>
<p />
</div> <a name="api:mono_gc_free_fixed"></a>
<div class="api">
<div class="api-entry">mono_gc_free_fixed</div>
<div class="prototype">Prototype: mono_gc_free_fixed</div>
<p />
</div> <a name="api:mono_gc_make_descr_from_bitmap"></a>
<div class="api">
<div class="api-entry">mono_gc_make_descr_from_bitmap</div>
<div class="prototype">Prototype: mono_gc_make_descr_from_bitmap</div>
<p />
</div> <a name="api:mono_gc_base_init"></a>
<div class="api">
<div class="api-entry">mono_gc_base_init</div>
<div class="prototype">Prototype: mono_gc_base_init</div>
<p />
</div> <a name="api:mono_gc_invoke_finalizers"></a>
<div class="api">
<div class="api-entry">mono_gc_invoke_finalizers</div>
<div class="prototype">Prototype: mono_gc_invoke_finalizers</div>
<p />
</div> <a name="api:mono_gc_is_gc_thread"></a>
<div class="api">
<div class="api-entry">mono_gc_is_gc_thread</div>
<div class="prototype">Prototype: mono_gc_is_gc_thread</div>
<p />
</div> <a name="api:mono_gc_pending_finalizers"></a>
<div class="api">
<div class="api-entry">mono_gc_pending_finalizers</div>
<div class="prototype">Prototype: mono_gc_pending_finalizers</div>
<p />
</div> <a name="api:mono_gc_register_thread"></a>
<div class="api">
<div class="api-entry">mono_gc_register_thread</div>
<div class="prototype">Prototype: mono_gc_register_thread</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-jit.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Synopsis</h2>
<div class="header">
G_GNUC_UNUSED char * <a href="#api:mono_pmip">mono_pmip</a> (void *ip);
void <a href="#api:mono_print_method_from_ip">mono_print_method_from_ip</a> (void *ip);
<a href="#api:mono_print_thread_dump"></a>
void <a href="#api:mono_threads_request_thread_dump">mono_threads_request_thread_dump</a> (void);
<a href="#api:mono_inst_name"></a>
</div>
<h3>Useful Debugging Functions</h3>
<p />These functions are useful when running the Mono VM inside
a debugger.
<a name="api:mono_pmip"></a>
<div class="api">
<div class="api-entry">mono_pmip</div>
<div class="prototype">G_GNUC_UNUSED char *
mono_pmip (void *ip)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>ip:</i></dt><dd> an instruction pointer address</dd></blockquote>
<b>Returns</b>
<blockquote> the name of the method at address <i>ip</i>.
</blockquote>
<b>Remarks</b>
<p />
This method is used from a debugger to get the name of the
method at address <i>ip</i>. This routine is typically invoked from
a debugger like this:
(gdb) print mono_pmip ($pc)
</div> <a name="api:mono_print_method_from_ip"></a>
<div class="api">
<div class="api-entry">mono_print_method_from_ip</div>
<div class="prototype">#ifdef __GNUC__
/* Prevent the linker from optimizing this away in embedding setups to help debugging */
__attribute__((used))
#endif
void
mono_print_method_from_ip (void *ip)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>ip:</i></dt><dd> an instruction pointer address</dd></blockquote>
<b>Remarks</b>
<p />
This method is used from a debugger to get the name of the
method at address <i>ip</i>.
This prints the name of the method at address <i>ip</i> in the standard
output. Unlike mono_pmip which returns a string, this routine
prints the value on the standard output.
</div> <a name="api:mono_print_thread_dump"></a>
<div class="api">
<div class="api-entry">mono_print_thread_dump</div>
<div class="prototype">Prototype: mono_print_thread_dump</div>
<p />
</div> <a name="api:mono_threads_request_thread_dump"></a>
<div class="api">
<div class="api-entry">mono_threads_request_thread_dump</div>
<div class="prototype">void
mono_threads_request_thread_dump (void)
</div>
<p />
<b>Remarks</b>
<p />
Ask all threads except the current to print their stacktrace to stdout.
</div><h3>Helper Tools For Native Ports</h3>
</body>
</html>
</span>

View File

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-jitinternal.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Notification Interface</h1>
<p />This is an internal profiler interface. In general, users
would not be using this interface, but would be using the
profiler interface.
<p />These methods must be called to notify the profiler of an
event that must be recorded. Mono's JIT engine currently
calls these routines, but if you are extending Mono in some
way these are the methods that you might invoke to notify the
profiler of an event.
<a name="api:mono_profiler_load"></a>
<div class="api">
<div class="api-entry">mono_profiler_load</div>
<div class="prototype">void
mono_profiler_load (const char *desc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>desc:</i></dt><dd> arguments to configure the profiler</dd></blockquote>
<b>Remarks</b>
<p />
Invoke this method to initialize the profiler. This will drive the
loading of the internal (&quot;default&quot;) or any external profilers.
This routine is invoked by Mono's driver, but must be called manually
if you embed Mono into your application.
</div> <a name="api:mono_profiler_allocation"></a>
<div class="api">
<div class="api-entry">mono_profiler_allocation</div>
<div class="prototype">Prototype: mono_profiler_allocation</div>
<p />
</div> <a name="api:mono_profiler_stat_hit"></a>
<div class="api">
<div class="api-entry">mono_profiler_stat_hit</div>
<div class="prototype">Prototype: mono_profiler_stat_hit</div>
<p />
</div> <a name="api:mono_profiler_thread_start"></a>
<div class="api">
<div class="api-entry">mono_profiler_thread_start</div>
<div class="prototype">Prototype: mono_profiler_thread_start</div>
<p />
</div> <a name="api:mono_profiler_thread_end"></a>
<div class="api">
<div class="api-entry">mono_profiler_thread_end</div>
<div class="prototype">Prototype: mono_profiler_thread_end</div>
<p />
</div> <a name="api:mono_profiler_appdomain_event"></a>
<div class="api">
<div class="api-entry">mono_profiler_appdomain_event</div>
<div class="prototype">Prototype: mono_profiler_appdomain_event</div>
<p />
</div> <a name="api:mono_profiler_appdomain_loaded"></a>
<div class="api">
<div class="api-entry">mono_profiler_appdomain_loaded</div>
<div class="prototype">Prototype: mono_profiler_appdomain_loaded</div>
<p />
</div> <a name="api:mono_profiler_assembly_event"></a>
<div class="api">
<div class="api-entry">mono_profiler_assembly_event</div>
<div class="prototype">Prototype: mono_profiler_assembly_event</div>
<p />
</div> <a name="api:mono_profiler_assembly_loaded"></a>
<div class="api">
<div class="api-entry">mono_profiler_assembly_loaded</div>
<div class="prototype">Prototype: mono_profiler_assembly_loaded</div>
<p />
</div> <a name="api:mono_profiler_class_event"></a>
<div class="api">
<div class="api-entry">mono_profiler_class_event</div>
<div class="prototype">Prototype: mono_profiler_class_event</div>
<p />
</div> <a name="api:mono_profiler_class_loaded"></a>
<div class="api">
<div class="api-entry">mono_profiler_class_loaded</div>
<div class="prototype">Prototype: mono_profiler_class_loaded</div>
<p />
</div> <a name="api:mono_profiler_code_transition"></a>
<div class="api">
<div class="api-entry">mono_profiler_code_transition</div>
<div class="prototype">Prototype: mono_profiler_code_transition</div>
<p />
</div> <a name="api:mono_profiler_method_end_jit"></a>
<div class="api">
<div class="api-entry">mono_profiler_method_end_jit</div>
<div class="prototype">Prototype: mono_profiler_method_end_jit</div>
<p />
</div> <a name="api:mono_profiler_method_enter"></a>
<div class="api">
<div class="api-entry">mono_profiler_method_enter</div>
<div class="prototype">Prototype: mono_profiler_method_enter</div>
<p />
</div> <a name="api:mono_profiler_method_jit"></a>
<div class="api">
<div class="api-entry">mono_profiler_method_jit</div>
<div class="prototype">Prototype: mono_profiler_method_jit</div>
<p />
</div> <a name="api:mono_profiler_method_leave"></a>
<div class="api">
<div class="api-entry">mono_profiler_method_leave</div>
<div class="prototype">Prototype: mono_profiler_method_leave</div>
<p />
</div> <a name="api:mono_profiler_module_event"></a>
<div class="api">
<div class="api-entry">mono_profiler_module_event</div>
<div class="prototype">Prototype: mono_profiler_module_event</div>
<p />
</div> <a name="api:mono_profiler_module_loaded"></a>
<div class="api">
<div class="api-entry">mono_profiler_module_loaded</div>
<div class="prototype">Prototype: mono_profiler_module_loaded</div>
<p />
</div> <a name="api:mono_profiler_shutdown"></a>
<div class="api">
<div class="api-entry">mono_profiler_shutdown</div>
<div class="prototype">Prototype: mono_profiler_shutdown</div>
<p />
</div> <a name="api:mono_profiler_startup"></a>
<div class="api">
<div class="api-entry">mono_profiler_startup</div>
<div class="prototype">Prototype: mono_profiler_startup</div>
<p />
</div> <a name="api:mono_profiler_gc_event"></a>
<div class="api">
<div class="api-entry">mono_profiler_gc_event</div>
<div class="prototype">Prototype: mono_profiler_gc_event</div>
<p />
</div> <a name="api:mono_profiler_gc_heap_resize"></a>
<div class="api">
<div class="api-entry">mono_profiler_gc_heap_resize</div>
<div class="prototype">Prototype: mono_profiler_gc_heap_resize</div>
<p />
</div> <a name="api:mono_profiler_gc_event"></a>
<div class="api">
<div class="api-entry">mono_profiler_gc_event</div>
<div class="prototype">Prototype: mono_profiler_gc_event</div>
<p />
</div> <a name="api:mono_profiler_gc_heap_resize"></a>
<div class="api">
<div class="api-entry">mono_profiler_gc_heap_resize</div>
<div class="prototype">Prototype: mono_profiler_gc_heap_resize</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-marshal.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<a name="api:mono_delegate_free_ftnptr"></a>
<div class="api">
<div class="api-entry">mono_delegate_free_ftnptr</div>
<div class="prototype">Prototype: mono_delegate_free_ftnptr</div>
<p />
</div> <a name="api:mono_delegate_to_ftnptr"></a>
<div class="api">
<div class="api-entry">mono_delegate_to_ftnptr</div>
<div class="prototype">Prototype: mono_delegate_to_ftnptr</div>
<p />
</div> <a name="api:mono_ftnptr_to_delegate"></a>
<div class="api">
<div class="api-entry">mono_ftnptr_to_delegate</div>
<div class="prototype">Prototype: mono_ftnptr_to_delegate</div>
<p />
</div></body>
</html>
</span>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,578 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-methods.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h3>Methods</h3>
<h3>Invoking Methods</h3>
<a name="api:mono_runtime_invoke"></a>
<div class="api">
<div class="api-entry">mono_runtime_invoke</div>
<div class="prototype">MonoObject*
mono_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>method:</i></dt><dd> method to invoke</dd><dt><i>obJ:</i></dt><dd> object instance</dd><dt><i>params:</i></dt><dd> arguments to the method</dd><dt><i>exc:</i></dt><dd> exception information.</dd></blockquote>
<b>Remarks</b>
<p />
Invokes the method represented by <i>method</i> on the object <i>obj</i>.
obj is the 'this' pointer, it should be NULL for static
methods, a MonoObject* for object instances and a pointer to
the value type for value types.
The params array contains the arguments to the method with the
same convention: MonoObject* pointers for object instances and
pointers to the value type otherwise.
<p />
From unmanaged code you'll usually use the
mono_runtime_invoke() variant.
Note that this function doesn't handle virtual methods for
you, it will exec the exact method you pass: we still need to
expose a function to lookup the derived class implementation
of a virtual method (there are examples of this in the code,
though).
<p />
You can pass NULL as the exc argument if you don't want to
catch exceptions, otherwise, *exc will be set to the exception
thrown, if any. if an exception is thrown, you can't use the
MonoObject* result from the function.
<p />
If the method returns a value type, it is boxed in an object
reference.
If you want to invoke generic methods, you must call the method on the
&quot;inflated&quot; class, which you can obtain from the
<tt>mono_object_get_class()</tt>
<div class="code">
MonoClass *clazz;
MonoMethod *method;
clazz = mono_object_get_class (obj);
/*
* If there are more Add methods declared, you
* may use mono_method_desc_search_in_class (clazz, &quot;:Add(T)&quot;),
* you must substitute &quot;:Add(T)&quot; with the correct type, for example
* for List&lt;int&gt;, you would use &quot;:Add(int)&quot;.
*/
method = mono_class_get_method_from_name (clazz, &quot;Add&quot;, 1);
mono_runtime_invoke (method, obj, args, &amp;exception);
</div>
</div> <a name="api:mono_runtime_invoke_array"></a>
<div class="api">
<div class="api-entry">mono_runtime_invoke_array</div>
<div class="prototype">MonoObject*
mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
MonoObject **exc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>method:</i></dt><dd> method to invoke</dd><dt><i>obJ:</i></dt><dd> object instance</dd><dt><i>params:</i></dt><dd> arguments to the method</dd><dt><i>exc:</i></dt><dd> exception information.</dd></blockquote>
<b>Remarks</b>
<p />
Invokes the method represented by <i>method</i> on the object <i>obj</i>.
obj is the 'this' pointer, it should be NULL for static
methods, a MonoObject* for object instances and a pointer to
the value type for value types.
The params array contains the arguments to the method with the
same convention: MonoObject* pointers for object instances and
pointers to the value type otherwise. The _invoke_array
variant takes a C# object[] as the params argument (MonoArray
*params): in this case the value types are boxed inside the
respective reference representation.
<p />
From unmanaged code you'll usually use the
mono_runtime_invoke() variant.
Note that this function doesn't handle virtual methods for
you, it will exec the exact method you pass: we still need to
expose a function to lookup the derived class implementation
of a virtual method (there are examples of this in the code,
though).
<p />
You can pass NULL as the exc argument if you don't want to
catch exceptions, otherwise, *exc will be set to the exception
thrown, if any. if an exception is thrown, you can't use the
MonoObject* result from the function.
<p />
If the method returns a value type, it is boxed in an object
reference.
</div> <a name="api:mono_runtime_delegate_invoke"></a>
<div class="api">
<div class="api-entry">mono_runtime_delegate_invoke</div>
<div class="prototype">MonoObject*
mono_runtime_delegate_invoke (MonoObject *delegate, void **params, MonoObject **exc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>delegate:</i></dt><dd> pointer to a delegate object.</dd><dt><i>params:</i></dt><dd> parameters for the delegate.</dd><dt><i>exc:</i></dt><dd> Pointer to the exception result.</dd></blockquote>
<b>Remarks</b>
<p />
Invokes the delegate method <i>delegate</i> with the parameters provided.
You can pass NULL as the exc argument if you don't want to
catch exceptions, otherwise, *exc will be set to the exception
thrown, if any. if an exception is thrown, you can't use the
MonoObject* result from the function.
</div> <a name="api:mono_method_body_get_object"></a>
<div class="api">
<div class="api-entry">mono_method_body_get_object</div>
<div class="prototype">Prototype: mono_method_body_get_object</div>
<p />
</div> <a name="api:mono_method_desc_free"></a>
<div class="api">
<div class="api-entry">mono_method_desc_free</div>
<div class="prototype">void
mono_method_desc_free (MonoMethodDesc *desc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>desc:</i></dt><dd> method description to be released</dd></blockquote>
<b>Remarks</b>
<p />
Releases the MonoMethodDesc object <i>desc</i>.
</div> <a name="api:mono_method_desc_from_method"></a>
<div class="api">
<div class="api-entry">mono_method_desc_from_method</div>
<div class="prototype">Prototype: mono_method_desc_from_method</div>
<p />
</div> <a name="api:mono_method_desc_full_match"></a>
<div class="api">
<div class="api-entry">mono_method_desc_full_match</div>
<div class="prototype">Prototype: mono_method_desc_full_match</div>
<p />
</div> <a name="api:mono_method_desc_match"></a>
<div class="api">
<div class="api-entry">mono_method_desc_match</div>
<div class="prototype">Prototype: mono_method_desc_match</div>
<p />
</div> <a name="api:mono_method_desc_new"></a>
<div class="api">
<div class="api-entry">mono_method_desc_new</div>
<div class="prototype">MonoMethodDesc*
mono_method_desc_new (const char *name, gboolean include_namespace)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>name:</i></dt><dd> the method name.</dd><dt><i>include_namespace:</i></dt><dd> whether the name includes a namespace or not.</dd></blockquote>
<b>Returns</b>
<blockquote> a parsed representation of the method description.
</blockquote>
<b>Remarks</b>
<p />
Creates a method description for <i>name</i>, which conforms to the following
specification:
[namespace.]classname:methodname[(args...)]
in all the loaded assemblies.
Both classname and methodname can contain '*' which matches anything.
</div> <a name="api:mono_method_desc_search_in_class"></a>
<div class="api">
<div class="api-entry">mono_method_desc_search_in_class</div>
<div class="prototype">Prototype: mono_method_desc_search_in_class</div>
<p />
</div> <a name="api:mono_method_desc_search_in_image"></a>
<div class="api">
<div class="api-entry">mono_method_desc_search_in_image</div>
<div class="prototype">Prototype: mono_method_desc_search_in_image</div>
<p />
</div> <a name="api:mono_method_full_name"></a>
<div class="api">
<div class="api-entry">mono_method_full_name</div>
<div class="prototype">Prototype: mono_method_full_name</div>
<p />
</div> <a name="api:mono_method_get_class"></a>
<div class="api">
<div class="api-entry">mono_method_get_class</div>
<div class="prototype">Prototype: mono_method_get_class</div>
<p />
</div> <a name="api:mono_method_get_flags"></a>
<div class="api">
<div class="api-entry">mono_method_get_flags</div>
<div class="prototype">Prototype: mono_method_get_flags</div>
<p />
</div> <a name="api:mono_method_get_last_managed"></a>
<div class="api">
<div class="api-entry">mono_method_get_last_managed</div>
<div class="prototype">Prototype: mono_method_get_last_managed</div>
<p />
</div> <a name="api:mono_method_get_marshal_info"></a>
<div class="api">
<div class="api-entry">mono_method_get_marshal_info</div>
<div class="prototype">Prototype: mono_method_get_marshal_info</div>
<p />
</div> <a name="api:mono_method_get_name"></a>
<div class="api">
<div class="api-entry">mono_method_get_name</div>
<div class="prototype">Prototype: mono_method_get_name</div>
<p />
</div> <a name="api:mono_method_get_object"></a>
<div class="api">
<div class="api-entry">mono_method_get_object</div>
<div class="prototype">Prototype: mono_method_get_object</div>
<p />
</div> <a name="api:mono_method_get_param_names"></a>
<div class="api">
<div class="api-entry">mono_method_get_param_names</div>
<div class="prototype">Prototype: mono_method_get_param_names</div>
<p />
</div> <a name="api:mono_method_get_param_token"></a>
<div class="api">
<div class="api-entry">mono_method_get_param_token</div>
<div class="prototype">Prototype: mono_method_get_param_token</div>
<p />
</div> <a name="api:mono_method_get_signature"></a>
<div class="api">
<div class="api-entry">mono_method_get_signature</div>
<div class="prototype">Prototype: mono_method_get_signature</div>
<p />
</div> <a name="api:mono_method_get_index"></a>
<div class="api">
<div class="api-entry">mono_method_get_index</div>
<div class="prototype">Prototype: mono_method_get_index</div>
<p />
</div> <a name="api:mono_method_get_signature_full"></a>
<div class="api">
<div class="api-entry">mono_method_get_signature_full</div>
<div class="prototype">Prototype: mono_method_get_signature_full</div>
<p />
</div> <a name="api:mono_method_get_token"></a>
<div class="api">
<div class="api-entry">mono_method_get_token</div>
<div class="prototype">Prototype: mono_method_get_token</div>
<p />
</div> <a name="api:mono_method_has_marshal_info"></a>
<div class="api">
<div class="api-entry">mono_method_has_marshal_info</div>
<div class="prototype">Prototype: mono_method_has_marshal_info</div>
<p />
</div> <a name="api:mono_method_verify"></a>
<div class="api">
<div class="api-entry">mono_method_verify</div>
<div class="prototype">Prototype: mono_method_verify</div>
<p />
</div><h3>Method Signatures</h3>
<a name="api:mono_method_signature"></a>
<div class="api">
<div class="api-entry">mono_method_signature</div>
<div class="prototype">MonoMethodSignature*
mono_method_signature (MonoMethod *m)
</div>
<p />
<b>Remarks</b>
<p />
Return the signature of the method M. On failure, returns NULL.
</div> <a name="api:mono_signature_explicit_this"></a>
<div class="api">
<div class="api-entry">mono_signature_explicit_this</div>
<div class="prototype">gboolean
mono_signature_explicit_this (MonoMethodSignature *sig)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd></blockquote>
<b>Returns</b>
<blockquote> <i>TRUE</i> if this the method signature <i>sig</i> has an explicit
instance argument. <i>FALSE</i> otherwise.</blockquote>
</div> <a name="api:mono_signature_get_call_conv"></a>
<div class="api">
<div class="api-entry">mono_signature_get_call_conv</div>
<div class="prototype">guint32
mono_signature_get_call_conv (MonoMethodSignature *sig)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd></blockquote>
<b>Returns</b>
<blockquote> the call convention of the method signature <i>sig</i>.
</blockquote>
</div> <a name="api:mono_signature_get_desc"></a>
<div class="api">
<div class="api-entry">mono_signature_get_desc</div>
<div class="prototype">Prototype: mono_signature_get_desc</div>
<p />
</div> <a name="api:mono_signature_get_param_count"></a>
<div class="api">
<div class="api-entry">mono_signature_get_param_count</div>
<div class="prototype">guint32
mono_signature_get_param_count (MonoMethodSignature *sig)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd></blockquote>
<b>Returns</b>
<blockquote> the number of parameters in the method signature <i>sig</i>.
</blockquote>
</div> <a name="api:mono_signature_get_params"></a>
<div class="api">
<div class="api-entry">mono_signature_get_params</div>
<div class="prototype">MonoType*
mono_signature_get_params (MonoMethodSignature *sig, gpointer *iter)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd><dt><i>iter:</i></dt><dd> pointer to an iterator</dd></blockquote>
<b>Returns</b>
<blockquote> the next parameter type of the method signature <i>sig</i>,
<i>NULL</i> when finished.</blockquote>
<b>Remarks</b>
<p />
Iterates over the parameters for the method signature <i>sig</i>.
A void* pointer must be initualized to <i>NULL</i> to start the iteration
and it's address is passed to this function repeteadly until it returns
<i>NULL</i>.
</div> <a name="api:mono_signature_get_return_type"></a>
<div class="api">
<div class="api-entry">mono_signature_get_return_type</div>
<div class="prototype">MonoType*
mono_signature_get_return_type (MonoMethodSignature *sig)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd></blockquote>
<b>Returns</b>
<blockquote> the return type of the method signature <i>sig</i>
</blockquote>
</div> <a name="api:mono_signature_hash"></a>
<div class="api">
<div class="api-entry">mono_signature_hash</div>
<div class="prototype">Prototype: mono_signature_hash</div>
<p />
</div> <a name="api:mono_signature_is_instance"></a>
<div class="api">
<div class="api-entry">mono_signature_is_instance</div>
<div class="prototype">gboolean
mono_signature_is_instance (MonoMethodSignature *sig)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd></blockquote>
<b>Returns</b>
<blockquote> <i>TRUE</i> if this the method signature <i>sig</i> has an implicit
first instance argument. <i>FALSE</i> otherwise.</blockquote>
</div> <a name="api:mono_signature_vararg_start"></a>
<div class="api">
<div class="api-entry">mono_signature_vararg_start</div>
<div class="prototype">int
mono_signature_vararg_start (MonoMethodSignature *sig)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>sig:</i></dt><dd> the method signature inspected</dd></blockquote>
<b>Returns</b>
<blockquote> the number of the first vararg parameter in the
method signature <i>sig</i>. -1 if this is not a vararg signature.</blockquote>
</div> <a name="api:mono_param_get_objects"></a>
<div class="api">
<div class="api-entry">mono_param_get_objects</div>
<div class="prototype">Prototype: mono_param_get_objects</div>
<p />
</div> <a name="api:mono_get_method_full"></a>
<div class="api">
<div class="api-entry">mono_get_method_full</div>
<div class="prototype">Prototype: mono_get_method_full</div>
<p />
</div> <a name="api:mono_get_method"></a>
<div class="api">
<div class="api-entry">mono_get_method</div>
<div class="prototype">Prototype: mono_get_method</div>
<p />
</div><h3>Methods Header Operations</h3>
<a name="api:mono_method_get_header"></a>
<div class="api">
<div class="api-entry">mono_method_get_header</div>
<div class="prototype">Prototype: mono_method_get_header</div>
<p />
</div> <a name="api:mono_method_header_get_clauses"></a>
<div class="api">
<div class="api-entry">mono_method_header_get_clauses</div>
<div class="prototype">Prototype: mono_method_header_get_clauses</div>
<p />
</div> <a name="api:mono_method_header_get_code"></a>
<div class="api">
<div class="api-entry">mono_method_header_get_code</div>
<div class="prototype">Prototype: mono_method_header_get_code</div>
<p />
</div> <a name="api:mono_method_header_get_locals"></a>
<div class="api">
<div class="api-entry">mono_method_header_get_locals</div>
<div class="prototype">Prototype: mono_method_header_get_locals</div>
<p />
</div></body>
</html>
</span>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,268 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-profiler.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h1>Profiling Interface</h1>
<h3>Profiler Operation</h3>
<p />The following methods can be used by dynamic profiler
methods to monitor different aspects of the program.
<p />A custom profiler will have one public method defined in
the shared library which is the entry point that Mono calls at
startup, it has the following signature:
<pre>
void mono_profiler_startup (const char *desc)
</pre>
<p />Where &quot;desc&quot; is the set of arguments that were passed from
the command line. This routine will call
<tt>mono_profiler_install</tt> to activate the profiler and
will install one or more filters (one of the various
<tt>mono_profiler_install_</tt> functions).
<p />In addition, a profiler developer will typically call
<tt>mono_profiler_set_events</tt> to register which kinds of
traces should be enabled, these can be an OR-ed combination of
the following:
<pre>
MONO_PROFILE_NONE
MONO_PROFILE_APPDOMAIN_EVENTS
MONO_PROFILE_ASSEMBLY_EVENTS
MONO_PROFILE_MODULE_EVENTS
MONO_PROFILE_CLASS_EVENTS
MONO_PROFILE_JIT_COMPILATION
MONO_PROFILE_INLINING
MONO_PROFILE_EXCEPTIONS
MONO_PROFILE_ALLOCATIONS
MONO_PROFILE_GC
MONO_PROFILE_THREADS
MONO_PROFILE_REMOTING
MONO_PROFILE_TRANSITIONS
MONO_PROFILE_ENTER_LEAVE
MONO_PROFILE_COVERAGE
MONO_PROFILE_INS_COVERAGE
MONO_PROFILE_STATISTICAL
</pre>
<p />Developers can change the set of monitored events at
runtime by calling <tt>mono_profiler_set_events</tt>.
<a name="api:mono_profiler_install"></a>
<div class="api">
<div class="api-entry">mono_profiler_install</div>
<div class="prototype">void
mono_profiler_install (MonoProfiler *prof, MonoProfileFunc callback)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>prof:</i></dt><dd> a MonoProfiler structure pointer, or a pointer to a derived structure.</dd><dt><i>callback:</i></dt><dd> the function to invoke at shutdown</dd></blockquote>
<b>Remarks</b>
<p />
Use mono_profiler_install to activate profiling in the Mono runtime.
Typically developers of new profilers will create a new structure whose
first field is a MonoProfiler and put any extra information that they need
to access from the various profiling callbacks there.
</div> <a name="api:mono_profiler_install_allocation"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_allocation</div>
<div class="prototype">Prototype: mono_profiler_install_allocation</div>
<p />
</div> <a name="api:mono_profiler_install_appdomain"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_appdomain</div>
<div class="prototype">Prototype: mono_profiler_install_appdomain</div>
<p />
</div> <a name="api:mono_profiler_install_assembly"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_assembly</div>
<div class="prototype">Prototype: mono_profiler_install_assembly</div>
<p />
</div> <a name="api:mono_profiler_install_class"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_class</div>
<div class="prototype">Prototype: mono_profiler_install_class</div>
<p />
</div> <a name="api:mono_profiler_install_coverage_filter"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_coverage_filter</div>
<div class="prototype">Prototype: mono_profiler_install_coverage_filter</div>
<p />
</div> <a name="api:mono_profiler_install_enter_leave"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_enter_leave</div>
<div class="prototype">void
mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>enter:</i></dt><dd> the routine to be called on each method entry</dd><dt><i>fleave:</i></dt><dd> the routine to be called each time a method returns</dd></blockquote>
<b>Remarks</b>
<p />
Use this routine to install routines that will be called everytime
a method enters and leaves. The routines will receive as an argument
the MonoMethod representing the method that is entering or leaving.
</div> <a name="api:mono_profiler_install_jit_compile"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_jit_compile</div>
<div class="prototype">void
mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>start:</i></dt><dd> the routine to be called when the JIT process starts.</dd><dt><i>end:</i></dt><dd> the routine to be called when the JIT process ends.</dd></blockquote>
<b>Remarks</b>
<p />
Use this routine to install routines that will be called when JIT
compilation of a method starts and completes.
</div> <a name="api:mono_profiler_install_module"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_module</div>
<div class="prototype">Prototype: mono_profiler_install_module</div>
<p />
</div> <a name="api:mono_profiler_install_thread"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_thread</div>
<div class="prototype">Prototype: mono_profiler_install_thread</div>
<p />
</div> <a name="api:mono_profiler_install_transition"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_transition</div>
<div class="prototype">Prototype: mono_profiler_install_transition</div>
<p />
</div> <a name="api:mono_profiler_install_gc"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_gc</div>
<div class="prototype">Prototype: mono_profiler_install_gc</div>
<p />
</div> <a name="api:mono_profiler_install_statistical"></a>
<div class="api">
<div class="api-entry">mono_profiler_install_statistical</div>
<div class="prototype">Prototype: mono_profiler_install_statistical</div>
<p />
</div> <a name="api:mono_profiler_set_events"></a>
<div class="api">
<div class="api-entry">mono_profiler_set_events</div>
<div class="prototype">void
mono_profiler_set_events (MonoProfileFlags events)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>events:</i></dt><dd> an ORed set of values made up of MONO_PROFILER_ flags</dd></blockquote>
<b>Remarks</b>
<p />
The events descriped in the <i>events</i> argument is a set of flags
that represent which profiling events must be triggered. For
example if you have registered a set of methods for tracking
JIT compilation start and end with mono_profiler_install_jit_compile,
you will want to pass the MONO_PROFILE_JIT_COMPILATION flag to
this routine.
You can call mono_profile_set_events more than once and you can
do this at runtime to modify which methods are invoked.
</div> <a name="api:mono_profiler_get_events"></a>
<div class="api">
<div class="api-entry">mono_profiler_get_events</div>
<div class="prototype">MonoProfileFlags
mono_profiler_get_events (void)
</div>
<p />
<b>Remarks</b>
<p />
Returns a list of active events that will be intercepted.
</div><h3>Coverage</h3>
<p />To support profiling modules that need to do code coverage
analysis, the following routines is provided:
</body>
</html>
</span>

View File

@ -0,0 +1,269 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-reflection.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Fetching Types, and Basic Reflection</h2>
<a name="api:mono_reflection_get_custom_attrs_blob"></a>
<div class="api">
<div class="api-entry">mono_reflection_get_custom_attrs_blob</div>
<div class="prototype">Prototype: mono_reflection_get_custom_attrs_blob</div>
<p />
</div> <a name="api:mono_reflection_get_custom_attrs"></a>
<div class="api">
<div class="api-entry">mono_reflection_get_custom_attrs</div>
<div class="prototype">Prototype: mono_reflection_get_custom_attrs</div>
<p />
</div> <a name="api:mono_custom_attrs_get_attr"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_get_attr</div>
<div class="prototype">Prototype: mono_custom_attrs_get_attr</div>
<p />
</div> <a name="api:mono_reflection_get_token"></a>
<div class="api">
<div class="api-entry">mono_reflection_get_token</div>
<div class="prototype">Prototype: mono_reflection_get_token</div>
<p />
</div> <a name="api:mono_reflection_get_type"></a>
<div class="api">
<div class="api-entry">mono_reflection_get_type</div>
<div class="prototype">Prototype: mono_reflection_get_type</div>
<p />
</div> <a name="api:mono_reflection_parse_type"></a>
<div class="api">
<div class="api-entry">mono_reflection_parse_type</div>
<div class="prototype">Prototype: mono_reflection_parse_type</div>
<p />
</div> <a name="api:mono_reflection_type_from_name"></a>
<div class="api">
<div class="api-entry">mono_reflection_type_from_name</div>
<div class="prototype">Prototype: mono_reflection_type_from_name</div>
<p />
</div> <a name="api:mono_reflection_get_custom_attrs_info"></a>
<div class="api">
<div class="api-entry">mono_reflection_get_custom_attrs_info</div>
<div class="prototype">Prototype: mono_reflection_get_custom_attrs_info</div>
<p />
</div><h2>Custom Attributes</h2>
<a name="api:mono_custom_attrs_construct"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_construct</div>
<div class="prototype">Prototype: mono_custom_attrs_construct</div>
<p />
</div> <a name="api:mono_custom_attrs_free"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_free</div>
<div class="prototype">Prototype: mono_custom_attrs_free</div>
<p />
</div> <a name="api:mono_custom_attrs_from_assembly"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_assembly</div>
<div class="prototype">Prototype: mono_custom_attrs_from_assembly</div>
<p />
</div> <a name="api:mono_custom_attrs_from_class"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_class</div>
<div class="prototype">Prototype: mono_custom_attrs_from_class</div>
<p />
</div> <a name="api:mono_custom_attrs_from_event"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_event</div>
<div class="prototype">Prototype: mono_custom_attrs_from_event</div>
<p />
</div> <a name="api:mono_custom_attrs_from_field"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_field</div>
<div class="prototype">Prototype: mono_custom_attrs_from_field</div>
<p />
</div> <a name="api:mono_custom_attrs_from_index"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_index</div>
<div class="prototype">MonoCustomAttrInfo*
mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
</div>
<p />
<b>Returns</b>
<blockquote> NULL if no attributes are found or if a loading error occurs.
</blockquote>
</div> <a name="api:mono_custom_attrs_from_method"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_method</div>
<div class="prototype">Prototype: mono_custom_attrs_from_method</div>
<p />
</div> <a name="api:mono_custom_attrs_from_param"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_param</div>
<div class="prototype">MonoCustomAttrInfo*
mono_custom_attrs_from_param (MonoMethod *method, guint32 param)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>method:</i></dt><dd> handle to the method that we want to retrieve custom parameter information from</dd><dt><i>param:</i></dt><dd> parameter number, where zero represent the return value, and one is the first parameter in the method</dd></blockquote>
<b>Returns</b>
<blockquote> the custom attribute object for the specified parameter, or NULL if there are none.
</blockquote>
<b>Remarks</b>
<p />
The result must be released with mono_custom_attrs_free().
</div> <a name="api:mono_custom_attrs_from_property"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_from_property</div>
<div class="prototype">Prototype: mono_custom_attrs_from_property</div>
<p />
</div> <a name="api:mono_custom_attrs_has_attr"></a>
<div class="api">
<div class="api-entry">mono_custom_attrs_has_attr</div>
<div class="prototype">Prototype: mono_custom_attrs_has_attr</div>
<p />
</div><h2></h2>
<a name="api:mono_module_file_get_object"></a>
<div class="api">
<div class="api-entry">mono_module_file_get_object</div>
<div class="prototype">Prototype: mono_module_file_get_object</div>
<p />
</div> <a name="api:mono_module_get_object"></a>
<div class="api">
<div class="api-entry">mono_module_get_object</div>
<div class="prototype">Prototype: mono_module_get_object</div>
<p />
</div> <a name="api:mono_method_body_get_object"></a>
<div class="api">
<div class="api-entry">mono_method_body_get_object</div>
<div class="prototype">Prototype: mono_method_body_get_object</div>
<p />
</div> <a name="api:mono_event_get_object"></a>
<div class="api">
<div class="api-entry">mono_event_get_object</div>
<div class="prototype">Prototype: mono_event_get_object</div>
<p />
</div> <a name="api:mono_assembly_get_object"></a>
<div class="api">
<div class="api-entry">mono_assembly_get_object</div>
<div class="prototype">Prototype: mono_assembly_get_object</div>
<p />
</div> <a name="api:mono_param_get_objects"></a>
<div class="api">
<div class="api-entry">mono_param_get_objects</div>
<div class="prototype">Prototype: mono_param_get_objects</div>
<p />
</div> <a name="api:mono_field_get_object"></a>
<div class="api">
<div class="api-entry">mono_field_get_object</div>
<div class="prototype">Prototype: mono_field_get_object</div>
<p />
</div> <a name="api:mono_property_get_object"></a>
<div class="api">
<div class="api-entry">mono_property_get_object</div>
<div class="prototype">Prototype: mono_property_get_object</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-security.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h3>Security Manager</h3>
<a name="api:mono_get_context_capture_method"></a>
<div class="api">
<div class="api-entry">mono_get_context_capture_method</div>
<div class="prototype">Prototype: mono_get_context_capture_method</div>
<p />
</div><h3>Declarative Security</h3>
<a name="api:mono_declsec_flags_from_assembly"></a>
<div class="api">
<div class="api-entry">mono_declsec_flags_from_assembly</div>
<div class="prototype">Prototype: mono_declsec_flags_from_assembly</div>
<p />
</div> <a name="api:mono_declsec_flags_from_class"></a>
<div class="api">
<div class="api-entry">mono_declsec_flags_from_class</div>
<div class="prototype">Prototype: mono_declsec_flags_from_class</div>
<p />
</div> <a name="api:mono_declsec_flags_from_method"></a>
<div class="api">
<div class="api-entry">mono_declsec_flags_from_method</div>
<div class="prototype">Prototype: mono_declsec_flags_from_method</div>
<p />
</div> <a name="api:mono_declsec_get_assembly_action"></a>
<div class="api">
<div class="api-entry">mono_declsec_get_assembly_action</div>
<div class="prototype">Prototype: mono_declsec_get_assembly_action</div>
<p />
</div> <a name="api:mono_declsec_get_class_action"></a>
<div class="api">
<div class="api-entry">mono_declsec_get_class_action</div>
<div class="prototype">Prototype: mono_declsec_get_class_action</div>
<p />
</div> <a name="api:mono_declsec_get_demands"></a>
<div class="api">
<div class="api-entry">mono_declsec_get_demands</div>
<div class="prototype">Prototype: mono_declsec_get_demands</div>
<p />
</div> <a name="api:mono_declsec_get_inheritdemands_class"></a>
<div class="api">
<div class="api-entry">mono_declsec_get_inheritdemands_class</div>
<div class="prototype">Prototype: mono_declsec_get_inheritdemands_class</div>
<p />
</div> <a name="api:mono_declsec_get_inheritdemands_method"></a>
<div class="api">
<div class="api-entry">mono_declsec_get_inheritdemands_method</div>
<div class="prototype">Prototype: mono_declsec_get_inheritdemands_method</div>
<p />
</div> <a name="api:mono_declsec_get_linkdemands"></a>
<div class="api">
<div class="api-entry">mono_declsec_get_linkdemands</div>
<div class="prototype">Prototype: mono_declsec_get_linkdemands</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,405 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-string.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Strings</h2>
<p />Strings representation inside the Mono runtime.
<h3>Synopsis</h3>
<div class="header">
#include &lt;metadata/object.h&gt;
typedef struct {
MonoObject object;
gint32 length;
gunichar2 chars [0];
} MonoString;
MonoString* <a href="#api:mono_string_new">mono_string_new</a> (MonoDomain *domain,
const char *text);
MonoString* <a href="#api:mono_string_new_len">mono_string_new_len</a> (MonoDomain *domain,
const char *text,
guint length);
MonoString* <a href="#api:mono_string_new_size">mono_string_new_size</a> (MonoDomain *domain,
gint32 len);
MonoString* <a href="#api:mono_string_new_utf16">mono_string_new_utf16</a> (MonoDomain *domain,
const guint16 *text,
gint32 len);
MonoString* <a href="#api:mono_string_from_utf16">mono_string_from_utf16</a> (gunichar2 *data);
mono_unichar2* <a href="#api:mono_string_to_utf16">mono_string_to_utf16</a> (MonoString *s);
char* <a href="#api:mono_string_to_utf8">mono_string_to_utf8</a> (MonoString *s);
gboolean <a href="#api:mono_string_equal">mono_string_equal</a> (MonoString *s1,
MonoString *s2);
guint <a href="#api:mono_string_hash">mono_string_hash</a> (MonoString *s);
MonoString* <a href="#api:mono_string_intern">mono_string_intern</a> (MonoString *str);
MonoString* <a href="#api:mono_string_is_interned">mono_string_is_interned</a> (MonoString *o);
MonoString* <a href="#api:mono_string_new_wrapper">mono_string_new_wrapper</a> (const char *text);
gunichar2* <a href="#api:mono_string_chars">mono_string_chars</a> (MonoString *s);
int <a href="#api:mono_string_length">mono_string_length</a> (MonoString *s);
gunichar2* <a href="#api:mono_unicode_from_external">mono_unicode_from_external</a> (const gchar *in,
gsize *bytes);
<a href="#api:mono_unicode_to_external"></a>
<a href="#api:mono_utf8_from_external"></a>
</div>
<p />All of the operations on strings are done on pointers to
MonoString objects, like this:
<div class="code">
MonoString *hello = mono_string_new (mono_domain_get (), &quot;hello, world&quot;);
</div>
<p />Strings are bound to a particular application domain, which
is why it is necessary to pass a MonoDomain argument as the
first parameter to all the constructor functions.
<p />Typically, you want to create the strings on the current
application domain, so a call to <tt>mono_domain_get()</tt> is
sufficient.
<h3>Constructors</h3>
<a name="api:mono_string_new"></a>
<div class="api">
<div class="api-entry">mono_string_new</div>
<div class="prototype">MonoString*
mono_string_new (MonoDomain *domain, const char *text)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>text:</i></dt><dd> a pointer to an utf8 string</dd></blockquote>
<b>Returns</b>
<blockquote> A newly created string object which contains <i>text</i>.
</blockquote>
</div> <a name="api:mono_string_new_len"></a>
<div class="api">
<div class="api-entry">mono_string_new_len</div>
<div class="prototype">MonoString*
mono_string_new_len (MonoDomain *domain, const char *text, guint length)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>text:</i></dt><dd> a pointer to an utf8 string</dd><dt><i>length:</i></dt><dd> number of bytes in <i>text</i> to consider</dd></blockquote>
<b>Returns</b>
<blockquote> A newly created string object which contains <i>text</i>.
</blockquote>
</div> <a name="api:mono_string_new_size"></a>
<div class="api">
<div class="api-entry">mono_string_new_size</div>
<div class="prototype">MonoString*
mono_string_new_size (MonoDomain *domain, gint32 len)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>text:</i></dt><dd> a pointer to an utf16 string</dd><dt><i>len:</i></dt><dd> the length of the string</dd></blockquote>
<b>Returns</b>
<blockquote> A newly created string object of <i>len</i>
</blockquote>
</div> <a name="api:mono_string_new_utf16"></a>
<div class="api">
<div class="api-entry">mono_string_new_utf16</div>
<div class="prototype">MonoString*
mono_string_new_utf16 (MonoDomain *domain, const guint16 *text, gint32 len)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>text:</i></dt><dd> a pointer to an utf16 string</dd><dt><i>len:</i></dt><dd> the length of the string</dd></blockquote>
<b>Returns</b>
<blockquote> A newly created string object which contains <i>text</i>.
</blockquote>
</div> <a name="api:mono_string_from_utf16"></a>
<div class="api">
<div class="api-entry">mono_string_from_utf16</div>
<div class="prototype">MonoString*
mono_string_from_utf16 (gunichar2 *data)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>data:</i></dt><dd> the UTF16 string (LPWSTR) to convert</dd></blockquote>
<b>Returns</b>
<blockquote> a MonoString.
</blockquote>
<b>Remarks</b>
<p />
Converts a NULL terminated UTF16 string (LPWSTR) to a MonoString.
</div><h3>Conversions</h3>
<a name="api:mono_string_to_utf16"></a>
<div class="api">
<div class="api-entry">mono_string_to_utf16</div>
<div class="prototype">mono_unichar2*
mono_string_to_utf16 (MonoString *s)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>s:</i></dt><dd> a MonoString</dd></blockquote>
<b>Remarks</b>
<p />
Return an null-terminated array of the utf-16 chars
contained in <i>s</i>. The result must be freed with g_free().
This is a temporary helper until our string implementation
is reworked to always include the null terminating char.
</div> <a name="api:mono_string_to_utf8"></a>
<div class="api">
<div class="api-entry">mono_string_to_utf8</div>
<div class="prototype">char*
mono_string_to_utf8 (MonoString *s)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>s:</i></dt><dd> a System.String</dd></blockquote>
<b>Remarks</b>
<p />
Returns the UTF8 representation for <i>s</i>.
The resulting buffer needs to be freed with mono_free().
<i>deprecated</i> Use mono_string_to_utf8_checked to avoid having an exception arbritraly raised.
</div><h3>Methods</h3>
<a name="api:mono_string_equal"></a>
<div class="api">
<div class="api-entry">mono_string_equal</div>
<div class="prototype">gboolean
mono_string_equal (MonoString *s1, MonoString *s2)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>s1:</i></dt><dd> First string to compare</dd><dt><i>s2:</i></dt><dd> Second string to compare</dd></blockquote>
<b>Remarks</b>
<p />
Returns FALSE if the strings differ.
</div> <a name="api:mono_string_hash"></a>
<div class="api">
<div class="api-entry">mono_string_hash</div>
<div class="prototype">guint
mono_string_hash (MonoString *s)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>s:</i></dt><dd> the string to hash</dd></blockquote>
<b>Remarks</b>
<p />
Returns the hash for the string.
</div> <a name="api:mono_string_intern"></a>
<div class="api">
<div class="api-entry">mono_string_intern</div>
<div class="prototype">MonoString*
mono_string_intern (MonoString *str)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>o:</i></dt><dd> String to intern</dd></blockquote>
<b>Returns</b>
<blockquote> The interned string.
</blockquote>
<b>Remarks</b>
<p />
Interns the string passed.
</div> <a name="api:mono_string_is_interned"></a>
<div class="api">
<div class="api-entry">mono_string_is_interned</div>
<div class="prototype">MonoString*
mono_string_is_interned (MonoString *o)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>o:</i></dt><dd> String to probe</dd></blockquote>
<b>Remarks</b>
<p />
Returns whether the string has been interned.
</div> <a name="api:mono_string_new_wrapper"></a>
<div class="api">
<div class="api-entry">mono_string_new_wrapper</div>
<div class="prototype">MonoString*
mono_string_new_wrapper (const char *text)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>text:</i></dt><dd> pointer to utf8 characters.</dd></blockquote>
<b>Remarks</b>
<p />
Helper function to create a string object from <i>text</i> in the current domain.
</div> <a name="api:mono_string_chars"></a>
<div class="api">
<div class="api-entry">mono_string_chars</div>
<div class="prototype">gunichar2*
mono_string_chars (MonoString *s)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>s:</i></dt><dd> a MonoString</dd></blockquote>
<b>Remarks</b>
<p />
Returns a pointer to the UCS16 characters stored in the MonoString
</div> <a name="api:mono_string_length"></a>
<div class="api">
<div class="api-entry">mono_string_length</div>
<div class="prototype">int
mono_string_length (MonoString *s)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>s:</i></dt><dd> MonoString</dd></blockquote>
<b>Remarks</b>
<p />
Returns the lenght in characters of the string
</div><h3>Other Encodings</h3>
<p />These routines are used when coping with strings that come
from Mono's environment, and might be encoded in one or more
of the external encodings.
<p />For example, some file systems might historically contain a
mix of file names with both old and new encodings, typically
UTF8 for new files, and the old files would be encoded in an 8
bit character set (ISO-8859-1 for example).
<p />These routines try a number of encodings, those specified
in the <tt>MONO_ENCODINGS</tt> environment variable and return
unicode strings that can be used internally.
<p />See the mono(1) man page for more details.
<a name="api:mono_unicode_from_external"></a>
<div class="api">
<div class="api-entry">mono_unicode_from_external</div>
<div class="prototype">gunichar2*
mono_unicode_from_external (const gchar *in, gsize *bytes)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>in:</i></dt><dd> pointers to the buffer.</dd><dt><i>bytes:</i></dt><dd> number of bytes in the string.</dd></blockquote>
<b>Remarks</b>
<p />
Tries to turn a NULL-terminated string into UTF16.
First, see if it's valid UTF8, in which case just turn it directly
into UTF16. Next, run through the colon-separated encodings in
MONO_EXTERNAL_ENCODINGS and do an iconv conversion on each,
returning the first successful conversion to UTF16. If no
conversion succeeds, return NULL.
Callers must free the returned string if not NULL. bytes holds the number
of bytes in the returned string, not including the terminator.
</div> <a name="api:mono_unicode_to_external"></a>
<div class="api">
<div class="api-entry">mono_unicode_to_external</div>
<div class="prototype">gchar*mono_unicode_to_external (const gunichar2 *uni)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>uni:</i></dt><dd> an UTF16 string to conver to an external representation.</dd></blockquote>
<b>Remarks</b>
<p />
Turns NULL-terminated UTF16 into either UTF8, or the first
working item in MONO_EXTERNAL_ENCODINGS if set. If no conversions
work, then UTF8 is returned.
Callers must free the returned string.
</div></body>
</html>
</span>

View File

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-threads.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Working with threads</h2>
<h3>Thread API</h3>
<a name="api:mono_thread_attach"></a>
<div class="api">
<div class="api-entry">mono_thread_attach</div>
<div class="prototype">Prototype: mono_thread_attach</div>
<p />
</div> <a name="api:mono_thread_create"></a>
<div class="api">
<div class="api-entry">mono_thread_create</div>
<div class="prototype">Prototype: mono_thread_create</div>
<p />
</div> <a name="api:mono_thread_current"></a>
<div class="api">
<div class="api-entry">mono_thread_current</div>
<div class="prototype">Prototype: mono_thread_current</div>
<p />
</div> <a name="api:mono_thread_detach"></a>
<div class="api">
<div class="api-entry">mono_thread_detach</div>
<div class="prototype">Prototype: mono_thread_detach</div>
<p />
</div> <a name="api:mono_thread_exit"></a>
<div class="api">
<div class="api-entry">mono_thread_exit</div>
<div class="prototype">Prototype: mono_thread_exit</div>
<p />
</div> <a name="api:mono_thread_manage"></a>
<div class="api">
<div class="api-entry">mono_thread_manage</div>
<div class="prototype">Prototype: mono_thread_manage</div>
<p />
</div> <a name="api:mono_thread_new_init"></a>
<div class="api">
<div class="api-entry">mono_thread_new_init</div>
<div class="prototype">Prototype: mono_thread_new_init</div>
<p />
</div> <a name="api:mono_threads_get_default_stacksize"></a>
<div class="api">
<div class="api-entry">mono_threads_get_default_stacksize</div>
<div class="prototype">Prototype: mono_threads_get_default_stacksize</div>
<p />
</div> <a name="api:mono_threads_install_cleanup"></a>
<div class="api">
<div class="api-entry">mono_threads_install_cleanup</div>
<div class="prototype">Prototype: mono_threads_install_cleanup</div>
<p />
</div> <a name="api:mono_threads_set_default_stacksize"></a>
<div class="api">
<div class="api-entry">mono_threads_set_default_stacksize</div>
<div class="prototype">Prototype: mono_threads_set_default_stacksize</div>
<p />
</div> <a name="api:mono_thread_stop"></a>
<div class="api">
<div class="api-entry">mono_thread_stop</div>
<div class="prototype">Prototype: mono_thread_stop</div>
<p />
</div> <a name="api:mono_thread_get_main"></a>
<div class="api">
<div class="api-entry">mono_thread_get_main</div>
<div class="prototype">Prototype: mono_thread_get_main</div>
<p />
</div> <a name="api:mono_thread_set_main"></a>
<div class="api">
<div class="api-entry">mono_thread_set_main</div>
<div class="prototype">void
mono_thread_set_main (MonoThread *thread)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>thread:</i></dt><dd> thread to set as the main thread</dd></blockquote>
<b>Remarks</b>
<p />
This function can be used to instruct the runtime to treat <i>thread</i>
as the main thread, ie, the thread that would normally execute the Main()
method. This basically means that at the end of <i>thread</i>, the runtime will
wait for the existing foreground threads to quit and other such details.
</div> <a name="api:mono_pthread_key_for_tls"></a>
<div class="api">
<div class="api-entry">mono_pthread_key_for_tls</div>
<div class="prototype">Prototype: mono_pthread_key_for_tls</div>
<p />
</div><h3>Monitors</h3>
<a name="api:mono_monitor_enter"></a>
<div class="api">
<div class="api-entry">mono_monitor_enter</div>
<div class="prototype">Prototype: mono_monitor_enter</div>
<p />
</div> <a name="api:mono_monitor_exit"></a>
<div class="api">
<div class="api-entry">mono_monitor_exit</div>
<div class="prototype">Prototype: mono_monitor_exit</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,274 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-type.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Type support</h2>
<h3>Synopsis</h3>
<div class="header">
#include &lt;metadata/metadata.h&gt;
#include &lt;metadata/class.h&gt;
typedef struct _MonoType MonoType;
<a href="#api:mono_type_get_object"></a>
<a href="#api:mono_type_create_from_typespec"></a>
<a href="#api:mono_type_full_name"></a>
MonoArrayType* <a href="#api:mono_type_get_array_type">mono_type_get_array_type</a> (MonoType *type);
MonoClass* <a href="#api:mono_type_get_class">mono_type_get_class</a> (MonoType *type);
<a href="#api:mono_type_get_desc"></a>
<a href="#api:mono_type_get_modifiers"></a>
char* <a href="#api:mono_type_get_name">mono_type_get_name</a> (MonoType *type);
MonoMethodSignature* <a href="#api:mono_type_get_signature">mono_type_get_signature</a> (MonoType *type);
int <a href="#api:mono_type_get_type">mono_type_get_type</a> (MonoType *type);
<a href="#api:mono_type_get_underlying_type"></a>
gboolean <a href="#api:mono_type_is_byref">mono_type_is_byref</a> (MonoType *type);
<a href="#api:mono_type_size"></a>
<a href="#api:mono_type_stack_size"></a>
guint32 <a href="#api:mono_type_to_unmanaged">mono_type_to_unmanaged</a> (MonoType *type,
MonoMarshalSpec *mspec,
gboolean as_field;
<a href="#api:mono_type_generic_inst_is_valuetype"></a>
</div>
<p />The MonoType represents the unmanaged version of
System.Type.
<a name="api:mono_type_get_object"></a>
<div class="api">
<div class="api-entry">mono_type_get_object</div>
<div class="prototype">Prototype: mono_type_get_object</div>
<p />
</div> <a name="api:mono_type_create_from_typespec"></a>
<div class="api">
<div class="api-entry">mono_type_create_from_typespec</div>
<div class="prototype">Prototype: mono_type_create_from_typespec</div>
<p />
</div> <a name="api:mono_type_full_name"></a>
<div class="api">
<div class="api-entry">mono_type_full_name</div>
<div class="prototype">Prototype: mono_type_full_name</div>
<p />
</div> <a name="api:mono_type_get_array_type"></a>
<div class="api">
<div class="api-entry">mono_type_get_array_type</div>
<div class="prototype">MonoArrayType*
mono_type_get_array_type (MonoType *type)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type:</i></dt><dd> the MonoType operated on</dd></blockquote>
<b>Returns</b>
<blockquote> a MonoArrayType struct describing the array type that <i>type</i>
represents. The info includes details such as rank, array element type
and the sizes and bounds of multidimensional arrays.</blockquote>
<b>Remarks</b>
<p />
It is only valid to call this function if <i>type</i> is a MONO_TYPE_ARRAY.
</div> <a name="api:mono_type_get_class"></a>
<div class="api">
<div class="api-entry">mono_type_get_class</div>
<div class="prototype">MonoClass*
mono_type_get_class (MonoType *type)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type:</i></dt><dd> the MonoType operated on</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoClass pointer that describes the class that <i>type</i> represents.
</blockquote>
<b>Remarks</b>
<p />
It is only valid to call this function if <i>type</i> is a MONO_TYPE_CLASS or a
MONO_TYPE_VALUETYPE. For more general functionality, use mono_class_from_mono_type (),
instead
</div> <a name="api:mono_type_get_desc"></a>
<div class="api">
<div class="api-entry">mono_type_get_desc</div>
<div class="prototype">Prototype: mono_type_get_desc</div>
<p />
</div> <a name="api:mono_type_get_modifiers"></a>
<div class="api">
<div class="api-entry">mono_type_get_modifiers</div>
<div class="prototype">Prototype: mono_type_get_modifiers</div>
<p />
</div> <a name="api:mono_type_get_name"></a>
<div class="api">
<div class="api-entry">mono_type_get_name</div>
<div class="prototype">char*
mono_type_get_name (MonoType *type)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type:</i></dt><dd> a type</dd></blockquote>
<b>Returns</b>
<blockquote> the string representation for type as it would be represented in IL code.
</blockquote>
</div> <a name="api:mono_type_get_signature"></a>
<div class="api">
<div class="api-entry">mono_type_get_signature</div>
<div class="prototype">MonoMethodSignature*
mono_type_get_signature (MonoType *type)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type:</i></dt><dd> the MonoType operated on</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoMethodSignature pointer that describes the signature
of the function pointer <i>type</i> represents.</blockquote>
<b>Remarks</b>
<p />
It is only valid to call this function if <i>type</i> is a MONO_TYPE_FNPTR.
</div> <a name="api:mono_type_get_type"></a>
<div class="api">
<div class="api-entry">mono_type_get_type</div>
<div class="prototype">int
mono_type_get_type (MonoType *type)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type:</i></dt><dd> the MonoType operated on</dd></blockquote>
<b>Returns</b>
<blockquote> the IL type value for <i>type</i>. This is one of the MonoTypeEnum
enum members like MONO_TYPE_I4 or MONO_TYPE_STRING.</blockquote>
</div> <a name="api:mono_type_get_underlying_type"></a>
<div class="api">
<div class="api-entry">mono_type_get_underlying_type</div>
<div class="prototype">Prototype: mono_type_get_underlying_type</div>
<p />
</div> <a name="api:mono_type_is_byref"></a>
<div class="api">
<div class="api-entry">mono_type_is_byref</div>
<div class="prototype">gboolean
mono_type_is_byref (MonoType *type)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>type:</i></dt><dd> the MonoType operated on</dd></blockquote>
<b>Returns</b>
<blockquote> <i>TRUE</i> if <i>type</i> represents a type passed by reference,
<i>FALSE</i> otherwise.</blockquote>
</div> <a name="api:mono_type_size"></a>
<div class="api">
<div class="api-entry">mono_type_size</div>
<div class="prototype">Prototype: mono_type_size</div>
<p />
</div> <a name="api:mono_type_stack_size"></a>
<div class="api">
<div class="api-entry">mono_type_stack_size</div>
<div class="prototype">Prototype: mono_type_stack_size</div>
<p />
</div> <a name="api:mono_type_to_unmanaged"></a>
<div class="api">
<div class="api-entry">mono_type_to_unmanaged</div>
<div class="prototype">guint32
mono_type_to_unmanaged (MonoType *type, MonoMarshalSpec *mspec, gboolean as_field,
gboolean unicode, MonoMarshalConv *conv)
</div>
<p />
<b>Returns</b>
<blockquote> A MonoMarshalNative enumeration value (MONO_NATIVE_) value
describing the underlying native reprensetation of the type.
<p />
In addition the value pointed by
&quot;conv&quot; will contain the kind of marshalling required for this
particular type one of the MONO_MARSHAL_CONV_ enumeration values.</blockquote>
</div></body>
</html>
</span>

View File

@ -0,0 +1,201 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-types.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h3>Common core types</h3>
<p />These are accesor methods to retrieve the <tt>MonoClass
*</tt> handle for the various built-in CLI types.
<a name="api:mono_get_object_class"></a>
<div class="api">
<div class="api-entry">mono_get_object_class</div>
<div class="prototype">Prototype: mono_get_object_class</div>
<p />
</div> <a name="api:mono_get_int16_class"></a>
<div class="api">
<div class="api-entry">mono_get_int16_class</div>
<div class="prototype">Prototype: mono_get_int16_class</div>
<p />
</div> <a name="api:mono_get_int32_class"></a>
<div class="api">
<div class="api-entry">mono_get_int32_class</div>
<div class="prototype">Prototype: mono_get_int32_class</div>
<p />
</div> <a name="api:mono_get_int64_class"></a>
<div class="api">
<div class="api-entry">mono_get_int64_class</div>
<div class="prototype">Prototype: mono_get_int64_class</div>
<p />
</div> <a name="api:mono_get_double_class"></a>
<div class="api">
<div class="api-entry">mono_get_double_class</div>
<div class="prototype">Prototype: mono_get_double_class</div>
<p />
</div> <a name="api:mono_get_enum_class"></a>
<div class="api">
<div class="api-entry">mono_get_enum_class</div>
<div class="prototype">Prototype: mono_get_enum_class</div>
<p />
</div> <a name="api:mono_get_intptr_class"></a>
<div class="api">
<div class="api-entry">mono_get_intptr_class</div>
<div class="prototype">Prototype: mono_get_intptr_class</div>
<p />
</div> <a name="api:mono_get_sbyte_class"></a>
<div class="api">
<div class="api-entry">mono_get_sbyte_class</div>
<div class="prototype">Prototype: mono_get_sbyte_class</div>
<p />
</div> <a name="api:mono_get_single_class"></a>
<div class="api">
<div class="api-entry">mono_get_single_class</div>
<div class="prototype">Prototype: mono_get_single_class</div>
<p />
</div> <a name="api:mono_get_string_class"></a>
<div class="api">
<div class="api-entry">mono_get_string_class</div>
<div class="prototype">Prototype: mono_get_string_class</div>
<p />
</div> <a name="api:mono_get_thread_class"></a>
<div class="api">
<div class="api-entry">mono_get_thread_class</div>
<div class="prototype">Prototype: mono_get_thread_class</div>
<p />
</div> <a name="api:mono_get_uint16_class"></a>
<div class="api">
<div class="api-entry">mono_get_uint16_class</div>
<div class="prototype">Prototype: mono_get_uint16_class</div>
<p />
</div> <a name="api:mono_get_uint32_class"></a>
<div class="api">
<div class="api-entry">mono_get_uint32_class</div>
<div class="prototype">Prototype: mono_get_uint32_class</div>
<p />
</div> <a name="api:mono_get_uint64_class"></a>
<div class="api">
<div class="api-entry">mono_get_uint64_class</div>
<div class="prototype">Prototype: mono_get_uint64_class</div>
<p />
</div> <a name="api:mono_get_uintptr_class"></a>
<div class="api">
<div class="api-entry">mono_get_uintptr_class</div>
<div class="prototype">Prototype: mono_get_uintptr_class</div>
<p />
</div> <a name="api:mono_get_void_class"></a>
<div class="api">
<div class="api-entry">mono_get_void_class</div>
<div class="prototype">Prototype: mono_get_void_class</div>
<p />
</div> <a name="api:mono_get_array_class"></a>
<div class="api">
<div class="api-entry">mono_get_array_class</div>
<div class="prototype">Prototype: mono_get_array_class</div>
<p />
</div> <a name="api:mono_get_boolean_class"></a>
<div class="api">
<div class="api-entry">mono_get_boolean_class</div>
<div class="prototype">Prototype: mono_get_boolean_class</div>
<p />
</div> <a name="api:mono_get_byte_class"></a>
<div class="api">
<div class="api-entry">mono_get_byte_class</div>
<div class="prototype">Prototype: mono_get_byte_class</div>
<p />
</div> <a name="api:mono_get_char_class"></a>
<div class="api">
<div class="api-entry">mono_get_char_class</div>
<div class="prototype">Prototype: mono_get_char_class</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,510 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-unsorted.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<a name="api:mono_bounded_array_class_get"></a>
<div class="api">
<div class="api-entry">mono_bounded_array_class_get</div>
<div class="prototype">MonoClass*
mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>element_class:</i></dt><dd> element class </dd><dt><i>rank:</i></dt><dd> the dimension of the array class</dd><dt><i>bounded:</i></dt><dd> whenever the array has non-zero bounds</dd></blockquote>
<b>Returns</b>
<blockquote> a class object describing the array with element type <i>element_type</i> and
dimension <i>rank</i>. </blockquote>
</div> <a name="api:mono_check_corlib_version"></a>
<div class="api">
<div class="api-entry">mono_check_corlib_version</div>
<div class="prototype">const char*
mono_check_corlib_version (void)
</div>
<p />
<b>Returns</b>
<blockquote> NULL if the runtime will work with the corlib, or a g_malloc
allocated string with the error otherwise.</blockquote>
<b>Remarks</b>
<p />
Checks that the corlib that is loaded matches the version of this runtime.
</div> <a name="api:mono_compile_method"></a>
<div class="api">
<div class="api-entry">mono_compile_method</div>
<div class="prototype">gpointer
mono_compile_method (MonoMethod *method)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>method:</i></dt><dd> The method to compile.</dd></blockquote>
<b>Remarks</b>
<p />
This JIT-compiles the method, and returns the pointer to the native code
produced.
</div> <a name="api:mono_config_for_assembly"></a>
<div class="api">
<div class="api-entry">mono_config_for_assembly</div>
<div class="prototype">Prototype: mono_config_for_assembly</div>
<p />
</div> <a name="api:mono_dllmap_insert"></a>
<div class="api">
<div class="api-entry">mono_dllmap_insert</div>
<div class="prototype">void
mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, const char *tdll, const char *tfunc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>assembly:</i></dt><dd> if NULL, this is a global mapping, otherwise the remapping of the dynamic library will only apply to the specified assembly</dd><dt><i>dll:</i></dt><dd> The name of the external library, as it would be found in the DllImport declaration. If prefixed with 'i:' the matching of the library name is done without case sensitivity</dd><dt><i>func:</i></dt><dd> if not null, the mapping will only applied to the named function (the value of EntryPoint)</dd><dt><i>tdll:</i></dt><dd> The name of the library to map the specified <i>dll</i> if it matches.</dd><dt><i>tfunc:</i></dt><dd> if func is not NULL, the name of the function that replaces the invocation</dd></blockquote>
<b>Remarks</b>
<p />
LOCKING: Acquires the loader lock.
This function is used to programatically add DllImport remapping in either
a specific assembly, or as a global remapping. This is done by remapping
references in a DllImport attribute from the <i>dll</i> library name into the <i>tdll</i>
name. If the <i>dll</i> name contains the prefix &quot;i:&quot;, the comparison of the
library name is done without case sensitivity.
If you pass <i>func</i>, this is the name of the EntryPoint in a DllImport if specified
or the name of the function as determined by DllImport. If you pass <i>func</i>, you
must also pass <i>tfunc</i> which is the name of the target function to invoke on a match.
Example:
mono_dllmap_insert (NULL, &quot;i:libdemo.dll&quot;, NULL, relocated_demo_path, NULL);
The above will remap DllImport statments for &quot;libdemo.dll&quot; and &quot;LIBDEMO.DLL&quot; to
the contents of relocated_demo_path for all assemblies in the Mono process.
NOTE: This can be called before the runtime is initialized, for example from
mono_config_parse ().
</div> <a name="api:mono_environment_exitcode_get"></a>
<div class="api">
<div class="api-entry">mono_environment_exitcode_get</div>
<div class="prototype">Prototype: mono_environment_exitcode_get</div>
<p />
</div> <a name="api:mono_environment_exitcode_set"></a>
<div class="api">
<div class="api-entry">mono_environment_exitcode_set</div>
<div class="prototype">Prototype: mono_environment_exitcode_set</div>
<p />
</div> <a name="api:mono_free_method"></a>
<div class="api">
<div class="api-entry">mono_free_method</div>
<div class="prototype">Prototype: mono_free_method</div>
<p />
</div> <a name="api:mono_free_verify_list"></a>
<div class="api">
<div class="api-entry">mono_free_verify_list</div>
<div class="prototype">Prototype: mono_free_verify_list</div>
<p />
</div> <a name="api:mono_get_config_dir"></a>
<div class="api">
<div class="api-entry">mono_get_config_dir</div>
<div class="prototype">Prototype: mono_get_config_dir</div>
<p />
</div> <a name="api:mono_get_corlib"></a>
<div class="api">
<div class="api-entry">mono_get_corlib</div>
<div class="prototype">Prototype: mono_get_corlib</div>
<p />
</div> <a name="api:mono_get_delegate_invoke"></a>
<div class="api">
<div class="api-entry">mono_get_delegate_invoke</div>
<div class="prototype">MonoMethod*
mono_get_delegate_invoke (MonoClass *klass)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>klass:</i></dt><dd> The delegate class</dd></blockquote>
<b>Returns</b>
<blockquote> the MonoMethod for the &quot;Invoke&quot; method in the delegate klass or NULL if <i>klass</i> is a broken delegate type
</blockquote>
</div> <a name="api:mono_get_method_full"></a>
<div class="api">
<div class="api-entry">mono_get_method_full</div>
<div class="prototype">Prototype: mono_get_method_full</div>
<p />
</div> <a name="api:mono_get_method"></a>
<div class="api">
<div class="api-entry">mono_get_method</div>
<div class="prototype">Prototype: mono_get_method</div>
<p />
</div> <a name="api:mono_get_root_domain"></a>
<div class="api">
<div class="api-entry">mono_get_root_domain</div>
<div class="prototype">MonoDomain*
mono_get_root_domain (void)
</div>
<p />
<b>Returns</b>
<blockquote> the root appdomain, to obtain the current domain, use mono_domain_get ()
</blockquote>
<b>Remarks</b>
<p />
The root AppDomain is the initial domain created by the runtime when it is
initialized. Programs execute on this AppDomain, but can create new ones
later. Currently there is no unmanaged API to create new AppDomains, this
must be done from managed code.
</div> <a name="api:mono_init_from_assembly"></a>
<div class="api">
<div class="api-entry">mono_init_from_assembly</div>
<div class="prototype">MonoDomain*
mono_init_from_assembly (const char *domain_name, const char *filename)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain_name:</i></dt><dd> name to give to the initial domain</dd><dt><i>filename:</i></dt><dd> filename to load on startup</dd></blockquote>
<b>Returns</b>
<blockquote> the initial domain.
</blockquote>
<b>Remarks</b>
<p />
Used by the runtime, users should use mono_jit_init instead.
Creates the initial application domain and initializes the mono_defaults
structure.
This function is guaranteed to not run any IL code.
The runtime is initialized using the runtime version required by the
provided executable. The version is determined by looking at the exe
configuration file and the version PE field)
</div> <a name="api:mono_init"></a>
<div class="api">
<div class="api-entry">mono_init</div>
<div class="prototype">MonoDomain*
mono_init (const char *domain_name)
</div>
<p />
<b>Returns</b>
<blockquote> the initial domain.
</blockquote>
<b>Remarks</b>
<p /> <p />
Creates the initial application domain and initializes the mono_defaults
structure.
This function is guaranteed to not run any IL code.
The runtime is initialized using the default runtime version.
</div> <a name="api:mono_init_version"></a>
<div class="api">
<div class="api-entry">mono_init_version</div>
<div class="prototype">MonoDomain*
mono_init_version (const char *domain_name, const char *version)
</div>
<p />
<b>Returns</b>
<blockquote> the initial domain.
</blockquote>
<b>Remarks</b>
<p /> <p />
Used by the runtime, users should use mono_jit_init instead.
<p />
Creates the initial application domain and initializes the mono_defaults
structure.
This function is guaranteed to not run any IL code.
The runtime is initialized using the provided rutime version.
</div> <a name="api:mono_jit_exec"></a>
<div class="api">
<div class="api-entry">mono_jit_exec</div>
<div class="prototype">int
mono_jit_exec (MonoDomain *domain, MonoAssembly *assembly, int argc, char *argv[])
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>assembly:</i></dt><dd> reference to an assembly</dd><dt><i>argc:</i></dt><dd> argument count</dd><dt><i>argv:</i></dt><dd> argument vector</dd></blockquote>
<b>Remarks</b>
<p />
Start execution of a program.
</div> <a name="api:mono_lookup_internal_call"></a>
<div class="api">
<div class="api-entry">mono_lookup_internal_call</div>
<div class="prototype">Prototype: mono_lookup_internal_call</div>
<p />
</div> <a name="api:mono_lookup_pinvoke_call"></a>
<div class="api">
<div class="api-entry">mono_lookup_pinvoke_call</div>
<div class="prototype">Prototype: mono_lookup_pinvoke_call</div>
<p />
</div> <a name="api:mono_main"></a>
<div class="api">
<div class="api-entry">mono_main</div>
<div class="prototype">int
mono_main (int argc, char* argv[])
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>argc:</i></dt><dd> number of arguments in the argv array</dd><dt><i>argv:</i></dt><dd> array of strings containing the startup arguments</dd></blockquote>
<b>Remarks</b>
<p />
Launches the Mono JIT engine and parses all the command line options
in the same way that the mono command line VM would.
</div> <a name="api:mono_parse_default_optimizations"></a>
<div class="api">
<div class="api-entry">mono_parse_default_optimizations</div>
<div class="prototype">Prototype: mono_parse_default_optimizations</div>
<p />
</div> <a name="api:mono_ptr_class_get"></a>
<div class="api">
<div class="api-entry">mono_ptr_class_get</div>
<div class="prototype">Prototype: mono_ptr_class_get</div>
<p />
</div> <a name="api:mono_register_bundled_assemblies"></a>
<div class="api">
<div class="api-entry">mono_register_bundled_assemblies</div>
<div class="prototype">Prototype: mono_register_bundled_assemblies</div>
<p />
</div> <a name="api:mono_runtime_class_init"></a>
<div class="api">
<div class="api-entry">mono_runtime_class_init</div>
<div class="prototype">Prototype: mono_runtime_class_init</div>
<p />
</div> <a name="api:mono_runtime_cleanup"></a>
<div class="api">
<div class="api-entry">mono_runtime_cleanup</div>
<div class="prototype">void
mono_runtime_cleanup (MonoDomain *domain)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> unused.</dd></blockquote>
<b>Remarks</b>
<p />
Internal routine.
This must not be called while there are still running threads executing
managed code.
</div> <a name="api:mono_runtime_get_main_args"></a>
<div class="api">
<div class="api-entry">mono_runtime_get_main_args</div>
<div class="prototype">MonoArray*
mono_runtime_get_main_args (void)
</div>
<p />
<b>Returns</b>
<blockquote> a MonoArray with the arguments passed to the main program
</blockquote>
</div> <a name="api:mono_runtime_init"></a>
<div class="api">
<div class="api-entry">mono_runtime_init</div>
<div class="prototype">void
mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
MonoThreadAttachCB attach_cb)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>domain:</i></dt><dd> domain returned by mono_init ()</dd></blockquote>
<b>Remarks</b>
<p />
Initialize the core AppDomain: this function will run also some
IL initialization code, so it needs the execution engine to be fully
operational.
AppDomain.SetupInformation is set up in mono_runtime_exec_main, where
we know the entry_assembly.
</div> <a name="api:mono_runtime_is_shutting_down"></a>
<div class="api">
<div class="api-entry">mono_runtime_is_shutting_down</div>
<div class="prototype">gboolean
mono_runtime_is_shutting_down (void)
</div>
<p />
<b>Remarks</b>
<p />
Returns whether the runtime has been flagged for shutdown.
This is consumed by the P:System.Environment.HasShutdownStarted
property.
</div> <a name="api:mono_runtime_object_init"></a>
<div class="api">
<div class="api-entry">mono_runtime_object_init</div>
<div class="prototype">Prototype: mono_runtime_object_init</div>
<p />
</div> <a name="api:mono_runtime_quit"></a>
<div class="api">
<div class="api-entry">mono_runtime_quit</div>
<div class="prototype">Prototype: mono_runtime_quit</div>
<p />
</div> <a name="api:mono_runtime_run_main"></a>
<div class="api">
<div class="api-entry">mono_runtime_run_main</div>
<div class="prototype">int
mono_runtime_run_main (MonoMethod *method, int argc, char* argv[],
MonoObject **exc)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>method:</i></dt><dd> the method to start the application with (usually Main)</dd><dt><i>argc:</i></dt><dd> number of arguments from the command line</dd><dt><i>argv:</i></dt><dd> array of strings from the command line</dd><dt><i>exc:</i></dt><dd> excetption results</dd></blockquote>
<b>Remarks</b>
<p />
Execute a standard Main() method (argc/argv contains the
executable name). This method also sets the command line argument value
needed by System.Environment.
<p />
</div> <a name="api:mono_table_info_get_rows"></a>
<div class="api">
<div class="api-entry">mono_table_info_get_rows</div>
<div class="prototype">Prototype: mono_table_info_get_rows</div>
<p />
</div> <a name="api:mono_upgrade_remote_class_wrapper"></a>
<div class="api">
<div class="api-entry">mono_upgrade_remote_class_wrapper</div>
<div class="prototype">Prototype: mono_upgrade_remote_class_wrapper</div>
<p />
</div> <a name="api:mono_verify_corlib"></a>
<div class="api">
<div class="api-entry">mono_verify_corlib</div>
<div class="prototype">Prototype: mono_verify_corlib</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,624 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-utils.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
<h2>Utility Methods</h2>
<h3>Bitsets</h3>
<p />MonoBitsets are a set of routines used to manipulate sets
of bits.
<a name="api:mono_bitset_alloc_size"></a>
<div class="api">
<div class="api-entry">mono_bitset_alloc_size</div>
<div class="prototype">Prototype: mono_bitset_alloc_size</div>
<p />
</div> <a name="api:mono_bitset_clear"></a>
<div class="api">
<div class="api-entry">mono_bitset_clear</div>
<div class="prototype">Prototype: mono_bitset_clear</div>
<p />
</div> <a name="api:mono_bitset_clear_all"></a>
<div class="api">
<div class="api-entry">mono_bitset_clear_all</div>
<div class="prototype">Prototype: mono_bitset_clear_all</div>
<p />
</div> <a name="api:mono_bitset_clone"></a>
<div class="api">
<div class="api-entry">mono_bitset_clone</div>
<div class="prototype">Prototype: mono_bitset_clone</div>
<p />
</div> <a name="api:mono_bitset_copyto"></a>
<div class="api">
<div class="api-entry">mono_bitset_copyto</div>
<div class="prototype">Prototype: mono_bitset_copyto</div>
<p />
</div> <a name="api:mono_bitset_count"></a>
<div class="api">
<div class="api-entry">mono_bitset_count</div>
<div class="prototype">Prototype: mono_bitset_count</div>
<p />
</div> <a name="api:mono_bitset_equal"></a>
<div class="api">
<div class="api-entry">mono_bitset_equal</div>
<div class="prototype">Prototype: mono_bitset_equal</div>
<p />
</div> <a name="api:mono_bitset_find_first"></a>
<div class="api">
<div class="api-entry">mono_bitset_find_first</div>
<div class="prototype">Prototype: mono_bitset_find_first</div>
<p />
</div> <a name="api:mono_bitset_find_last"></a>
<div class="api">
<div class="api-entry">mono_bitset_find_last</div>
<div class="prototype">Prototype: mono_bitset_find_last</div>
<p />
</div> <a name="api:mono_bitset_find_start"></a>
<div class="api">
<div class="api-entry">mono_bitset_find_start</div>
<div class="prototype">Prototype: mono_bitset_find_start</div>
<p />
</div> <a name="api:mono_bitset_foreach"></a>
<div class="api">
<div class="api-entry">mono_bitset_foreach</div>
<div class="prototype">Prototype: mono_bitset_foreach</div>
<p />
</div> <a name="api:mono_bitset_free"></a>
<div class="api">
<div class="api-entry">mono_bitset_free</div>
<div class="prototype">Prototype: mono_bitset_free</div>
<p />
</div> <a name="api:mono_bitset_intersection"></a>
<div class="api">
<div class="api-entry">mono_bitset_intersection</div>
<div class="prototype">Prototype: mono_bitset_intersection</div>
<p />
</div> <a name="api:mono_bitset_invert"></a>
<div class="api">
<div class="api-entry">mono_bitset_invert</div>
<div class="prototype">Prototype: mono_bitset_invert</div>
<p />
</div> <a name="api:mono_bitset_mem_new"></a>
<div class="api">
<div class="api-entry">mono_bitset_mem_new</div>
<div class="prototype">Prototype: mono_bitset_mem_new</div>
<p />
</div> <a name="api:mono_bitset_new"></a>
<div class="api">
<div class="api-entry">mono_bitset_new</div>
<div class="prototype">Prototype: mono_bitset_new</div>
<p />
</div> <a name="api:mono_bitset_set"></a>
<div class="api">
<div class="api-entry">mono_bitset_set</div>
<div class="prototype">Prototype: mono_bitset_set</div>
<p />
</div> <a name="api:mono_bitset_set_all"></a>
<div class="api">
<div class="api-entry">mono_bitset_set_all</div>
<div class="prototype">Prototype: mono_bitset_set_all</div>
<p />
</div> <a name="api:mono_bitset_size"></a>
<div class="api">
<div class="api-entry">mono_bitset_size</div>
<div class="prototype">Prototype: mono_bitset_size</div>
<p />
</div> <a name="api:mono_bitset_sub"></a>
<div class="api">
<div class="api-entry">mono_bitset_sub</div>
<div class="prototype">Prototype: mono_bitset_sub</div>
<p />
</div> <a name="api:mono_bitset_test"></a>
<div class="api">
<div class="api-entry">mono_bitset_test</div>
<div class="prototype">Prototype: mono_bitset_test</div>
<p />
</div> <a name="api:mono_bitset_test_bulk"></a>
<div class="api">
<div class="api-entry">mono_bitset_test_bulk</div>
<div class="prototype">Prototype: mono_bitset_test_bulk</div>
<p />
</div> <a name="api:mono_bitset_union"></a>
<div class="api">
<div class="api-entry">mono_bitset_union</div>
<div class="prototype">Prototype: mono_bitset_union</div>
<p />
</div> <a name="api:mono_bitset_find_first_unset"></a>
<div class="api">
<div class="api-entry">mono_bitset_find_first_unset</div>
<div class="prototype">Prototype: mono_bitset_find_first_unset</div>
<p />
</div> <a name="api:mono_bitset_intersection_2"></a>
<div class="api">
<div class="api-entry">mono_bitset_intersection_2</div>
<div class="prototype">Prototype: mono_bitset_intersection_2</div>
<p />
</div><h3>Hashtables</h3>
<p /><tt>GHashTable</tt> is used when you need to store object
references into a hashtable, objects stored in a
<tt>MonoGHashTable</tt> are properly tracked by the garbage
collector.
<p />The <tt>MonoGHashTable</tt> data type has the same API as
the GLIB.
<a name="api:mono_g_hash_table_destroy"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_destroy</div>
<div class="prototype">Prototype: mono_g_hash_table_destroy</div>
<p />
</div> <a name="api:mono_g_hash_table_foreach"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_foreach</div>
<div class="prototype">Prototype: mono_g_hash_table_foreach</div>
<p />
</div> <a name="api:mono_g_hash_table_foreach_remove"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_foreach_remove</div>
<div class="prototype">Prototype: mono_g_hash_table_foreach_remove</div>
<p />
</div> <a name="api:mono_g_hash_table_foreach_steal"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_foreach_steal</div>
<div class="prototype">Prototype: mono_g_hash_table_foreach_steal</div>
<p />
</div> <a name="api:mono_g_hash_table_insert"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_insert</div>
<div class="prototype">Prototype: mono_g_hash_table_insert</div>
<p />
</div> <a name="api:mono_g_hash_table_lookup"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_lookup</div>
<div class="prototype">Prototype: mono_g_hash_table_lookup</div>
<p />
</div> <a name="api:mono_g_hash_table_lookup_extended"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_lookup_extended</div>
<div class="prototype">Prototype: mono_g_hash_table_lookup_extended</div>
<p />
</div> <a name="api:mono_g_hash_table_new"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_new</div>
<div class="prototype">Prototype: mono_g_hash_table_new</div>
<p />
</div> <a name="api:mono_g_hash_table_new_full"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_new_full</div>
<div class="prototype">Prototype: mono_g_hash_table_new_full</div>
<p />
</div> <a name="api:mono_g_hash_table_remap"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_remap</div>
<div class="prototype">Prototype: mono_g_hash_table_remap</div>
<p />
</div> <a name="api:mono_g_hash_table_remove"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_remove</div>
<div class="prototype">Prototype: mono_g_hash_table_remove</div>
<p />
</div> <a name="api:mono_g_hash_table_replace"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_replace</div>
<div class="prototype">Prototype: mono_g_hash_table_replace</div>
<p />
</div> <a name="api:mono_g_hash_table_size"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_size</div>
<div class="prototype">Prototype: mono_g_hash_table_size</div>
<p />
</div> <a name="api:mono_g_hash_table_steal"></a>
<div class="api">
<div class="api-entry">mono_g_hash_table_steal</div>
<div class="prototype">Prototype: mono_g_hash_table_steal</div>
<p />
</div><h3>SHA1 Signatures</h3>
<a name="api:mono_sha1_init"></a>
<div class="api">
<div class="api-entry">mono_sha1_init</div>
<div class="prototype">Prototype: mono_sha1_init</div>
<p />
</div> <a name="api:mono_sha1_update"></a>
<div class="api">
<div class="api-entry">mono_sha1_update</div>
<div class="prototype">Prototype: mono_sha1_update</div>
<p />
</div> <a name="api:mono_sha1_get_digest_from_file"></a>
<div class="api">
<div class="api-entry">mono_sha1_get_digest_from_file</div>
<div class="prototype">Prototype: mono_sha1_get_digest_from_file</div>
<p />
</div> <a name="api:mono_sha1_get_digest"></a>
<div class="api">
<div class="api-entry">mono_sha1_get_digest</div>
<div class="prototype">Prototype: mono_sha1_get_digest</div>
<p />
</div> <a name="api:mono_sha1_final"></a>
<div class="api">
<div class="api-entry">mono_sha1_final</div>
<div class="prototype">Prototype: mono_sha1_final</div>
<p />
</div><h3>MD5 Signatures</h3>
<a name="api:mono_md5_init"></a>
<div class="api">
<div class="api-entry">mono_md5_init</div>
<div class="prototype">Prototype: mono_md5_init</div>
<p />
</div> <a name="api:mono_md5_update"></a>
<div class="api">
<div class="api-entry">mono_md5_update</div>
<div class="prototype">Prototype: mono_md5_update</div>
<p />
</div> <a name="api:mono_md5_get_digest_from_file"></a>
<div class="api">
<div class="api-entry">mono_md5_get_digest_from_file</div>
<div class="prototype">Prototype: mono_md5_get_digest_from_file</div>
<p />
</div> <a name="api:mono_md5_get_digest"></a>
<div class="api">
<div class="api-entry">mono_md5_get_digest</div>
<div class="prototype">Prototype: mono_md5_get_digest</div>
<p />
</div> <a name="api:mono_md5_final"></a>
<div class="api">
<div class="api-entry">mono_md5_final</div>
<div class="prototype">Prototype: mono_md5_final</div>
<p />
</div> <a name="api:mono_digest_get_public_token"></a>
<div class="api">
<div class="api-entry">mono_digest_get_public_token</div>
<div class="prototype">Prototype: mono_digest_get_public_token</div>
<p />
</div><h3>Memory Pools</h3>
<p />Memory pools are a convenient way of tracking memory
allocations that are used for one specific task, they are also
faster than using the standard memory allocation procedures,
as they are designed to be used only by a single thread at a
time.
<p /><tt>MonoMemPool</tt> objects are not thread safe, which
means that you should not share the objects across multiple
threads without providing proper locking around it (unlike
<tt>malloc</tt> and <tt>free</tt> which are thread safe).
<p />When a <tt>MonoMemPool</tt> is released with
<tt>mono_mempool_destroy</tt> all of the of the memory
allocated from that memory pool with
<tt>mono_mempool_alloc</tt> and <tt>mono_mempool_alloc0</tt>
is released.
<a name="api:mono_mempool_new"></a>
<div class="api">
<div class="api-entry">mono_mempool_new</div>
<div class="prototype">MonoMemPool*
mono_mempool_new (void)
</div>
<p />
<b>Returns</b>
<blockquote> a new memory pool.
</blockquote>
</div> <a name="api:mono_mempool_destroy"></a>
<div class="api">
<div class="api-entry">mono_mempool_destroy</div>
<div class="prototype">void
mono_mempool_destroy (MonoMemPool *pool)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>pool:</i></dt><dd> the memory pool to destroy</dd></blockquote>
<b>Remarks</b>
<p />
Free all memory associated with this pool.
</div> <a name="api:mono_mempool_alloc"></a>
<div class="api">
<div class="api-entry">mono_mempool_alloc</div>
<div class="prototype">gpointer
mono_mempool_alloc (MonoMemPool *pool, guint size)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>pool:</i></dt><dd> the momory pool to use</dd><dt><i>size:</i></dt><dd> size of the momory block</dd></blockquote>
<b>Returns</b>
<blockquote> the address of a newly allocated memory block.
</blockquote>
<b>Remarks</b>
<p />
Allocates a new block of memory in <i>pool</i>.
</div> <a name="api:mono_mempool_alloc0"></a>
<div class="api">
<div class="api-entry">mono_mempool_alloc0</div>
<div class="prototype">gpointer
mono_mempool_alloc0 (MonoMemPool *pool, guint size)
</div>
<p />
<b>Remarks</b>
<p />
same as mono_mempool_alloc, but fills memory with zero.
</div> <a name="api:mono_mempool_empty"></a>
<div class="api">
<div class="api-entry">mono_mempool_empty</div>
<div class="prototype">Prototype: mono_mempool_empty</div>
<p />
</div> <a name="api:mono_mempool_invalidate"></a>
<div class="api">
<div class="api-entry">mono_mempool_invalidate</div>
<div class="prototype">void
mono_mempool_invalidate (MonoMemPool *pool)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>pool:</i></dt><dd> the memory pool to invalidate</dd></blockquote>
<b>Remarks</b>
<p />
Fill the memory associated with this pool to 0x2a (42). Useful for debugging.
</div> <a name="api:mono_mempool_stats"></a>
<div class="api">
<div class="api-entry">mono_mempool_stats</div>
<div class="prototype">void
mono_mempool_stats (MonoMemPool *pool)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>pool:</i></dt><dd> the momory pool we need stats for</dd></blockquote>
<b>Remarks</b>
<p />
Print a few stats about the mempool
</div> <a name="api:mono_mempool_contains_addr"></a>
<div class="api">
<div class="api-entry">mono_mempool_contains_addr</div>
<div class="prototype">gboolean
mono_mempool_contains_addr (MonoMemPool *pool,
gpointer addr)
</div>
<p />
<b>Remarks</b>
<p />
Determines whenever ADDR is inside the memory used by the mempool.
</div><h3>JIT utilities</h3>
<a name="api:mono_signbit_double"></a>
<div class="api">
<div class="api-entry">mono_signbit_double</div>
<div class="prototype">Prototype: mono_signbit_double</div>
<p />
</div> <a name="api:mono_signbit_float"></a>
<div class="api">
<div class="api-entry">mono_signbit_float</div>
<div class="prototype">Prototype: mono_signbit_float</div>
<p />
</div><h3>Disassembling Generated Code</h3>
<p />Routines used to debug the JIT-produced code.
<a name="api:mono_disasm_code"></a>
<div class="api">
<div class="api-entry">mono_disasm_code</div>
<div class="prototype">Prototype: mono_disasm_code</div>
<p />
</div> <a name="api:mono_disasm_code_one"></a>
<div class="api">
<div class="api-entry">mono_disasm_code_one</div>
<div class="prototype">Prototype: mono_disasm_code_one</div>
<p />
</div><h3>Walking the Stack</h3>
<a name="api:mono_walk_stack"></a>
<div class="api">
<div class="api-entry">mono_walk_stack</div>
<div class="prototype">Prototype: mono_walk_stack</div>
<p />
</div> <a name="api:mono_stack_walk_no_il"></a>
<div class="api">
<div class="api-entry">mono_stack_walk_no_il</div>
<div class="prototype">Prototype: mono_stack_walk_no_il</div>
<p />
</div><h3>Others</h3>
<a name="api:mono_escape_uri_string"></a>
<div class="api">
<div class="api-entry">mono_escape_uri_string</div>
<div class="prototype">Prototype: mono_escape_uri_string</div>
<p />
</div></body>
</html>
</span>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?><span>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mono-api-vm.html</title>
<style type="text/css">
h3 {
font-size: 18px;
padding-bottom: 4pt;
border-bottom: 2px solid #dddddd;
}
.api {
border: 1px solid;
padding: 10pt;
margin: 10pt;
}
.api-entry {
border-bottom: none;
font-size: 18px;
}
.prototype {
border: 1px solid;
background-color: #f2f2f2;
padding: 5pt;
margin-top: 5pt;
margin-bottom: 5pt;
}
.header {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
.code {
border: 1px solid;
padding: 0 0 5pt 5pt;
margin: 10pt;
white-space: pre;
font-family: monospace;
}
</style>
</head>
<body>
</body>
</html>
</span>

File diff suppressed because it is too large Load Diff

3
eglib/aclocal.m4 vendored
View File

@ -573,7 +573,8 @@ to "yes", and re-run configure.
END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi])
fi
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further

View File

@ -1 +1 @@
f63e8c4f995b49470fb7c4bd1f34dac0e85ad20c
065fbf260bfbda470af4db973c37f1d93ec4fc4c

Binary file not shown.

View File

@ -0,0 +1 @@
1c737e92fc50c2860741582b2b2c7b7eb05e6503

Binary file not shown.

View File

@ -0,0 +1 @@
95c141cb1bf7ba0bb408fb0500979ff86e936078

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
0a13f25c2b539d3eb3130747fa5b9c592c865adc

View File

@ -0,0 +1 @@
fdc1308d76495ef02a4abc4008cf85738253a5e9

View File

@ -0,0 +1 @@
553b666cbda33a40eefd4491c08219ab0a7e9899

Binary file not shown.

View File

@ -0,0 +1 @@
16dad5828c68a7cdff0f803b3b7b94d6202f8a15

View File

@ -0,0 +1 @@
0bac21a97d3e8234ce88c419fb2b697b9fd8a2ec

Binary file not shown.

View File

@ -0,0 +1 @@
1380d4e2e907807e9e558a5d0741622020a9eacb

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
bcf28daab3d3aabaf3bd8384fbc64a72b56b3670

Binary file not shown.

View File

@ -0,0 +1 @@
b31b85489f721ceed592dd1feaffc1e7a72ca1ce

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
5908f2354983941412b03188e9223e5bb69aeb72

Binary file not shown.

View File

@ -0,0 +1 @@
85f2c42bb50f6ec544ef78847bedac7e47e55912

View File

@ -0,0 +1 @@
b24e83fc55c2db856ee389b0d154679d9274402d

Binary file not shown.

View File

@ -0,0 +1 @@
721567a04477d387c00a736b9b0b1b222ad8e6c3

Binary file not shown.

View File

@ -0,0 +1 @@
0b05e733bebabb5cfb18d760512137d0c42fe89e

View File

@ -0,0 +1 @@
49c192eea0c192d2e782b9cf5887ca423cee0aa7

View File

@ -0,0 +1 @@
f7d03d7b5ac6c7a09eabec7041e24472206157a6

View File

@ -0,0 +1 @@
6b42f3931a6cff0cecd6d15e320678ad4e01349e

Binary file not shown.

View File

@ -0,0 +1 @@
4850c64dfca079e14274c554439117efaff6047f

View File

@ -0,0 +1 @@
d36feba9dacf4fd825eadce42700f598509ee412

Binary file not shown.

View File

@ -0,0 +1 @@
e4ea6d7d720ab1b7c9adbb34c3f4d5332e15cd11

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More