-int GC_new_kind GC_PROTO((void **free_list, GC_word mark_descriptor_template,
- int add_size_to_descriptor, int clear_new_objects));
- /* The last two parameters must be zero or one. */
-int GC_new_kind_inner GC_PROTO((void **free_list,
- GC_word mark_descriptor_template,
- int add_size_to_descriptor,
- int clear_new_objects));
-
-/* Return a new mark procedure identifier, suitable for use as */
-/* the first argument in GC_MAKE_PROC. */
-int GC_new_proc GC_PROTO((GC_mark_proc));
-int GC_new_proc_inner GC_PROTO((GC_mark_proc));
-
-/* Allocate an object of a given kind. Note that in multithreaded */
-/* contexts, this is usually unsafe for kinds that have the descriptor */
-/* in the object itself, since there is otherwise a window in which */
-/* the descriptor is not correct. Even in the single-threaded case, */
-/* we need to be sure that cleared objects on a free list don't */
-/* cause a GC crash if they are accidentally traced. */
-/* ptr_t */char * GC_generic_malloc GC_PROTO((GC_word lb, int k));
-
-/* FIXME - Should return void *, but that requires other changes. */
-
-typedef void (*GC_describe_type_fn) GC_PROTO((void *p, char *out_buf));
- /* A procedure which */
- /* produces a human-readable */
- /* description of the "type" of object */
- /* p into the buffer out_buf of length */
- /* GC_TYPE_DESCR_LEN. This is used by */
- /* the debug support when printing */
- /* objects. */
- /* These functions should be as robust */
- /* as possible, though we do avoid */
- /* invoking them on objects on the */
- /* global free list. */
-# define GC_TYPE_DESCR_LEN 40
-
-void GC_register_describe_type_fn GC_PROTO((int kind, GC_describe_type_fn knd));
- /* Register a describe_type function */
- /* to be used when printing objects */
- /* of a particular kind. */
-
-#endif /* GC_MARK_H */
-
+GC_API unsigned GC_CALL GC_new_kind(void ** /* free_list */,
+ GC_word /* mark_descriptor_template */,
+ int /* add_size_to_descriptor */,
+ int /* clear_new_objects */);
+ /* The last two parameters must be zero or one. */
+GC_API unsigned GC_CALL GC_new_kind_inner(void ** /* free_list */,
+ GC_word /* mark_descriptor_template */,
+ int /* add_size_to_descriptor */,
+ int /* clear_new_objects */);
+
+/* Return a new mark procedure identifier, suitable for use as */
+/* the first argument in GC_MAKE_PROC. */
+GC_API unsigned GC_CALL GC_new_proc(GC_mark_proc);
+GC_API unsigned GC_CALL GC_new_proc_inner(GC_mark_proc);
+
+/* Allocate an object of a given kind. Note that in multithreaded */
+/* contexts, this is usually unsafe for kinds that have the descriptor */
+/* in the object itself, since there is otherwise a window in which */
+/* the descriptor is not correct. Even in the single-threaded case, */
+/* we need to be sure that cleared objects on a free list don't */
+/* cause a GC crash if they are accidentally traced. */
+GC_API void * GC_CALL GC_generic_malloc(size_t /* lb */, int /* k */);
+
+typedef void (GC_CALLBACK * GC_describe_type_fn)(void * /* p */,
+ char * /* out_buf */);
+ /* A procedure which */
+ /* produces a human-readable */
+ /* description of the "type" of object */
+ /* p into the buffer out_buf of length */
+ /* GC_TYPE_DESCR_LEN. This is used by */
+ /* the debug support when printing */
+ /* objects. */
+ /* These functions should be as robust */
+ /* as possible, though we do avoid */
+ /* invoking them on objects on the */
+ /* global free list. */
+#define GC_TYPE_DESCR_LEN 40
+
+GC_API void GC_CALL GC_register_describe_type_fn(int /* kind */,
+ GC_describe_type_fn);
+ /* Register a describe_type function */
+ /* to be used when printing objects */
+ /* of a particular kind. */
+
+/* See gc.h for the description of these "inner" functions. */
+GC_API size_t GC_CALL GC_get_heap_size_inner(void);
+GC_API size_t GC_CALL GC_get_free_bytes_inner(void);
+
+#ifdef __cplusplus
+ } /* end of extern "C" */
+#endif
+
+#endif /* GC_MARK_H */