[tor-commits] [tor/master] Add FOO_type_defn globals so that confdecl.h can refer to them.

nickm at torproject.org nickm at torproject.org
Thu Nov 7 13:59:49 UTC 2019


commit 683d4c2bc8379084062dfd79d679e89c2713ff50
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Oct 30 15:58:14 2019 -0400

    Add FOO_type_defn globals so that confdecl.h can refer to them.
---
 src/lib/conf/confdecl.h     |   1 +
 src/lib/confmgt/type_defs.c | 121 +++++++++++++++++++++++++++++---------------
 2 files changed, 80 insertions(+), 42 deletions(-)

diff --git a/src/lib/conf/confdecl.h b/src/lib/conf/confdecl.h
index 22812f046..f6f9dc527 100644
--- a/src/lib/conf/confdecl.h
+++ b/src/lib/conf/confdecl.h
@@ -161,6 +161,7 @@ extern const struct var_type_def_t CSV_INTERVAL_type_defn;
 extern const struct var_type_def_t LINELIST_type_defn;
 extern const struct var_type_def_t LINELIST_V_type_defn;
 extern const struct var_type_def_t LINELIST_S_type_defn;
+extern const struct var_type_def_t OBSOLETE_type_defn;
 /**@}*/
 
 #endif /* !defined(TOR_LIB_CONF_CONFDECL_H) */
diff --git a/src/lib/confmgt/type_defs.c b/src/lib/confmgt/type_defs.c
index f39f1c3d8..0bf82ee93 100644
--- a/src/lib/confmgt/type_defs.c
+++ b/src/lib/confmgt/type_defs.c
@@ -17,6 +17,7 @@
 
 #include "orconfig.h"
 #include "lib/conf/conftypes.h"
+#include "lib/conf/confdecl.h"
 #include "lib/confmgt/typedvar.h"
 #include "lib/confmgt/type_defs.h"
 #include "lib/confmgt/unitparse.h"
@@ -720,50 +721,86 @@ static const var_type_fns_t ignore_fns = {
   .encode = ignore_encode,
 };
 
+const var_type_def_t STRING_type_defn = {
+  .name="String", .fns=&string_fns };
+const var_type_def_t FILENAME_type_defn = {
+  .name="Filename", .fns=&string_fns };
+const var_type_def_t INT_type_defn = {
+  .name="SignedInteger", .fns=&int_fns,
+  .params=&INT_PARSE_UNRESTRICTED };
+const var_type_def_t POSINT_type_defn = {
+  .name="Integer", .fns=&int_fns,
+  .params=&INT_PARSE_POSINT };
+const var_type_def_t UINT64_type_defn = {
+  .name="Integer", .fns=&uint64_fns, };
+const var_type_def_t MEMUNIT_type_defn = {
+  .name="DataSize", .fns=&memunit_fns,
+  .params=&memory_units };
+const var_type_def_t INTERVAL_type_defn = {
+  .name="TimeInterval", .fns=&interval_fns,
+  .params=&time_units };
+const var_type_def_t MSEC_INTERVAL_type_defn = {
+  .name="TimeMsecInterval",
+  .fns=&interval_fns,
+  .params=&time_msec_units };
+const var_type_def_t DOUBLE_type_defn = {
+  .name="Float", .fns=&double_fns, };
+const var_type_def_t BOOL_type_defn = {
+  .name="Boolean", .fns=&enum_fns,
+  .params=&enum_table_bool };
+const var_type_def_t AUTOBOOL_type_defn = {
+  .name="Boolean+Auto", .fns=&enum_fns,
+  .params=&enum_table_autobool };
+const var_type_def_t ISOTIME_type_defn = {
+  .name="Time", .fns=&time_fns, };
+const var_type_def_t CSV_type_defn = {
+  .name="CommaList", .fns=&csv_fns, };
+const var_type_def_t CSV_INTERVAL_type_defn = {
+  .name="TimeInterval",
+  .fns=&legacy_csv_interval_fns, };
+const var_type_def_t LINELIST_type_defn = {
+  .name="LineList", .fns=&linelist_fns,
+  .flags=CFLG_NOREPLACE };
+/*
+ * A "linelist_s" is a derived view of a linelist_v: inspecting
+ * it gets part of a linelist_v, and setting it adds to the linelist_v.
+ */
+const var_type_def_t LINELIST_S_type_defn = {
+  .name="Dependent", .fns=&linelist_s_fns,
+  .flags=CFLG_NOREPLACE|
+  /* The operations we disable here are
+   * handled by the linelist_v. */
+  CFLG_NOCOPY|CFLG_NOCMP|CFLG_NODUMP };
+const var_type_def_t LINELIST_V_type_defn = {
+  .name="Virtual", .fns=&linelist_v_fns,
+  .flags=CFLG_NOREPLACE|CFLG_NOSET };
+const var_type_def_t OBSOLETE_type_defn = {
+  .name="Obsolete", .fns=&ignore_fns,
+  .flags=CFLG_GROUP_OBSOLETE,
+};
+
 /**
  * Table mapping conf_type_t values to var_type_def_t objects.
  **/
-static const var_type_def_t type_definitions_table[] = {
-  [CONFIG_TYPE_STRING] = { .name="String", .fns=&string_fns },
-  [CONFIG_TYPE_FILENAME] = { .name="Filename", .fns=&string_fns },
-  [CONFIG_TYPE_INT] = { .name="SignedInteger", .fns=&int_fns,
-                        .params=&INT_PARSE_UNRESTRICTED },
-  [CONFIG_TYPE_POSINT] = { .name="Integer", .fns=&int_fns,
-                           .params=&INT_PARSE_POSINT },
-  [CONFIG_TYPE_UINT64] = { .name="Integer", .fns=&uint64_fns, },
-  [CONFIG_TYPE_MEMUNIT] = { .name="DataSize", .fns=&memunit_fns,
-                            .params=&memory_units },
-  [CONFIG_TYPE_INTERVAL] = { .name="TimeInterval", .fns=&interval_fns,
-                             .params=&time_units },
-  [CONFIG_TYPE_MSEC_INTERVAL] = { .name="TimeMsecInterval",
-                                  .fns=&interval_fns,
-                                  .params=&time_msec_units },
-  [CONFIG_TYPE_DOUBLE] = { .name="Float", .fns=&double_fns, },
-  [CONFIG_TYPE_BOOL] = { .name="Boolean", .fns=&enum_fns,
-                         .params=&enum_table_bool },
-  [CONFIG_TYPE_AUTOBOOL] = { .name="Boolean+Auto", .fns=&enum_fns,
-                             .params=&enum_table_autobool },
-  [CONFIG_TYPE_ISOTIME] = { .name="Time", .fns=&time_fns, },
-  [CONFIG_TYPE_CSV] = { .name="CommaList", .fns=&csv_fns, },
-  [CONFIG_TYPE_CSV_INTERVAL] = { .name="TimeInterval",
-                                 .fns=&legacy_csv_interval_fns, },
-  [CONFIG_TYPE_LINELIST] = { .name="LineList", .fns=&linelist_fns,
-                             .flags=CFLG_NOREPLACE },
-  /*
-   * A "linelist_s" is a derived view of a linelist_v: inspecting
-   * it gets part of a linelist_v, and setting it adds to the linelist_v.
-   */
-  [CONFIG_TYPE_LINELIST_S] = { .name="Dependent", .fns=&linelist_s_fns,
-                               .flags=CFLG_NOREPLACE|
-                               /* The operations we disable here are
-                                * handled by the linelist_v. */
-                               CFLG_NOCOPY|CFLG_NOCMP|CFLG_NODUMP },
-  [CONFIG_TYPE_LINELIST_V] = { .name="Virtual", .fns=&linelist_v_fns,
-                               .flags=CFLG_NOREPLACE|CFLG_NOSET },
-  [CONFIG_TYPE_OBSOLETE] = {
-         .name="Obsolete", .fns=&ignore_fns,
-         .flags=CFLG_GROUP_OBSOLETE,
-  }
+static const var_type_def_t *type_definitions_table[] = {
+  [CONFIG_TYPE_STRING] = &STRING_type_defn,
+  [CONFIG_TYPE_FILENAME] = &FILENAME_type_defn,
+  [CONFIG_TYPE_INT] = &INT_type_defn,
+  [CONFIG_TYPE_POSINT] = &POSINT_type_defn,
+  [CONFIG_TYPE_UINT64] = &UINT64_type_defn,
+  [CONFIG_TYPE_MEMUNIT] = &MEMUNIT_type_defn,
+  [CONFIG_TYPE_INTERVAL] = &INTERVAL_type_defn,
+  [CONFIG_TYPE_MSEC_INTERVAL] = &MSEC_INTERVAL_type_defn,
+  [CONFIG_TYPE_DOUBLE] = &DOUBLE_type_defn,
+  [CONFIG_TYPE_BOOL] = &BOOL_type_defn,
+  [CONFIG_TYPE_AUTOBOOL] = &AUTOBOOL_type_defn,
+  [CONFIG_TYPE_ISOTIME] = &ISOTIME_type_defn,
+  [CONFIG_TYPE_CSV] = &CSV_type_defn,
+  [CONFIG_TYPE_CSV_INTERVAL] = &CSV_INTERVAL_type_defn,
+  [CONFIG_TYPE_LINELIST] = &LINELIST_type_defn,
+  [CONFIG_TYPE_LINELIST_S] = &LINELIST_S_type_defn,
+  [CONFIG_TYPE_LINELIST_V] = &LINELIST_V_type_defn,
+  [CONFIG_TYPE_OBSOLETE] = &OBSOLETE_type_defn,
 };
 
 /**
@@ -777,5 +814,5 @@ lookup_type_def(config_type_t type)
   tor_assert(t >= 0);
   if (t >= (int)ARRAY_LENGTH(type_definitions_table))
     return NULL;
-  return &type_definitions_table[t];
+  return type_definitions_table[t];
 }





More information about the tor-commits mailing list