summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: daa4b5a)
raw | patch | inline | side by side (parent: daa4b5a)
author | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Sat, 27 Jun 2009 10:53:15 +0000 (12:53 +0200) | ||
committer | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Sat, 27 Jun 2009 10:53:15 +0000 (12:53 +0200) |
src/meta_data.c | patch | blob | history | |
src/meta_data.h | patch | blob | history |
diff --git a/src/meta_data.c b/src/meta_data.c
index 2c085e39408016fed9c2d7dfa6f32ebfbdfc7901..d7fe2ebdc1b3887fce423820f26ccca20a84e89e 100644 (file)
--- a/src/meta_data.c
+++ b/src/meta_data.c
/**
* collectd - src/meta_data.c
- * Copyright (C) 2008 Florian octo Forster
+ * Copyright (C) 2008,2009 Florian octo Forster
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
#define MD_TYPE_SIGNED_INT 2
#define MD_TYPE_UNSIGNED_INT 3
#define MD_TYPE_DOUBLE 4
+#define MD_TYPE_BOOLEAN 5
/*
* Data types
int64_t mv_signed_int;
uint64_t mv_unsigned_int;
double mv_double;
+ _Bool mv_boolean;
};
typedef union meta_value_u meta_value_t;
return (0);
} /* }}} int meta_data_delete */
+/*
+ * Add functions
+ */
int meta_data_add_string (meta_data_t *md, /* {{{ */
const char *key, const char *value)
{
return (md_entry_insert (md, e));
} /* }}} int meta_data_add_double */
+int meta_data_add_boolean (meta_data_t *md, /* {{{ */
+ const char *key, _Bool value)
+{
+ meta_entry_t *e;
+
+ if ((md == NULL) || (key == NULL))
+ return (-EINVAL);
+
+ e = md_entry_alloc (key);
+ if (e == NULL)
+ return (-ENOMEM);
+
+ e->value.mv_boolean = value;
+ e->type = MD_TYPE_BOOLEAN;
+
+ return (md_entry_insert (md, e));
+} /* }}} int meta_data_add_boolean */
+
+/*
+ * Get functions
+ */
int meta_data_get_string (meta_data_t *md, /* {{{ */
const char *key, char **value)
{
return (0);
} /* }}} int meta_data_get_double */
+int meta_data_get_boolean (meta_data_t *md, /* {{{ */
+ const char *key, _Bool *value)
+{
+ meta_entry_t *e;
+
+ if ((md == NULL) || (key == NULL) || (value == NULL))
+ return (-EINVAL);
+
+ pthread_mutex_lock (&md->lock);
+
+ e = md_entry_lookup (md, key);
+ if (e == NULL)
+ {
+ pthread_mutex_unlock (&md->lock);
+ return (-ENOENT);
+ }
+
+ if (e->type != MD_TYPE_BOOLEAN)
+ {
+ ERROR ("meta_data_get_boolean: Type mismatch for key `%s'", e->key);
+ pthread_mutex_unlock (&md->lock);
+ return (-ENOENT);
+ }
+
+ *value = e->value.mv_boolean;
+
+ pthread_mutex_unlock (&md->lock);
+ return (0);
+} /* }}} int meta_data_get_boolean */
+
/* vim: set sw=2 sts=2 et fdm=marker : */
diff --git a/src/meta_data.h b/src/meta_data.h
index 30e72854df2156fb4812ab5c43d31ae00281f4a0..8e5a7852544a43e235919250ccf464de973b05e0 100644 (file)
--- a/src/meta_data.h
+++ b/src/meta_data.h
/**
* collectd - src/meta_data.h
- * Copyright (C) 2008 Florian octo Forster
+ * Copyright (C) 2008,2009 Florian octo Forster
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
int meta_data_add_double (meta_data_t *md,
const char *key,
double value);
+int meta_data_add_boolean (meta_data_t *md,
+ const char *key,
+ _Bool value);
int meta_data_get_string (meta_data_t *md,
const char *key,
int meta_data_get_double (meta_data_t *md,
const char *key,
double *value);
+int meta_data_get_boolean (meta_data_t *md,
+ const char *key,
+ _Bool *value);
#endif /* META_DATA_H */
/* vim: set sw=2 sts=2 et : */