changeset 28759:af274aef6b81

Add a 64 bit integer type to the suboption parser.
author reimar
date Mon, 02 Mar 2009 11:17:50 +0000
parents f8625bfd9aa5
children dec2bc0855e8
files m_option.c m_option.h
diffstat 2 files changed, 23 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/m_option.c	Mon Mar 02 11:10:11 2009 +0000
+++ b/m_option.c	Mon Mar 02 11:17:50 2009 +0000
@@ -162,13 +162,20 @@
     return M_OPT_OUT_OF_RANGE;
   }
 
-  if(dst) VAL(dst) = tmp_int;
+  if(dst) {
+    if (opt->type->size == sizeof(int64_t))
+      *(int64_t *)dst = tmp_int;
+    else
+      VAL(dst) = tmp_int;
+  }
 
   return 1;
 }
 
 static char* print_int(const m_option_t* opt,  const void* val) {
   opt = NULL;
+  if (opt->type->size == sizeof(int64_t))
+    return dup_printf("%"PRId64, *(const int64_t *)val);
   return dup_printf("%d",VAL(val));
 }
 
@@ -185,6 +192,19 @@
   NULL
 };
 
+const m_option_type_t m_option_type_int64 = {
+  "Integer64",
+  "",
+  sizeof(int64_t),
+  0,
+  parse_int,
+  print_int,
+  copy_opt,
+  copy_opt,
+  NULL,
+  NULL
+};
+
 // Float
 
 #undef VAL
--- a/m_option.h	Mon Mar 02 11:10:11 2009 +0000
+++ b/m_option.h	Mon Mar 02 11:17:50 2009 +0000
@@ -25,6 +25,7 @@
 // Simple types
 extern const m_option_type_t m_option_type_flag;
 extern const m_option_type_t m_option_type_int;
+extern const m_option_type_t m_option_type_int64;
 extern const m_option_type_t m_option_type_float;
 extern const m_option_type_t m_option_type_double;
 extern const m_option_type_t m_option_type_string;
@@ -152,6 +153,7 @@
 // FIXME: backward compatibility
 #define CONF_TYPE_FLAG		(&m_option_type_flag)
 #define CONF_TYPE_INT		(&m_option_type_int)
+#define CONF_TYPE_INT64		(&m_option_type_int64)
 #define CONF_TYPE_FLOAT		(&m_option_type_float)
 #define CONF_TYPE_DOUBLE	(&m_option_type_double)
 #define CONF_TYPE_STRING	(&m_option_type_string)