1*e4b17023SJohn Marino /* GNU Objective C Runtime internal declarations 2*e4b17023SJohn Marino Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004, 2009 Free Software Foundation, Inc. 3*e4b17023SJohn Marino Contributed by Kresten Krab Thorup 4*e4b17023SJohn Marino 5*e4b17023SJohn Marino This file is part of GCC. 6*e4b17023SJohn Marino 7*e4b17023SJohn Marino GCC is free software; you can redistribute it and/or modify it under the 8*e4b17023SJohn Marino terms of the GNU General Public License as published by the Free Software 9*e4b17023SJohn Marino Foundation; either version 3, or (at your option) any later version. 10*e4b17023SJohn Marino 11*e4b17023SJohn Marino GCC is distributed in the hope that it will be useful, but WITHOUT ANY 12*e4b17023SJohn Marino WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13*e4b17023SJohn Marino FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14*e4b17023SJohn Marino details. 15*e4b17023SJohn Marino 16*e4b17023SJohn Marino Under Section 7 of GPL version 3, you are granted additional 17*e4b17023SJohn Marino permissions described in the GCC Runtime Library Exception, version 18*e4b17023SJohn Marino 3.1, as published by the Free Software Foundation. 19*e4b17023SJohn Marino 20*e4b17023SJohn Marino You should have received a copy of the GNU General Public License and 21*e4b17023SJohn Marino a copy of the GCC Runtime Library Exception along with this program; 22*e4b17023SJohn Marino see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23*e4b17023SJohn Marino <http://www.gnu.org/licenses/>. */ 24*e4b17023SJohn Marino 25*e4b17023SJohn Marino /* You need to include this file after including a number of standard ObjC files. 26*e4b17023SJohn Marino 27*e4b17023SJohn Marino The original list was: 28*e4b17023SJohn Marino 29*e4b17023SJohn Marino #include "objc/objc.h" 30*e4b17023SJohn Marino #include "objc/objc-api.h" 31*e4b17023SJohn Marino #include "objc/thr.h" 32*e4b17023SJohn Marino #include "objc/hash.h" 33*e4b17023SJohn Marino #include "objc/objc-list.h" 34*e4b17023SJohn Marino 35*e4b17023SJohn Marino but can almost certainly be shrinked down. */ 36*e4b17023SJohn Marino 37*e4b17023SJohn Marino #ifndef __objc_private_runtime_INCLUDE_GNU 38*e4b17023SJohn Marino #define __objc_private_runtime_INCLUDE_GNU 39*e4b17023SJohn Marino 40*e4b17023SJohn Marino #include <stdarg.h> /* for varargs and va_list's */ 41*e4b17023SJohn Marino 42*e4b17023SJohn Marino #include <stdio.h> 43*e4b17023SJohn Marino #include <ctype.h> 44*e4b17023SJohn Marino 45*e4b17023SJohn Marino #include <stddef.h> /* so noone else will get system versions */ 46*e4b17023SJohn Marino #include <assert.h> 47*e4b17023SJohn Marino 48*e4b17023SJohn Marino extern BOOL __objc_add_class_to_hash (Class); /* (objc-class.c) */ 49*e4b17023SJohn Marino extern void __objc_init_class_tables (void); /* (objc-class.c) */ 50*e4b17023SJohn Marino extern void __objc_init_dispatch_tables (void); /* (objc-dispatch.c) */ 51*e4b17023SJohn Marino extern void __objc_install_premature_dtable (Class); /* (objc-dispatch.c) */ 52*e4b17023SJohn Marino extern void __objc_resolve_class_links (void); /* (objc-class.c) */ 53*e4b17023SJohn Marino extern void __objc_update_dispatch_table_for_class (Class);/* (objc-msg.c) */ 54*e4b17023SJohn Marino 55*e4b17023SJohn Marino extern int __objc_init_thread_system (void); /* thread.c */ 56*e4b17023SJohn Marino extern int __objc_fini_thread_system (void); /* thread.c */ 57*e4b17023SJohn Marino extern BOOL __objc_init_class (Class class); /* init.c */ 58*e4b17023SJohn Marino extern void class_add_method_list (Class, struct objc_method_list *); 59*e4b17023SJohn Marino 60*e4b17023SJohn Marino /* Registering instance methods as class methods for root classes */ 61*e4b17023SJohn Marino extern void __objc_register_instance_methods_to_class (Class); 62*e4b17023SJohn Marino extern struct objc_method * search_for_method_in_list (struct objc_method_list * list, SEL op); 63*e4b17023SJohn Marino 64*e4b17023SJohn Marino extern void 65*e4b17023SJohn Marino __objc_update_classes_with_methods (struct objc_method *method_a, struct objc_method *method_b); /* class.c */ 66*e4b17023SJohn Marino 67*e4b17023SJohn Marino /* Mutex locking __objc_selector_max_index and its arrays. */ 68*e4b17023SJohn Marino extern objc_mutex_t __objc_runtime_mutex; 69*e4b17023SJohn Marino 70*e4b17023SJohn Marino /* Number of threads which are alive. */ 71*e4b17023SJohn Marino extern int __objc_runtime_threads_alive; 72*e4b17023SJohn Marino 73*e4b17023SJohn Marino BOOL __objc_responds_to (id object, SEL sel); /* for internal use only! */ 74*e4b17023SJohn Marino extern void __objc_generate_gc_type_description (Class); 75*e4b17023SJohn Marino 76*e4b17023SJohn Marino #endif /* not __objc_private_runtime_INCLUDE_GNU */ 77