1/* GNU Objective C Runtime internal declarations 2 Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004, 2009 Free Software Foundation, Inc. 3 Contributed by Kresten Krab Thorup 4 5This file is part of GCC. 6 7GCC is free software; you can redistribute it and/or modify it under the 8terms of the GNU General Public License as published by the Free Software 9Foundation; either version 3, or (at your option) any later version. 10 11GCC is distributed in the hope that it will be useful, but WITHOUT ANY 12WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14details. 15 16Under Section 7 of GPL version 3, you are granted additional 17permissions described in the GCC Runtime Library Exception, version 183.1, as published by the Free Software Foundation. 19 20You should have received a copy of the GNU General Public License and 21a copy of the GCC Runtime Library Exception along with this program; 22see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23<http://www.gnu.org/licenses/>. */ 24 25 26#ifndef __objc_runtime_INCLUDE_GNU 27#define __objc_runtime_INCLUDE_GNU 28 29#include <stdarg.h> /* for varargs and va_list's */ 30 31#include <stdio.h> 32#include <ctype.h> 33 34#include <stddef.h> /* so noone else will get system versions */ 35#include <assert.h> 36 37#include "objc.h" /* core data types */ 38#include "objc-api.h" /* runtime api functions */ 39 40#include "thr.h" /* thread and mutex support */ 41 42#include "hash.h" /* hash structures */ 43#include "objc-list.h" /* linear lists */ 44 45#ifdef __cplusplus 46extern "C" { 47#endif /* __cplusplus */ 48 49extern void __objc_add_class_to_hash(Class); /* (objc-class.c) */ 50extern void __objc_init_selector_tables(void); /* (objc-sel.c) */ 51extern void __objc_init_class_tables(void); /* (objc-class.c) */ 52extern void __objc_init_dispatch_tables(void); /* (objc-dispatch.c) */ 53extern void __objc_install_premature_dtable(Class); /* (objc-dispatch.c) */ 54extern void __objc_resolve_class_links(void); /* (objc-class.c) */ 55extern void __objc_register_selectors_from_class(Class); /* (objc-sel.c) */ 56extern void __objc_register_selectors_from_list (MethodList_t); /* (selector.c) */ 57extern void __objc_update_dispatch_table_for_class (Class);/* (objc-msg.c) */ 58 59extern int __objc_init_thread_system(void); /* thread.c */ 60extern int __objc_fini_thread_system(void); /* thread.c */ 61extern void __objc_print_dtable_stats(void); /* sendmsg.c */ 62 63extern void class_add_method_list(Class, MethodList_t); 64 65/* Registering instance methods as class methods for root classes */ 66extern void __objc_register_instance_methods_to_class(Class); 67extern Method_t search_for_method_in_list(MethodList_t list, SEL op); 68 69/* True when class links has been resolved */ 70extern BOOL __objc_class_links_resolved; 71 72/* Number of selectors stored in each of the selector tables */ 73extern unsigned int __objc_selector_max_index; 74 75/* Mutex locking __objc_selector_max_index and its arrays. */ 76extern objc_mutex_t __objc_runtime_mutex; 77 78/* Number of threads which are alive. */ 79extern int __objc_runtime_threads_alive; 80 81#ifdef DEBUG 82#define DEBUG_PRINTF(format, args...) printf (format, ## args) 83#else 84#define DEBUG_PRINTF(format, args...) 85#endif 86 87BOOL __objc_responds_to (id object, SEL sel); /* for internal use only! */ 88SEL __sel_register_typed_name (const char*, const char*, 89 struct objc_selector*, BOOL is_const); 90extern void __objc_generate_gc_type_description (Class); 91 92#ifdef __cplusplus 93} 94#endif /* __cplusplus */ 95 96#endif /* not __objc_runtime_INCLUDE_GNU */ 97