4 #define PUSH_LT(lt, resource, resource_destroy) \
5 lt_push(lt, (void*)resource, (Lt_destroy)resource_destroy)
7 #define RESET_LT(lt, old_resource, new_resource) \
8 lt_reset(lt, (void*)old_resource, (void*)new_resource)
10 #define REPLACE_LT(lt, old_resource, new_resource) \
11 lt_replace(lt, (void*)old_resource, (void*)new_resource)
13 #define RELEASE_LT(lt, resource) \
14 lt_release(lt, (void*) resource)
16 #define RETURN_LT(lt, result) \
22 #define RETURN_LT0(lt) \
29 typedef void (*Lt_destroy)(void*);
32 void destroy_lt(Lt *lt);
34 /** \brief Pushes the resource onto the Life Time creating a new Life Time frame.
36 void *lt_push(Lt *lt, void *resource, Lt_destroy resource_destroy);
38 /** \brief Destroys old_resource preserving its LT frame and assigns the new_resource to the LT frame.
40 void *lt_reset(Lt *lt, void *old_resource, void *new_resource);
42 /** \brief Replaces old_resource with new_resource in the LT frame without destroying old_resource.
44 void *lt_replace(Lt *lt, void *old_resource, void *new_resource);
46 /** \brief Removes the LT frame of resource without destroying the resource.
48 void *lt_release(Lt *lt, void *resource);