mirror of
https://github.com/darlinghq/darling-libobjc2.git
synced 2024-11-23 12:19:44 +00:00
ad16172625
- __strong pointers, preventing objects from being freed _ __weak pointers are automatically freed when the last remaining __strong pointer goes away - objc_gc_{retain,release}_np() functions, which can be used to implement CFRetain() and CFRelease() (adds an reference count - the object will not be collected until after its last retain is gone.
68 lines
2.2 KiB
C
68 lines
2.2 KiB
C
#ifndef __OBJC_LOADER_H_INCLUDED
|
|
#define __OBJC_LOADER_H_INCLUDED
|
|
#include "category.h"
|
|
#include "method_list.h"
|
|
#include "module.h"
|
|
#include "class.h"
|
|
#include "protocol.h"
|
|
|
|
/**
|
|
* Checks whether it is safe to load a module with the specified version and
|
|
* module size. This depends on whether another module with an incompatible
|
|
* ABI has already been loaded.
|
|
*/
|
|
BOOL objc_check_abi_version(struct objc_module_abi_8 *module);
|
|
/**
|
|
* Initializes a protocol list, uniquing the protocols in the list.
|
|
*/
|
|
void objc_init_protocols(struct objc_protocol_list *protocols);
|
|
/**
|
|
* Registers a set of selectors from a method list.
|
|
*/
|
|
void objc_register_selectors_from_list(struct objc_method_list *l);
|
|
/**
|
|
* Register all of the (unregistered) selectors that are used in a class.
|
|
*/
|
|
void objc_register_selectors_from_class(Class class);
|
|
/**
|
|
* Registers all of the selectors in an array.
|
|
*/
|
|
void objc_register_selector_array(SEL selectors, unsigned long count);
|
|
/**
|
|
* Loads a class into the runtime system. If possible, the class is resolved
|
|
* (inserted into the class tree) immediately. If its superclass is not yet
|
|
* resolved, it is enqueued for later resolution.
|
|
*/
|
|
void objc_load_class(struct objc_class *class);
|
|
/**
|
|
* Resolves classes that have not yet been resolved, if their superclasses have
|
|
* subsequently been loaded.
|
|
*/
|
|
void objc_resolve_class_links(void);
|
|
/**
|
|
* Attaches a category to its class, if the class is already loaded. Buffers
|
|
* it for future resolution if not.
|
|
*/
|
|
void objc_try_load_category(struct objc_category *cat);
|
|
/**
|
|
* Tries to load all of the categories that could not previously be loaded
|
|
* because their classes were not yet loaded.
|
|
*/
|
|
void objc_load_buffered_categories(void);
|
|
/**
|
|
* Updates the dispatch table for a class.
|
|
*/
|
|
void objc_update_dtable_for_class(Class cls);
|
|
/**
|
|
* Initialises a list of static object instances belonging to the same class if
|
|
* possible, or defers initialisation until the class has been loaded it not.
|
|
*/
|
|
void objc_init_statics(struct objc_static_instance_list *statics);
|
|
/**
|
|
* Tries again to initialise static instances which could not be initialised
|
|
* earlier.
|
|
*/
|
|
void objc_init_buffered_statics(void);
|
|
|
|
#endif //__OBJC_LOADER_H_INCLUDED
|