]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/resource.h
Heap: Interface cleanup
[libucw.git] / ucw / resource.h
index d2a415c3fca9de02e181057388f2db60abce5dd1..74de3607c0727a303a0fda01b26e729935711bac 100644 (file)
@@ -10,8 +10,8 @@
 #ifndef _UCW_RESPOOL_H
 #define _UCW_RESPOOL_H
 
 #ifndef _UCW_RESPOOL_H
 #define _UCW_RESPOOL_H
 
-#include "ucw/clists.h"
-#include "ucw/threads.h"
+#include <ucw/clists.h>
+#include <ucw/threads.h>
 
 /**
  * A resource pool. It contains a name of the pool (which is printed
 
 /**
  * A resource pool. It contains a name of the pool (which is printed
@@ -43,6 +43,7 @@ struct resource {
 /** Resource flags **/
 enum resource_flags {
   RES_FLAG_TEMP = 1,                                   // Resource is temporary
 /** Resource flags **/
 enum resource_flags {
   RES_FLAG_TEMP = 1,                                   // Resource is temporary
+  RES_FLAG_XFREE = 2,                                  // Resource structure needs to be deallocated by xfree()
 };
 
 /**
 };
 
 /**
@@ -130,6 +131,23 @@ struct res_class {
   uns res_size;                                                // Size of the resource structure (0=default)
 };
 
   uns res_size;                                                // Size of the resource structure (0=default)
 };
 
+/**
+ * Initialize a pre-allocated buffer to the specific class of resource, setting its private data to @priv.
+ * This resource can be added to the current pool by @res_add().
+ **/
+static inline struct resource *res_init(struct resource *r, const struct res_class *rc, void *priv)
+{
+  r->flags = 0;
+  r->rclass = rc;
+  r->priv = priv;
+  return r;
+}
+
+/**
+ * Links a pre-initialized resource to the active pool.
+ **/
+void res_add(struct resource *r);
+
 /**
  * Unlinks a resource from a pool and releases its meta-data. Unlike @res_detach(),
  * it does not invoke any callbacks. The caller must make sure that no references to
 /**
  * Unlinks a resource from a pool and releases its meta-data. Unlike @res_detach(),
  * it does not invoke any callbacks. The caller must make sure that no references to