chiark / gitweb /
add functions for dumping server state
[elogind.git] / name.h
diff --git a/name.h b/name.h
index 3b364f00f364feec40170200e8a7a997299d45b2..116523453763e2a5bdf1c7aa35fc176851c598a5 100644 (file)
--- a/name.h
+++ b/name.h
@@ -39,27 +39,37 @@ typedef enum NameType {
 typedef enum NameState {
         NAME_STUB,
         NAME_LOADED,
-        NAME_FAILED
+        NAME_FAILED,
+        _NAME_STATE_MAX
 } NameState;
 
-struct Meta {
-        Manager *manager;
-        NameType type;
-        NameState state;
-
-        char **names;
-
+typedef enum NameDependency {
         /* Positive dependencies */
-        Set *requires, *soft_requires, *wants, *requisite, *soft_requisite;
-        Set *required_by;    /* inverse of 'requires', 'soft_requires', 'requisite' and 'soft_requisite' is 'required_by' */
+        NAME_REQUIRES,
+        NAME_SOFT_REQUIRES,
+        NAME_WANTS,
+        NAME_REQUISITE,
+        NAME_SOFT_REQUISITE,
+        NAME_REQUIRED_BY,   /* inverse of 'requires' and 'requisite' is 'required_by' */
+        NAME_WANTED_BY,     /* inverse of 'wants', 'soft_requires' and 'soft_requisite' is 'wanted_by' */
 
         /* Negative dependencies */
-        Set *conflicts;      /* inverse of 'conflicts' is 'conflicts' */
+        NAME_CONFLICTS,     /* inverse of 'conflicts' is 'conflicts' */
 
         /* Order */
-        Set *before, *after; /* inverse of before is after and vice versa */
+        NAME_BEFORE,        /* inverse of before is after and vice versa */
+        NAME_AFTER,
+        _NAME_DEPENDENCY_MAX
+} NameDependency;
+
+struct Meta {
+        Manager *manager;
+        NameType type;
+        NameState state;
+
+        Set *names;
+        Set *dependencies[_NAME_DEPENDENCY_MAX];
 
-        /* Information */
         char *description;
 
         /* If there is something to do with this name, then this is
@@ -260,11 +270,15 @@ DEFINE_CAST(SNAPSHOT, Snapshot, snapshot);
 
 bool name_is_ready(Name *name);
 NameType name_type_from_string(const char *n);
+bool name_is_valid(const char *n);
 
 Name *name_new(Manager *m);
 void name_free(Name *name);
 int name_link(Name *name);
-
+int name_merge(Name *name, Name *other);
 int name_augment(Name *n);
+const char* name_id(Name *n);
+
+void name_dump(Name *n, FILE *f);
 
 #endif