+2004-08-12 Ziemowit Laski <zlaski@apple.com>
+
+ * objc/NXConstStr.h: Update copyright date; bracket with
+ 'extern "C"' for C++ use; make include syntax consistent
+ by using <...> instead of "..."; hoist <objc/...> includes
+ above the 'extern "C"' block.
+ * objc/Object.h: Likewise.
+ * objc/Protocol.h: Likewise.
+ * objc/encoding.h: Likewise.
+ * objc/hash.h: Likewise.
+ * objc/runtime.h: Likewise.
+ * objc/sarray.h: Likewise.
+ * objc/thr.h: Likewise.
+ * objc/typedstream.h: Likewise.
+ * objc/objc-api.h: Add 'extern "C"' block for C++ use.
+ (objc_static_instances): For C++ case, do away with
+ zero-sized array.
+ (objc_method): Hoist definition to file scope.
+ (_objc_load_callback, _objc_object_alloc, class_get_class_method,
+ class_get_instance_method, class_create_instance,
+ class_get_class_name, class_get_instance_size,
+ class_get_meta_class, class_get_super_class, class_get_version,
+ class_is_class, class_is_meta_class, class_set_version,
+ class_get_gc_object_type, class_ivar_set_gcinvisible,
+ get_imp): Rename 'class' parameter to '_class'.
+ * objc/objc-list.h: Add 'extern "C"' block for C++ use.
+ * objc/objc.h: Update copyright date.
+ (arglist_t): Provide a union tag.
+
2004-07-22 Andrew Pinski <pinskia@physics.uc.edu>
* thr.c (__objc_thread_detach_function): Do not mark as volatile
/* Interface for the NXConstantString class for Objective-C.
- Copyright (C) 1995 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2004 Free Software Foundation, Inc.
Contributed by Pieter J. Schoenmakers <tiggr@es.ele.tue.nl>
This file is part of GCC.
#ifndef __nxconstantstring_INCLUDE_GNU
#define __nxconstantstring_INCLUDE_GNU
-#include "objc/Object.h"
+#include <objc/Object.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
@interface NXConstantString: Object
{
@end
+#ifdef __cplusplus
+}
+#endif
+
#endif
#ifndef __object_INCLUDE_GNU
#define __object_INCLUDE_GNU
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include <objc/objc.h>
#include <objc/typedstream.h>
@end
+#ifdef __cplusplus
+}
+#endif
+
#endif
/* Declare the class Protocol for Objective C programs.
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2004 Free Software Foundation, Inc.
This file is part of GCC.
#ifndef __Protocol_INCLUDE_GNU
#define __Protocol_INCLUDE_GNU
-#include "objc/Object.h"
+#include <objc/Object.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
@interface Protocol : Object
{
@end
-
-
+#ifdef __cplusplus
+}
+#endif
#endif /* not __Protocol_INCLUDE_GNU */
/* Encoding of types for Objective C.
- Copyright (C) 1993, 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2002, 2004 Free Software Foundation, Inc.
Author: Kresten Krab Thorup
#ifndef __encoding_INCLUDE_GNU
#define __encoding_INCLUDE_GNU
-#include <ctype.h>
-#include "objc/objc-api.h"
+#include <objc/objc-api.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+#include <ctype.h>
+
#define _C_CONST 'r'
#define _C_IN 'n'
#define _C_INOUT 'N'
/* Hash tables for Objective C method dispatch.
- Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc.
This file is part of GCC.
#ifndef __hash_INCLUDE_GNU
#define __hash_INCLUDE_GNU
-#include <stddef.h>
-#include <string.h>
#include <objc/objc.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+#include <stddef.h>
+#include <string.h>
/*
* This data structure is used to hold items
#ifndef __objc_api_INCLUDE_GNU
#define __objc_api_INCLUDE_GNU
-#include "objc/objc.h"
-#include "objc/hash.h"
-#include "objc/thr.h"
-#include "objc/objc-decls.h"
-#include <stdio.h>
-#include <stdarg.h>
+#include <objc/objc.h>
+#include <objc/hash.h>
+#include <objc/thr.h>
+#include <objc/objc-decls.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+#include <stdio.h>
+#include <stdarg.h>
/* For functions which return Method_t */
#define METHOD_NULL (Method_t)0
struct objc_static_instances
{
char *class_name;
+#ifdef __cplusplus
+ id instances[1];
+#else
id instances[0];
+#endif
};
/*
** and categories can break them across modules. To handle this problem is a
** singly linked list of methods.
*/
-typedef struct objc_method Method;
-typedef Method* Method_t;
+typedef struct objc_method {
+ SEL method_name; /* This variable is the method's
+ name. It is a char*.
+ The unique integer passed to
+ objc_msg_send is a char* too.
+ It is compared against
+ method_name using strcmp. */
+ const char* method_types; /* Description of the method's
+ parameter list. Useful for
+ debuggers. */
+ IMP method_imp; /* Address of the method in the
+ executable. */
+} Method, *Method_t;
+
typedef struct objc_method_list {
- struct objc_method_list* method_next; /* This variable is used to link
- a method list to another. It
- is a singly linked list. */
- int method_count; /* Number of methods defined in
- this structure. */
- struct objc_method {
- SEL method_name; /* This variable is the method's
- name. It is a char*.
- The unique integer passed to
- objc_msg_send is a char* too.
- It is compared against
- method_name using strcmp. */
- const char* method_types; /* Description of the method's
- parameter list. Useful for
- debuggers. */
- IMP method_imp; /* Address of the method in the
- executable. */
- } method_list[1]; /* Variable length
- structure. */
+ struct objc_method_list* method_next; /* This variable is used to link
+ a method list to another. It
+ is a singly linked list. */
+ int method_count; /* Number of methods defined in
+ this structure. */
+ Method method_list[1]; /* Variable length
+ structure. */
} MethodList, *MethodList_t;
struct objc_protocol_list {
** dynamic loader determine the classes that have been loaded when
** an object file is dynamically linked in.
*/
-objc_EXPORT void (*_objc_load_callback)(Class class, Category* category);
+objc_EXPORT void (*_objc_load_callback)(Class _class, Category* category);
/*
** Hook functions for allocating, copying and disposing of instances
*/
-objc_EXPORT id (*_objc_object_alloc)(Class class);
+objc_EXPORT id (*_objc_object_alloc)(Class _class);
objc_EXPORT id (*_objc_object_copy)(id object);
objc_EXPORT id (*_objc_object_dispose)(id object);
*/
objc_EXPORT IMP (*__objc_msg_forward)(SEL);
-Method_t class_get_class_method(MetaClass class, SEL aSel);
+Method_t class_get_class_method(MetaClass _class, SEL aSel);
-Method_t class_get_instance_method(Class class, SEL aSel);
+Method_t class_get_instance_method(Class _class, SEL aSel);
Class class_pose_as(Class impostor, Class superclass);
BOOL sel_is_mapped (SEL aSel);
-extern id class_create_instance(Class class);
+extern id class_create_instance(Class _class);
static inline const char *
-class_get_class_name(Class class)
+class_get_class_name(Class _class)
{
- return CLS_ISCLASS(class)?class->name:((class==Nil)?"Nil":0);
+ return CLS_ISCLASS(_class)?_class->name:((_class==Nil)?"Nil":0);
}
static inline long
-class_get_instance_size(Class class)
+class_get_instance_size(Class _class)
{
- return CLS_ISCLASS(class)?class->instance_size:0;
+ return CLS_ISCLASS(_class)?_class->instance_size:0;
}
static inline MetaClass
-class_get_meta_class(Class class)
+class_get_meta_class(Class _class)
{
- return CLS_ISCLASS(class)?class->class_pointer:Nil;
+ return CLS_ISCLASS(_class)?_class->class_pointer:Nil;
}
static inline Class
-class_get_super_class(Class class)
+class_get_super_class(Class _class)
{
- return CLS_ISCLASS(class)?class->super_class:Nil;
+ return CLS_ISCLASS(_class)?_class->super_class:Nil;
}
static inline int
-class_get_version(Class class)
+class_get_version(Class _class)
{
- return CLS_ISCLASS(class)?class->version:-1;
+ return CLS_ISCLASS(_class)?_class->version:-1;
}
static inline BOOL
-class_is_class(Class class)
+class_is_class(Class _class)
{
- return CLS_ISCLASS(class);
+ return CLS_ISCLASS(_class);
}
static inline BOOL
-class_is_meta_class(Class class)
+class_is_meta_class(Class _class)
{
- return CLS_ISMETA(class);
+ return CLS_ISMETA(_class);
}
static inline void
-class_set_version(Class class, long version)
+class_set_version(Class _class, long version)
{
- if (CLS_ISCLASS(class))
- class->version = version;
+ if (CLS_ISCLASS(_class))
+ _class->version = version;
}
static inline void *
-class_get_gc_object_type (Class class)
+class_get_gc_object_type (Class _class)
{
- return CLS_ISCLASS(class) ? class->gc_object_type : NULL;
+ return CLS_ISCLASS(_class) ? _class->gc_object_type : NULL;
}
/* Mark the instance variable as innaccessible to the garbage collector */
-extern void class_ivar_set_gcinvisible (Class class,
+extern void class_ivar_set_gcinvisible (Class _class,
const char* ivarname,
BOOL gcInvisible);
return (method!=METHOD_NULL)?method->method_imp:(IMP)0;
}
-IMP get_imp (Class class, SEL sel);
+IMP get_imp (Class _class, SEL sel);
/* Redefine on NeXTSTEP so as not to conflict with system function */
#ifdef __NeXT__
}
#endif /* __cplusplus */
-
#endif /* not __objc_api_INCLUDE_GNU */
extern "C" {
#endif /* __cplusplus */
-
struct objc_list {
void *head;
struct objc_list *tail;
}
#endif /* __cplusplus */
-
#endif /* not __GNU_OBJC_LIST_H */
/* Basic data types for Objective C.
- Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc.
This file is part of GCC.
typedef void* retval_t; /* return value */
typedef void(*apply_t)(void); /* function pointer */
-typedef union {
+typedef union arglist {
char *arg_ptr;
char arg_regs[sizeof (char*)];
} *arglist_t; /* argument frame */
#ifndef __objc_runtime_INCLUDE_GNU
#define __objc_runtime_INCLUDE_GNU
-#include <stdarg.h> /* for varargs and va_list's */
-
-#include <stdio.h>
-#include <ctype.h>
+#include <objc/objc.h> /* core data types */
+#include <objc/objc-api.h> /* runtime api functions */
-#include <stddef.h> /* so noone else will get system versions */
-#include "assert.h"
-
-#include "objc/objc.h" /* core data types */
-#include "objc/objc-api.h" /* runtime api functions */
+#include <objc/thr.h> /* thread and mutex support */
-#include "objc/thr.h" /* thread and mutex support */
-
-#include "objc/hash.h" /* hash structures */
-#include "objc/objc-list.h" /* linear lists */
+#include <objc/hash.h> /* hash structures */
+#include <objc/objc-list.h> /* linear lists */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+#include <stdarg.h> /* for varargs and va_list's */
+
+#include <stdio.h>
+#include <ctype.h>
+
+#include <stddef.h> /* so noone else will get system versions */
+#include <assert.h>
extern void __objc_add_class_to_hash(Class); /* (objc-class.c) */
extern void __objc_init_selector_tables(void); /* (objc-sel.c) */
}
#endif /* __cplusplus */
-
#endif /* not __objc_runtime_INCLUDE_GNU */
-
-
/* Sparse Arrays for Objective C dispatch tables
- Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc.
Contributed by Kresten Krab Thorup.
This file is part of GCC.
#ifndef __sarray_INCLUDE_GNU
#define __sarray_INCLUDE_GNU
+#include <objc/thr.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define OBJC_SPARSE2 /* 2-level sparse array */
/* #define OBJC_SPARSE3 */ /* 3-level sparse array */
#include <stddef.h>
-#include "objc/thr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
extern int nbuckets; /* for stats */
extern int nindices;
extern int narrays;
extern int idxsize;
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
#include <assert.h>
/* An unsigned integer of same size as a pointer */
size_t capacity;
};
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
struct sarray* sarray_new(int, void* default_element);
void sarray_free(struct sarray*);
struct sarray* sarray_lazy_copy(struct sarray*);
}
#endif /* __cplusplus */
-
#endif /* __sarray_INCLUDE_GNU */
/* Thread and mutex controls for Objective C.
- Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2002, 2004 Free Software Foundation, Inc.
Contributed by Galen C. Hunt (gchunt@cs.rochester.edu)
This file is part of GCC.
#ifndef __thread_INCLUDE_GNU
#define __thread_INCLUDE_GNU
-#include "objc/objc.h"
+#include <objc/objc.h>
#ifdef __cplusplus
extern "C" {
}
#endif /* __cplusplus */
-
#endif /* not __thread_INCLUDE_GNU */
/* GNU Objective-C Typed Streams interface.
- Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1995, 2004 Free Software Foundation, Inc.
This file is part of GCC.
#ifndef __typedstream_INCLUDE_GNU
#define __typedstream_INCLUDE_GNU
-#include "objc/objc.h"
-#include "objc/hash.h"
-#include <stdio.h>
+#include <objc/objc.h>
+#include <objc/hash.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+#include <stdio.h>
typedef int (*objc_typed_read_func)(void*, char*, int);
typedef int (*objc_typed_write_func)(void*, const char*, int);
}
#endif /* __cplusplus */
-
#endif /* not __typedstream_INCLUDE_GNU */