+»)dnl
+ifdef(«EXAMPLES», «
+dnl $1: name, $2: one-line summary, $3: prolog, $4: parameters,
+dnl $5: parameter documentation, $6: return type, $7: return text,
+dnl $8: epilog
+DECLARE_FUNCTION(
+ «simple_func»,
+ «This is the one-line summary.»,
+ «This is the prolog.»,
+ «
+ «int param1»,
+ «documentation of first parameter»,
+
+ «char *param2»,
+ «documentation of second parameter»
+ »,
+ «This is the parameter documentation section.»,
+
+ «int»,
+ «This is the documentation of the return value»,
+ «This is the epilog.»
+)
+
+DECLARE_FUNCTION(
+ «complex_func»,
+ «Example of a function which uses all features of gendoc»,
+ «Prolog: The three free text sections (prolog, arg-doc and epilog) may
+ all consist of several paragraphs, and each may contain multiple lines.
+ Paragraphs are separated by lines containing only whitespace.
+
+ Formatting is kept intact, but lines are wrapped into C comments.»,
+ «
+ «int par1»,
+ «The parameter list consists of any number of parameter/comment
+ pairs. The parameters are plain C code like the "int par1" above.
+
+ The list must be quoted, and both the declaration and its
+ comment must also be quoted. Comments must not be empty.»,
+
+ «int par2»,
+ «For the parameter documentation the same rules as for the free text
+ sections apply: Multiple paragraphs are possible, and each may spawn
+ multiple lines.»
+
+ »,
+ «The par-doc section. It is printed after the parameter list but before
+ the return value (if any).
+
+ It is supposed to describe the function or its parameters in more
+ detail, possibly referring to one or more of the above parameters.
+
+ This function returns non-void, so this paragraph is followed by the
+ return value documentation.»,
+
+ «int»,
+ «Like the parameter/comment pairs, the return value consists of two parts:
+ the return type and the documentation.
+
+ This return documentation consists of two paragraphs.»,
+ «Finally, there is the (optional) epilog.
+
+ It might contain references to related documentation, for example a
+ "see also" section.»
+)
+
+DECLARE_FUNCTION(
+ «dwim»,
+ «Example of a function with no parameters and no return value.»,
+ «This is the description. It could consist of several paragraphs.»,
+
+ «
+ «void»,
+ »,
+ «Par-doc: For functions with no parameters, the par-doc section
+ is kind of pointless.»,
+
+ «void»,
+ «»,
+ «Epilog: For functions with no return value, the epilog directly
+ follows the par-doc section.»,
+)
+
+DECLARE_FUNCTION(
+ «minimal_documented_function»,
+ «This documentation conists of only the summary line.»,
+ «»,
+
+ «
+ «void»,
+ »,
+ «»,
+ «void»,
+ «»,
+ «»,
+)
+
+dnl $1: name, $2: one-line summary, $3: description, $4: members
+DECLARE_COMPOUND(
+ «struct foo»,
+ «summary: Illustrate the DECLARE_COMPOUND macro»,
+ «description: The macro works for both structs and unions. The
+ structure of the documentation is simpler than for functions because
+ instead of three free-text sections (prolog, par-doc, epilog), it
+ has only one: the description. Of course the description may spawn
+ multiple paragraphs, each of which which may consist of multiple lines.
+
+ The member list is similar to the list of function parameters.»,
+
+ «
+ «float member1»,
+ «The description of the members may also spawn multiple paragraphs,
+ and each of them may spawn multiple lines.
+
+ This description has two paragraphs.»,
+
+ «float member2»,
+ «The documentation might be pretty short, though»
+ »
+)
+
+dnl $1: name, $2: one-line summary, $3: description, $4: members
+DECLARE_ENUM(
+ «example_enum»,
+ «Summary: Illustrate the DECLARE_ENUM macro»,
+ «Enumerations are similar to compounds in that they receive a one-line
+ summary and an optional long description, The member list (paramter
+ #4) is expected to be a list of identifier/comment pairs.»,
+
+ «
+ «ENUM_ID1»,
+ «comment 1»,
+
+ «ENUM_ID2»,
+ «Comments can span multiple lines. Formatting is retained, but
+ leading and trailing newlines are stripped and leading tabs are
+ adjusted to make the C output look nice.»
+ »
+)
+
+dnl $1: name, $2: one-line summary, $3 description
+STATEMENT(
+ «extern int bar»,
+ «Summary: Illustrate the STATMENT macro»,
+ «If the header file contains simple statements, they can be documented
+ with a one-line summary and an optional multi-paragraph description.
+
+ This is the second paragrapgh of the description.»
+)
+
+STATEMENT(
+ «struct opaque»,
+ «Summary: A statement without a description»,
+)
+»)dnl
diff --git a/osl.h.in b/osl.h.in
deleted file mode 100644
index 3d21439..0000000
--- a/osl.h.in
+++ /dev/null
@@ -1,500 +0,0 @@
-/*
- * Copyright (C) 2007-2009 Andre Noll
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
-
-/** \file osl.h User interface for the object storage layer. */
-
-#include
-#include
-
-/** Export all declarations in this file. */
-#pragma GCC visibility push(default)
-
-/** Describes an object of the object storage layer (osl) */
-struct osl_object {
- /** Pointer to the data of the object. */
- void *data;
- /** The object's size. */
- size_t size;
-};
-
-/** Flags that change the internal handling of osl tables. */
-enum osl_table_flags {
- /** This table will have many rows. */
- OSL_LARGE_TABLE = 1
-};
-
-/** The three different types of storage for an osl column */
-enum osl_storage_type {
- /**
- * All data for this column is stored in one file which gets mmapped by
- * osl_open_table(). This is suitable for columns that do not hold much
- * data.
- */
- OSL_MAPPED_STORAGE,
- /**
- * Each entry is stored on disk and is loaded on demand by
- * open_disk_object(). This is the preferable storage type for large
- * objects that need not be in memory all the time.
- */
- OSL_DISK_STORAGE,
- /**
- * Objects for columns of this type are volatile: They are only stored
- * in memory and are discarded when the table is closed.
- */
- OSL_NO_STORAGE
-};
-
-/**
- * Additional per-column flags
- */
-enum osl_storage_flags {
- /**
- * Build an rbtree for this column. This is only possible if the
- * storage type of the column is either \a OSL_MAPPED_STORAGE or \a
- * OSL_NO_STORAGE. In order to lookup objects in the table by using \a
- * osl_get_row(), the lookup column must have an associated rbtree.
- *
- * \sa osl_storage_type, osl_get_row()
- */
- OSL_RBTREE = 1,
- /** The data for this column will have constant size. */
- OSL_FIXED_SIZE = 2,
- /** All values are different. Must be set if \p OSL_RBTREE is set. */
- OSL_UNIQUE = 4,
- /** Do not free the data for this column (\p OSL_NO_STORAGE). */
- OSL_DONT_FREE = 8
-};
-
-/** Opaque osl table structure. */
-struct osl_table;
-/** Opaque osl row structure. */
-struct osl_row;
-
-/**
- * In order to build up an rbtree a compare function for the objects must be
- * provided. This function takes pointers to the two objects to be compared. It
- * must return -1, zero, or 1, if the first argument is considered to be
- * respectively less than, equal to, or greater than the second. If two members
- * compare as equal, their order in the rbtree is undefined.
- */
-typedef int osl_compare_func(const struct osl_object *obj1,
- const struct osl_object *obj2);
-
-/**
- * The osl_rbreee_loop functions take a function pointer of this type. For each
- * node in the rbtree, the given function is called.
- *
- * \sa osl_rbtree_loop(), osl_rbtree_loop_reverse().
- */
-typedef int osl_rbtree_loop_func(struct osl_row *row, void *data);
-
-/**
- * Describes one column of a osl table.
- */
-struct osl_column_description {
- /** One of the three possible types of storage, \sa osl_storage_type. */
- uint16_t storage_type;
- /** Specifies further properties of the column, \sa osl_storage_flags. */
- uint16_t storage_flags;
- /**
- * The column name determines the name of the directory where all data
- * for this column will be stored. Its hash is stored in the table
- * header. This field is ignored if the storage type is \a NO_STORAGE.
- */
- char *name;
- /**
- * For columns with an associated rbtree, this must point to a function
- * that compares the values of two objects, either a built-in function
- * or a function defined by the application may be supplied. This
- * field is ignored if the column does not have an associated rbtree.
- *
- * \sa osl_storage_flags, osl_compare_func
- */
- osl_compare_func *compare_function;
- /**
- * If the \a OSL_FIXED_SIZE flag is set for this column, this value
- * describes the number of bytes of each object of this column. It is
- * ignored, if \a OSL_FIXED_SIZE is not set.
- */
- uint32_t data_size;
-};
-
-/**
- * Describes one osl table.
- *
- * A pointer to the table description is passed to \ref osl_create_table() and
- * \ref osl_open_table(). The osl library calls which operate on an open table
- * refer to the fields of the table description through this pointer. Hence the
- * table description must not be modified or freed before the table is closed.
- */
-struct osl_table_description {
- /**
- * The directory which contains all files of this table. This may be
- * either relative to the cwd or an absolute path.
- */
- const char *dir;
- /**
- * The table name. A subdirectory of \a dir called \a name is created
- * at table creation time. It must be a valid name for a subdirectory.
- * In particular, no slashes are allowed for \a name.
- */
- const char *name;
- /** The number of columns of this table. */
- uint16_t num_columns;
- /** Further table-wide information, \sa osl_table_flags. */
- uint8_t flags;
- /** The array describing the individual columns of the table. */
- struct osl_column_description *column_descriptions;
-};
-
-/** Flags to be passed to \a osl_close_table(). */
-enum osl_close_flags {
- /**
- * The table header contains a "dirty" flag which indicates whether the
- * table is currently held open by another process. The \a
- * OSL_MARK_CLEAN flag instructs libosl to clear the dirty flag when
- * the table is closed.
- */
- OSL_MARK_CLEAN = 1,
- /**
- * If the table contains columns of type \a OSL_NO_STORAGE and this
- * flag is passed to osl_close_table(), free(3) is called for each
- * object of each column of type \a OSL_NO_STORAGE.
- */
- OSL_FREE_VOLATILE = 2
-};
-
-/**
- * Create a new osl table.
- *
- * \param desc Pointer to the table description.
- *
- * \return Standard.
- */
-int osl_create_table(const struct osl_table_description *desc);
-
-/**
- * Open an osl table.
- *
- * Each osl table must be opened before its data can be accessed.
- *
- * \param desc Describes the table to be opened.
- * \param result Contains a pointer to the open table on success.
- *
- * The table description given by \a desc should coincide with the
- * description used at creation time.
- *
- * \return Standard.
- */
-int osl_open_table(const struct osl_table_description *desc,
- struct osl_table **result);
-
-/**
- * Close an osl table.
- *
- * \param t Pointer to the table to be closed.
- * \param flags Options for what should be cleaned up.
- *
- * If osl_open_table() succeeds, the resulting table pointer must later be
- * passed to this function in order to flush all changes to the file system and
- * to free the resources that were allocated by osl_open_table().
- *
- * \return Standard.
- *
- * \sa osl_open_table(), unmap_table().
- */
-int osl_close_table(struct osl_table *t, enum osl_close_flags flags);
-
-/**
- * Get the row that contains the given object.
- *
- * \param t Pointer to an open osl table.
- * \param col_num The number of the column to be searched.
- * \param obj The object to be looked up.
- * \param result Points to the row containing \a obj.
- *
- * Lookup \a obj in \a t and return the row containing \a obj. The column
- * specified by \a col_num must have an associated rbtree.
- *
- * \return Standard. \a result is set to \p NULL if and only if the function
- * returns negative.
- *
- * \sa osl_storage_flags
- */
-int osl_get_row(const struct osl_table *t, unsigned col_num,
- const struct osl_object *obj, struct osl_row **result);
-
-/**
- * Retrieve an object identified by row and column.
- *
- * \param t Pointer to an open osl table.
- * \param row Pointer to the row.
- * \param col_num The column number.
- * \param object The result pointer.
- *
- * The column determined by \a col_num must be of type \p OSL_MAPPED_STORAGE
- * or \p OSL_NO_STORAGE, i.e. no disk storage objects may be retrieved by this
- * function.
- *
- * \return Standard.
- *
- * \sa osl_storage_type, osl_open_disk_object().
- */
-int osl_get_object(const struct osl_table *t, const struct osl_row *row,
- unsigned col_num, struct osl_object *object);
-
-/**
- * Retrieve an object of type \p OSL_DISK_STORAGE by row and column.
- *
- * \param t Pointer to an open osl table.
- * \param r Pointer to the row containing the object.
- * \param col_num The column number.
- * \param obj Points to the result upon successful return.
- *
- * For columns of type \p OSL_DISK_STORAGE, this function must be used to
- * retrieve one of its containing objects. Afterwards, osl_close_disk_object()
- * must be called in order to deallocate the resources.
- *
- * \return Standard.
- *
- * \sa osl_get_object(), osl_storage_type, osl_close_disk_object().
- */
-int osl_open_disk_object(const struct osl_table *t,
- const struct osl_row *r, unsigned col_num, struct osl_object *obj);
-
-/**
- * Free resources that were allocated during osl_open_disk_object().
- *
- * \param obj Pointer to the object previously returned by open_disk_object().
- *
- * \return The return value of the underlying call to munmap().
- *
- * \sa munmap(2).
- */
-int osl_close_disk_object(struct osl_object *obj);
-
-/**
- * Add a new row to an osl table and retrieve this row.
- *
- * \param t Pointer to an open osl table.
- * \param objects Array of objects to be added.
- * \param row Result pointer.
- *
- * The \a objects parameter must point to an array containing one object per
- * column. The order of the objects in the array is given by the table
- * description of \a table. Several sanity checks are performed during object
- * insertion and the function returns without modifying the table if any of
- * these tests fail. In fact, it is atomic in the sense that it either
- * succeeds or leaves the table unchanged (i.e. either all or none of the
- * objects are added to the table).
- *
- * It is considered an error if an object is added to a column with associated
- * rbtree if this object is equal to an object already contained in that column
- * (i.e. the compare function for the column's rbtree returns zero).
- *
- * \return Standard.
- *
- * \sa struct osl_table_description, osl_compare_func, osl_add_row().
- */
-int osl_add_and_get_row(struct osl_table *t, struct osl_object *objects,
- struct osl_row **row);
-
-/**
- * Add a new row to an osl table.
- *
- * \param t Same meaning as osl_add_and_get_row().
- * \param objects Same meaning as osl_add_and_get_row().
- *
- * \return The return value of the underlying call to osl_add_and_get_row().
- *
- * This is equivalent to osl_add_and_get_row(t, objects, NULL).
- */
-int osl_add_row(struct osl_table *t, struct osl_object *objects);
-
-/**
- * Delete a row from an osl table.
- *
- * \param t Pointer to an open osl table.
- * \param row Pointer to the row to delete.
- *
- * This removes all disk storage objects, removes all rbtree nodes, and frees
- * all volatile objects belonging to the given row. For mapped columns, the
- * data is merely marked invalid and may be pruned from time to time by
- * oslfsck.
- *
- * \return Standard.
- */
-int osl_del_row(struct osl_table *t, struct osl_row *row);
-
-/**
- * Loop over all nodes in an rbtree.
- *
- * \param t Pointer to an open osl table.
- * \param col_num The column to use for iterating over the elements.
- * \param private_data Pointer that gets passed to \a func.
- * \param func The function to be called for each node in the rbtree.
- *
- * This function does an in-order walk of the rbtree associated with \a
- * col_num. It is an error if the \p OSL_RBTREE flag is not set for this
- * column. For each node in the rbtree, the given function \a func is called
- * with two pointers as arguments: The first osl_row* argument points to the
- * row that contains the object corresponding to the rbtree node currently
- * traversed, and the \a private_data pointer is passed verbatim to \a func as the
- * second argument. The loop terminates either if \a func returns a negative
- * value, or if all nodes of the tree have been visited.
- *
- * \return Standard. If the termination of the loop was caused by \a func
- * returning a negative value, \p -E_OSL_LOOP is returned. This is the only
- * possible error.
- *
- * \sa osl_storage_flags, osl_rbtree_loop_reverse(), osl_compare_func.
- */
-int osl_rbtree_loop(const struct osl_table *t, unsigned col_num,
- void *private_data, osl_rbtree_loop_func *func);
-
-/**
- * Loop over all nodes in an rbtree in reverse order.
- *
- * \param t Identical meaning as in \p osl_rbtree_loop().
- * \param col_num Identical meaning as in \p osl_rbtree_loop().
- * \param private_data Identical meaning as in \p osl_rbtree_loop().
- * \param func Identical meaning as in \p osl_rbtree_loop().
- *
- * This function is identical to \p osl_rbtree_loop(), the only difference
- * is that the tree is walked in reverse order.
- *
- * \return The same return value as \p osl_rbtree_loop().
- *
- * \sa osl_rbtree_loop().
- */
-int osl_rbtree_loop_reverse(const struct osl_table *t, unsigned col_num,
- void *private_data, osl_rbtree_loop_func *func);
-
-/**
- * Change an object in an osl table.
- *
- * \param t Pointer to an open osl table.
- * \param r Pointer to the row containing the object to be updated.
- * \param col_num Number of the column containing the object to be updated.
- * \param obj Pointer to the replacement object.
- *
- * This function gets rid of all references to the old object. This includes
- * removal of the rbtree node in case there is an rbtree associated with \a
- * col_num. It then inserts \a obj into the table and the rbtree if necessary.
- *
- * If the \p OSL_RBTREE flag is set for \a col_num, you \b MUST call this
- * function in order to change the contents of an object, even for volatile or
- * mapped columns of constant size (which may be updated directly if \p
- * OSL_RBTREE is not set). Otherwise the rbtree might become corrupt.
- *
- * \return Standard
- */
-int osl_update_object(struct osl_table *t, const struct osl_row *r,
- unsigned col_num, struct osl_object *obj);
-
-/**
- * Get the number of rows of the given table.
- *
- * \param t Pointer to an open osl table.
- * \param num_rows Result is returned here.
- *
- * The number of rows returned via \a num_rows excluding any invalid rows.
- *
- * \return Positive on success, \p -E_OSL_BAD_TABLE if \a t is \p NULL.
- */
-int osl_get_num_rows(const struct osl_table *t, unsigned *num_rows);
-
-/**
- * Get the row corresponding to the smallest rbtree node of a column.
- *
- * \param t An open rbtree table.
- * \param col_num The number of the rbtree column.
- * \param result A pointer to the first row is returned here.
- *
- * The rbtree node of the smallest object (with respect to the corresponding
- * compare function) is selected and the row containing this object is
- * returned. It is an error if \a col_num refers to a column without an
- * associated rbtree.
- *
- * \return Standard.
- *
- * \sa osl_get_nth_row(), osl_rbtree_last_row().
- */
-int osl_rbtree_first_row(const struct osl_table *t, unsigned col_num,
- struct osl_row **result);
-
-/**
- * Get the row corresponding to the greatest rbtree node of a column.
- *
- * \param t The same meaning as in \p osl_rbtree_first_row().
- * \param col_num The same meaning as in \p osl_rbtree_first_row().
- * \param result The same meaning as in \p osl_rbtree_first_row().
- *
- * This function works just like osl_rbtree_first_row(), the only difference
- * is that the row containing the greatest rather than the smallest object is
- * returned.
- *
- * \return Standard.
- *
- * \sa osl_get_nth_row(), osl_rbtree_first_row().
- */
-int osl_rbtree_last_row(const struct osl_table *t, unsigned col_num,
- struct osl_row **result);
-
-/**
- * Get the row with n-th greatest value.
- *
- * \param t Pointer to an open osl table.
- * \param col_num The column number.
- * \param n The rank of the desired row.
- * \param result Row is returned here.
- *
- * Retrieve the n-th order statistic with respect to the compare function
- * of the rbtree column \a col_num. In other words, get the row with
- * \a n th greatest value in column \a col_num. It is an error if
- * \a col_num is not a rbtree column, or if \a n is larger than the
- * number of rows in the table.
- *
- * \return Standard.
- *
- * \sa osl_storage_flags, osl_compare_func, osl_get_row(),
- * osl_rbtree_last_row(), osl_rbtree_first_row(), osl_get_rank().
- */
-int osl_get_nth_row(const struct osl_table *t, unsigned col_num,
- unsigned n, struct osl_row **result);
-
-/**
- * Get the rank of a row.
- *
- * \param t An open osl table.
- * \param r The row to get the rank of.
- * \param col_num The number of an rbtree column.
- * \param rank Result pointer.
- *
- * The rank is, by definition, the position of the row in the linear order
- * determined by an in-order tree walk of the rbtree associated with column
- * number \a col_num of \a table.
- *
- * \return Standard.
- *
- * \sa osl_get_nth_row().
- */
-int osl_get_rank(const struct osl_table *t, struct osl_row *r,
- unsigned col_num, unsigned *rank);
-
-/**
- * Get a string describing the error code passed in the argument.
- *
- * \param num The error code.
- *
- * This works just like strerror(3). The given number must be an osl error
- * code. The result must not be freed by the caller.
- *
- * \return The error text corresponding to an osl error code.
- */
-const char *osl_strerror(int num);
-
-#pragma GCC visibility pop
diff --git a/osl.h.m4 b/osl.h.m4
new file mode 100644
index 0000000..0074508
--- /dev/null
+++ b/osl.h.m4
@@ -0,0 +1,613 @@
+VERBATIM_C(«
+/*
+ * Copyright (C) 2007-2009 Andre Noll
+ *
+ * Licensed under the GPL v2. For licencing details see COPYING.
+ */
+
+/* User interface for the object storage layer. */
+
+#include
+#include
+
+/* Export all declarations in this file. */
+#pragma GCC visibility push(default)
+»)
+
+DECLARE_COMPOUND(
+ «struct osl_object»,
+ «Describes an object of the object storage layer.»,
+ «»,
+ «
+ «void *data», «Pointer to the data of the object.»,
+ «size_t size», «The object's size.»
+ »
+)
+
+DECLARE_ENUM(
+ «osl_table_flags»,
+ «Flags that change the internal handling of osl tables.»,
+ «»,
+ «
+ «OSL_LARGE_TABLE = 1»,
+ «This table will have many rows.»
+ »
+)
+
+DECLARE_ENUM(
+ «osl_storage_type»,
+ «The three different types of storage for an osl column.»,
+ «»,
+ «
+ «OSL_MAPPED_STORAGE»,
+ «All data for this column is stored in one file which gets mmapped
+ by osl_open_table(). This is suitable for columns that do not hold
+ much data.»,
+
+ «OSL_DISK_STORAGE»,
+ «Each entry is stored on disk and is loaded on demand by
+ open_disk_object(). This is the preferable storage type for large
+ objects that need not be in memory all the time.»,
+
+ «OSL_NO_STORAGE»,
+ «Objects for columns of this type are volatile: They are only stored
+ in memory and are discarded when the table is closed.»
+ »
+)
+
+DECLARE_ENUM(
+ «osl_storage_flags»,
+ «Additional per-column flags.»,
+ «»,
+ «
+ «OSL_RBTREE = 1»,
+ «Build an rbtree for this column. This is only possible if the storage
+ type of the column is either OSL_MAPPED_STORAGE or OSL_NO_STORAGE. In
+ order to lookup objects in the table by using osl_get_row(), the
+ lookup column must have an associated rbtree.
+
+ See also: osl_storage_type, osl_get_row()»,
+
+ «OSL_FIXED_SIZE = 2»,
+ «The data for this column will have constant size.»,
+
+ «OSL_UNIQUE = 4»,
+ «All values are different. Must be set if OSL_RBTREE is set.»,
+
+ «OSL_DONT_FREE = 8»,
+ «Do not free the data for this column (OSL_NO_STORAGE).»
+ »
+)
+
+STATEMENT(
+ «struct osl_table»,
+ «Opaque osl table structure.»
+)
+
+STATEMENT(
+ «struct osl_row»,
+ «Opaque osl row structure.»
+)
+
+STATEMENT(
+ «typedef int osl_compare_func(const struct osl_object *obj1, const struct osl_object *obj2)»,
+ «Comparator for rbtree nodes.»,
+ «To build an rbtree, a compare function for the objects must be
+ provided. This function takes pointers to the two objects to be
+ compared. It must return -1, zero, or 1, if the first argument is
+ considered to be respectively less than, equal to, or greater than
+ the second. If two members compare as equal, their order in the rbtree
+ is undefined.»
+)
+
+STATEMENT(
+ «typedef int osl_rbtree_loop_func(struct osl_row *row, void *data)»,
+ «Loop callback function.»,
+ «The osl_rbreee_loop functions take a function pointer of this
+ type. For each node in the rbtree, the given function is called.
+
+ See also: osl_rbtree_loop(), osl_rbtree_loop_reverse().»
+)
+
+DECLARE_COMPOUND(
+ «struct osl_column_description»,
+ «Describes one column of an osl table.»,
+ «», «
+ «uint16_t storage_type»,
+ «One of the three possible types of storage. See also:
+ osl_storage_type.»,
+
+ «uint16_t storage_flags»,
+ «Specifies further properties of the column. See also:
+ osl_storage_flags.»,
+
+ «char *name»,
+ «The column name determines the name of the directory where all
+ data for this column will be stored. Its hash is stored in the table
+ header. This field is ignored if the storage type is NO_STORAGE.»,
+
+ «osl_compare_func *compare_function»,
+ «For columns with an associated rbtree, this must point to a function
+ that compares the values of two objects, either a built-in function
+ or a function defined by the application may be supplied. This field
+ is ignored if the column does not have an associated rbtree.
+
+ See also: osl_storage_flags, osl_compare_func»,
+
+ «uint32_t data_size»,
+ «If the OSL_FIXED_SIZE flag is set for this column, this value
+ describes the number of bytes of each object of this column. It is
+ ignored, if OSL_FIXED_SIZE is not set.»
+ »
+)
+
+DECLARE_COMPOUND(
+ «struct osl_table_description»,
+ «Describes one osl table.»,
+ «A pointer to the table description is passed to osl_create_table()
+ and osl_open_table(). The osl library calls which operate on an
+ open table refer to the fields of the table description through this
+ pointer. Hence the table description must not be modified or freed
+ before the table is closed.»,
+
+ «
+ «const char *dir»,
+ «The directory which contains all files of this table. This may be
+ either relative to the cwd or an absolute path.»,
+
+ «const char *name»,
+ «The table name. A subdirectory of dir called name is created at
+ table creation time. It must be a valid name for a subdirectory.
+ In particular, no slashes are allowed in the name.»,
+
+ «uint16_t num_columns»,
+ «The number of columns of this table.»,
+
+ «uint8_t flags»,
+ «Further table-wide information, see osl_table_flags.»,
+
+ «struct osl_column_description *column_descriptions»,
+ «The array describing the individual columns of the table.»
+ »
+)
+
+DECLARE_ENUM(
+ «osl_close_flags»,
+ «Flags to be passed to osl_close_table().»,
+ «»,
+ «
+ «OSL_MARK_CLEAN = 1»,
+ «The table header contains a "dirty" flag which indicates whether the
+ table is currently held open by another process. The OSL_MARK_CLEAN
+ flag instructs libosl to clear the dirty flag when the table is
+ closed.»,
+
+ «OSL_FREE_VOLATILE = 2»,
+ «If the table contains columns of type OSL_NO_STORAGE and this flag
+ is passed to osl_close_table(), free(3) is called for each object of
+ each column of type OSL_NO_STORAGE.»
+ »
+)
+
+DECLARE_FUNCTION(
+ «osl_create_table»,
+ «Create a new osl table.»,
+ «»,
+ «
+ «const struct osl_table_description *desc»,
+ «Pointer to the table description»
+ »,
+ «»,
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_open_table»,
+ «Open an osl table.»,
+ «An osl table must be opened before its data can be accessed.»,
+ «
+ «const struct osl_table_description *desc»,
+ «Describes the table to be opened»,
+
+ «struct osl_table **result»,
+ «Contains a pointer to the open table on success.»
+ »,
+ «The table description given by desc should coincide with the
+ description used at creation time.»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_close_table»,
+ «Close an osl table.»,
+ «»,
+ «
+ «struct osl_table *t»,
+ «Pointer to the table to be closed.»,
+
+ «enum osl_close_flags flags»,
+ «Options for what should be cleaned up.»
+ »,
+ «If osl_open_table() succeeds, the resulting table pointer must
+ later be passed to this function in order to flush all changes to
+ the file system and to free the resources that were allocated by
+ osl_open_table().»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_get_row»,
+ «Get the row that contains the given object.»,
+ «»,
+ «
+ «const struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «unsigned col_num»,
+ «The number of the column to be searched»,
+
+ «const struct osl_object *obj»,
+ «The object to be looked up»,
+
+ «struct osl_row **result»,
+ «Points to the row containing the given object»
+ »,
+ «Lookup the given object and return the row containing it. The column
+ specified by col_num must have an associated rbtree.»,
+
+ «int»,
+ «Standard. The result pointer is set to NULL if and only if the
+ function returns negative.»
+)
+
+DECLARE_FUNCTION(
+ «osl_get_object»,
+ «Retrieve an object identified by row and column.»,
+ «»,
+ «
+ «const struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «const struct osl_row *row»,
+ «Pointer to the row»,
+
+ «unsigned col_num»,
+ «The column number»,
+
+ «struct osl_object *object»,
+ «The result pointer»
+ »,
+ «The column determined by col_num must be of type OSL_MAPPED_STORAGE
+ or OSL_NO_STORAGE, i.e. no disk storage objects may be retrieved by
+ this function.
+
+ See also: osl_storage_type, osl_open_disk_object().»,
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_open_disk_object»,
+ «Retrieve an object of type OSL_DISK_STORAGE by row and column.»,
+ «For columns of type OSL_DISK_STORAGE this function must be
+ used to retrieve one of its containing objects. Afterwards,
+ osl_close_disk_object() must be called in order to deallocate the
+ resources.»,
+
+ «
+ «const struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «const struct osl_row *r»,
+ «Pointer to the row containing the object»,
+
+ «unsigned col_num»,
+ «The column number»,
+
+ «struct osl_object *obj»,
+ «Points to the result upon successful return»
+ »,
+ «See also: osl_get_object(), osl_storage_type,
+ osl_close_disk_object().»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_close_disk_object»,
+ «Free resources allocated during osl_open_disk_object().», «
+ », «
+ «struct osl_object *obj»,
+ «Pointer to the object previously returned by open_disk_object()»
+ »,
+ «»,
+ «int», «The return value of the underlying call to munmap(2)»
+)
+
+DECLARE_FUNCTION(
+ «osl_add_and_get_row»,
+ «Add a new row to an osl table and retrieve this row.»,
+ «»,
+ «
+ «struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «struct osl_object *objects»,
+ «Array of objects to be added»,
+
+ «struct osl_row **row»,
+ «Result pointer»
+ »,
+ «The objects parameter must point to an array containing one object
+ per column. The order of the objects in the array is given by the
+ table description of the table. Several sanity checks are performed
+ during object insertion and the function returns without modifying the
+ table if any of these tests fail. In fact, it is atomic in the sense
+ that it either succeeds or leaves the table unchanged (i.e. either
+ all or none of the objects are added to the table).
+
+ See also: struct osl_table_description, osl_compare_func,
+ osl_add_row().»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_add_row»,
+ «Add a new row to an osl table.»,
+ «»,
+ «
+ «struct osl_table *t»,
+ «Same meaning as osl_add_and_get_row()»,
+
+ «struct osl_object *objects»,
+ «Same meaning as osl_add_and_get_row()»
+ »,
+ «This is equivalent to calling osl_add_and_get_row(t, objects,
+ NULL);»,
+
+ «int»,
+ «The return value of the underlying call to osl_add_and_get_row()»
+)
+
+DECLARE_FUNCTION(
+ «osl_del_row»,
+ «Delete a row from an osl table.»,
+ «»,
+ «
+ «struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «struct osl_row *row»,
+ «Pointer to the row to delete»
+ »,
+ «This removes all disk storage objects, removes all rbtree nodes,
+ and frees all volatile objects belonging to the given row. For mapped
+ columns, the data is merely marked invalid and may be pruned from
+ time to time by oslfsck(1).»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_rbtree_loop»,
+ «Loop over all nodes in an rbtree.»,
+ «»,
+ «
+ «const struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «unsigned col_num»,
+ «The column to use for iterating over the elements»,
+
+ «void *private_data»,
+ «Pointer that gets passed to the callback function»,
+
+ «osl_rbtree_loop_func *func»,
+ «This callback is called for each node in the rbtree.»
+ »,
+ «This function does an in-order walk of the rbtree associated with
+ col_num. It is an error if the OSL_RBTREE flag is not set for this
+ column. For each node in the rbtree, the given function func is called
+ with two pointers as arguments: The first osl_row* argument points
+ to the row that contains the object corresponding to the rbtree node
+ currently traversed, and the private_data pointer is passed verbatim as
+ the second argument. The loop terminates either if the callback returns
+ a negative value, or if all nodes of the tree have been visited.»,
+
+ «int»,
+ «Standard. If the termination of the loop was caused by the callback
+ returning a negative value, -E_OSL_LOOP is returned. This is the only
+ possible error.»
+)
+
+DECLARE_FUNCTION(
+ «osl_rbtree_loop_reverse»,
+ «Loop over all nodes in an rbtree in reverse order.»,
+ «This function is identical to osl_rbtree_loop(), the only difference
+ is that the tree is walked in reverse order.»,
+ «
+ «const struct osl_table *t»,
+ «See osl_rbtree_loop()»,
+
+ «unsigned col_num»,
+ «See osl_rbtree_loop()»,
+
+ «void *private_data»,
+ «See osl_rbtree_loop()»,
+
+ «osl_rbtree_loop_func *func»,
+ «See osl_rbtree_loop()»
+ »,
+ «See also: osl_rbtree_loop().»,
+ «int»,
+ «The same return value as osl_rbtree_loop()»
+)
+
+DECLARE_FUNCTION(
+ «osl_update_object»,
+ «Change an object of an osl table.»,
+ «»,
+ «
+ «struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «const struct osl_row *r»,
+ «Pointer to the row containing the object to be updated»,
+
+ «unsigned col_num»,
+ «Number of the column containing the object to be updated»,
+
+ «struct osl_object *obj»,
+ «Pointer to the replacement object»
+ »,
+ «This function gets rid of all references to the old object. This
+ includes removal of the rbtree node in case there is an rbtree
+ associated with col_num. It then inserts obj into the table and the
+ rbtree if necessary.»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_get_num_rows»,
+ «Get the number of rows of the given table.»,
+ «»,
+ «
+ «const struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «unsigned *num_rows»,
+ «Result is returned here»
+ »,
+ «The number of rows returned excludes any invalid rows.»,
+
+ «int»,
+ «Positive on success, -E_OSL_BAD_TABLE if t is NULL»
+)
+
+DECLARE_FUNCTION(
+ «osl_rbtree_first_row»,
+ «Get the row corresponding to the smallest rbtree node of a column.»,
+ «»,
+ «
+ «const struct osl_table *t»,
+ «An open table»,
+
+ «unsigned col_num»,
+ «The number of the rbtree column»,
+
+ «struct osl_row **result»,
+ «A pointer to the first row is returned here»
+ »,
+ «The rbtree node of the smallest object (with respect to the
+ corresponding compare function) is selected and the row containing
+ this object is returned. It is an error if col_num refers to a column
+ without an associated rbtree.
+
+ See also: osl_get_nth_row(), osl_rbtree_last_row().»,
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_rbtree_last_row»,
+ «Get the row corresponding to the greatest rbtree node of a column.»,
+ «This function works just like osl_rbtree_first_row(), the only
+ difference is that the row containing the greatest rather than the
+ smallest object is returned.»,
+
+ «
+ «const struct osl_table *t»,
+ «See osl_rbtree_first_row()»,
+
+ «unsigned col_num»,
+ «See osl_rbtree_first_row()»,
+
+ «struct osl_row **result»,
+ «See osl_rbtree_first_row()»
+ »,
+ «See also: osl_get_nth_row(), osl_rbtree_first_row()»,
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_get_nth_row»,
+ «Get the row with n-th greatest value.»,
+ «»,
+ «
+ «const struct osl_table *t»,
+ «Pointer to an open osl table»,
+
+ «unsigned col_num»,
+ «The column number»,
+
+ «unsigned n»,
+ «The rank of the desired row»,
+
+ «struct osl_row **result»,
+ «Row is returned here»
+ »,
+ «Retrieve the n-th order statistic with respect to the compare
+ function of the rbtree column col_num. In other words, get the row
+ with n-th greatest value in column col_num. It is an error if col_num
+ is not a rbtree column, or if n is larger than the number of rows in
+ the table.»,
+
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_get_rank»,
+ «Get the rank of a row.»,
+ «The rank is, by definition, the position of the row in the linear
+ order determined by an in-order tree walk of the rbtree associated
+ with given column number.»,
+
+ «
+ «const struct osl_table *t»,
+ «An open osl table»,
+
+ «struct osl_row *r»,
+ «The row to get the rank of»,
+
+ «unsigned col_num»,
+ «The number of an rbtree column»,
+
+ «unsigned *rank»,
+ «Result pointer»
+ »,
+ «See also: osl_get_nth_row().»,
+ «int»,
+ «Standard»
+)
+
+DECLARE_FUNCTION(
+ «osl_strerror»,
+ «Get a string describing the error code passed in the argument.»,
+ «»,
+ «
+ «int num»,
+ «The error code»
+ »,
+ «This works just like strerror(3). The given number must be an osl
+ error code. The result must not be freed by the caller.»,
+
+ «const char *»,
+ «The error text corresponding to an osl error code»
+)
+
+VERBATIM_C(«
+#pragma GCC visibility pop
+»)
diff --git a/web/.gitignore b/web/.gitignore
index f5fef53..0ad879c 100644
--- a/web/.gitignore
+++ b/web/.gitignore
@@ -1,4 +1,4 @@
-doxygen
+api.html
osl.png
index.html
oslfsck.1.html
diff --git a/web/Doxyfile b/web/Doxyfile
deleted file mode 100644
index 37ea597..0000000
--- a/web/Doxyfile
+++ /dev/null
@@ -1,2305 +0,0 @@
-# Doxyfile 1.8.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME =
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
-#
-# Note For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if ... \endif and \cond
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text "
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT = . \
- examples
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS = osl.h \
- osltar.c \
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-#
-#
-# where is the value of the INPUT_FILTER tag, and is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = NO
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = web/doxygen
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER = web/header.html
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER = web/footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use + S
-# (what the is depends on the OS and browser, but it is typically
-# , /