Imported Upstream version 0.7.11
[platform/upstream/libsolv.git] / src / dirpool.h
index a3bc9fa..ca92954 100644 (file)
@@ -4,25 +4,30 @@
  * This program is licensed under the BSD license, read LICENSE.BSD
  * for further information
  */
-#ifndef SATSOLVER_DIRPOOL_H
-#define SATSOLVER_DIRPOOL_H
+#ifndef LIBSOLV_DIRPOOL_H
+#define LIBSOLV_DIRPOOL_H
 
 
 #include "pooltypes.h"
 #include "util.h"
 
-#define DIR_BLOCK 127
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-typedef struct _Dirpool {
+typedef struct s_Dirpool {
   Id *dirs;
   int ndirs;
   Id *dirtraverse;
 } Dirpool;
 
-void dirpool_create(Dirpool *dp);
+void dirpool_init(Dirpool *dp);
+void dirpool_free(Dirpool *dp);
+
 void dirpool_make_dirtraverse(Dirpool *dp);
 Id dirpool_add_dir(Dirpool *dp, Id parent, Id comp, int create);
 
+/* return the parent directory of child did */
 static inline Id dirpool_parent(Dirpool *dp, Id did)
 {
   if (!did)
@@ -32,11 +37,15 @@ static inline Id dirpool_parent(Dirpool *dp, Id did)
   return -dp->dirs[did];
 }
 
+/* return the next child entry of child did */
 static inline Id
 dirpool_sibling(Dirpool *dp, Id did)
 {
-  if (did + 1 <= dp->ndirs && dp->dirs[did + 1] > 0)
+  /* if this block contains another entry, simply return it */
+  if (did + 1 < dp->ndirs && dp->dirs[did + 1] > 0)
     return did + 1;
+  /* end of block reached, rewind to get to the block's
+   * dirtraverse entry */
   while (dp->dirs[--did] > 0)
     ;
   /* need to special case did == 0 to prevent looping */
@@ -47,6 +56,7 @@ dirpool_sibling(Dirpool *dp, Id did)
   return dp->dirtraverse[did];
 }
 
+/* return the first child entry of directory did */
 static inline Id
 dirpool_child(Dirpool *dp, Id did)
 {
@@ -58,7 +68,7 @@ dirpool_child(Dirpool *dp, Id did)
 static inline void
 dirpool_free_dirtraverse(Dirpool *dp)
 {
-  sat_free(dp->dirtraverse);
+  solv_free(dp->dirtraverse);
   dp->dirtraverse = 0;
 }
 
@@ -68,4 +78,8 @@ dirpool_compid(Dirpool *dp, Id did)
   return dp->dirs[did];
 }
 
-#endif /* SATSOLVER_DIRPOOL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LIBSOLV_DIRPOOL_H */