commit-slab.hon commit Merge branch 'sg/clean-nested-repo-with-ignored' (026428c)
   1#ifndef COMMIT_SLAB_H
   2#define COMMIT_SLAB_H
   3
   4#include "commit-slab-decl.h"
   5#include "commit-slab-impl.h"
   6
   7/*
   8 * define_commit_slab(slabname, elemtype) creates boilerplate code to define
   9 * a new struct (struct slabname) that is used to associate a piece of data
  10 * of elemtype to commits, and a few functions to use that struct.
  11 *
  12 * After including this header file, using:
  13 *
  14 * define_commit_slab(indegree, int);
  15 *
  16 * will let you call the following functions:
  17 *
  18 * - int *indegree_at(struct indegree *, struct commit *);
  19 *
  20 *   This function locates the data associated with the given commit in
  21 *   the indegree slab, and returns the pointer to it.  The location to
  22 *   store the data is allocated as necessary.
  23 *
  24 * - int *indegree_peek(struct indegree *, struct commit *);
  25 *
  26 *   This function is similar to indegree_at(), but it will return NULL
  27 *   until a call to indegree_at() was made for the commit.
  28 *
  29 * - void init_indegree(struct indegree *);
  30 *   void init_indegree_with_stride(struct indegree *, int);
  31 *
  32 *   Initializes the indegree slab that associates an array of integers
  33 *   to each commit. 'stride' specifies how big each array is.  The slab
  34 *   that is initialized by the variant without "_with_stride" associates
  35 *   each commit with an array of one integer.
  36 *
  37 * - void clear_indegree(struct indegree *);
  38 *
  39 *   Empties the slab.  The slab can be reused with the same stride
  40 *   without calling init_indegree() again or can be reconfigured to a
  41 *   different stride by calling init_indegree_with_stride().
  42 *
  43 *   Call this function before the slab falls out of scope to avoid
  44 *   leaking memory.
  45 */
  46
  47#define define_commit_slab(slabname, elemtype) \
  48        declare_commit_slab(slabname, elemtype); \
  49        implement_static_commit_slab(slabname, elemtype)
  50
  51#endif /* COMMIT_SLAB_H */