Skip to content

archimag/garbage-pools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

garbage-pools

GARBAGE-POOLS is Common Lisp re-implementation the APR Pools for resource management.

API

pool
The fundamental pool type.
with-garbage-pool
((&optional (var '*pool*)) &body body)

Performs a series of operations on pool. Return the values returned by the body. Possible use named and unnamed pools.

(with-garbage-pool () (cleanup-register myobj clenup-fun))
(with-garbage-pool (mypool) (cleanup-register myobj clenup-fun mypool))
cleanup-register
(object cleanup-fun &optional (pool *pool*))

Register a function to be called when a pool is cleared. Return object.

(with-garbage-pool ()
  (cleanup-register (cffi:foreign-string-alloc "Hello world") #'cffi:foreign-string-free) ...)
cleanup-pool
(&optional (pool *pool*))

Run all the cleanups and clear pool.

cleanup-object
(object &optional (pool *pool*))

Run the specified cleanup function immediately and unregister it. Use object instead of the object that was registered with the cleanup.

(with-garbage-pool ()
  (let ((%str (cleanup-register (cffi:foreign-string-alloc "Hello world")
                                #'cffi:foreign-string-free)))
    (clenup-object %str)))
cancel-object-cleanup
(object &optional (pool *pool*))

Unregister object from pool without call cleanup function.

(with-garbage-pool ()
  (let ((%str (cleanup-register (cffi:foreign-string-alloc "Hello world")
                                #'cffi:foreign-string-free))) (cancel-object-clenup %str)))
object-register
(object &optional (pool *pool*))

Generic function for object registration without cleanup functions. It is use when cleanup functions possibly determine from type of the object (by default supports only pool and stream types). Return object.

(with-garbage-pool () (let ((stream (object-register (open #P"/tmp/data")))) ...))
defcleanup
(class cleanup-fun)

Bind clenup functions with object type. Necessary for use object-register.

(defcleanup stream #'close)

About

Implementation pools for resource management.

Resources

Stars

Watchers

Forks

Packages

No packages published