[docs] Enable documentation for metadata.
[mono.git] / mono / metadata / string-icalls.c
1 /**
2  * \file
3  * String internal calls for the corlib
4  *
5  * Author:
6  *   Patrik Torstensson (patrik.torstensson@labs2.com)
7  *   Duncan Mak  (duncan@ximian.com)
8  *
9  * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
10  * Copyright 2004-2009 Novell, Inc (http://www.novell.com)
11  * Licensed under the MIT license. See LICENSE file in the project root for full license information.
12  */
13 #include <config.h>
14 #include <stdlib.h>
15 #include <stdio.h>
16 #include <string.h>
17 #include "mono/utils/mono-membar.h"
18 #include <mono/metadata/string-icalls.h>
19 #include <mono/metadata/class-internals.h>
20 #include <mono/metadata/appdomain.h>
21 #include <mono/metadata/tabledefs.h>
22 #include <mono/metadata/loader.h>
23 #include <mono/metadata/object.h>
24 #include <mono/metadata/exception.h>
25 #include <mono/metadata/debug-helpers.h>
26 #include <mono/metadata/profiler.h>
27 #include <mono/metadata/profiler-private.h>
28 #include <mono/metadata/gc-internals.h>
29
30 /* This function is redirected to String.CreateString ()
31    by mono_marshal_get_native_wrapper () */
32 void
33 ves_icall_System_String_ctor_RedirectToCreateString (void)
34 {
35         g_assert_not_reached ();
36 }
37
38 MonoString *
39 ves_icall_System_String_InternalAllocateStr (gint32 length)
40 {
41         MonoError error;
42         MonoString *str = mono_string_new_size_checked (mono_domain_get (), length, &error);
43         mono_error_set_pending_exception (&error);
44
45         return str;
46 }
47
48 MonoString  *
49 ves_icall_System_String_InternalIntern (MonoString *str)
50 {
51         MonoError error;
52         MonoString *res;
53
54         res = mono_string_intern_checked (str, &error);
55         if (!res) {
56                 mono_error_set_pending_exception (&error);
57                 return NULL;
58         }
59         return res;
60 }
61
62 MonoString * 
63 ves_icall_System_String_InternalIsInterned (MonoString *str)
64 {
65         return mono_string_is_interned (str);
66 }
67
68 int
69 ves_icall_System_String_GetLOSLimit (void)
70 {
71         int limit = mono_gc_get_los_limit ();
72
73         return (limit - 2 - G_STRUCT_OFFSET (MonoString, chars)) / 2;
74 }
75