/builddir/build/BUILD/gru-0.2.0/src/common/gru_variant.h File Reference

#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
#include <common/gru_alloc.h>

Go to the source code of this file.

Data Structures

struct  gru_variant_t_
 An abstract struct that can hold different types. More...

Defines

#define GRU_VARIANT_STRING_INITIALIZER(x)   { .type = GRU_STRING, .variant.string = (x) }
 Initializer for the string variant type.
#define GRU_VARIANT_STRING_DEFAULT_INITIALIZER   GRU_VARIANT_STRING_INITIALIZER(NULL)
 Default string initializer.
#define GRU_VARIANT_INTEGER_INITIALIZER(x)   { .type = GRU_INTEGER, .variant.inumber = (x) }
 Initializer for the integer variant type.
#define GRU_VARIANT_INTEGER_DEFAULT_INITIALIZER   GRU_VARIANT_INTEGER_INITIALIZER(0)
 Default integer initializer.
#define GRU_VARIANT_DOUBLE_INITIALIZER(x)   { .type = GRU_DOUBLE, .variant.fnumber = (x) }
 Initializer for the double variant type.
#define GRU_VARIANT_DOUBLE_DEFAULT_INITIALIZER   GRU_VARIANT_DOUBLE_INITIALIZER(0.0)
 Default double initializer.
#define GRU_VARIANT_BOOLEAN_INITIALIZER(x)   { .type = GRU_BOOLEAN, .variant.flag = (x) }
 Initializer for the boolean variant type.
#define GRU_VARIANT_BOOLEAN_DEFAULT_INITIALIZER   GRU_VARIANT_BOOLEAN_INITIALIZER(false)
 Default boolean initializer.

Typedefs

typedef enum gru_variant_type_t_ gru_variant_type_t
typedef struct gru_variant_t_ gru_variant_t
 An abstract struct that can hold different types.

Enumerations

enum  gru_variant_type_t_ { GRU_STRING, GRU_INTEGER, GRU_DOUBLE, GRU_BOOLEAN }

Functions

gru_export bool gru_variant_set_string (gru_variant_t *variant, const char *str)
 Set the variant value to a string.
gru_export void gru_variant_set_integer (gru_variant_t *variant, uint64_t number)
 Set the variant value to an integer.
gru_export void gru_variant_clean (gru_variant_t *variant)
 Release the memory used by a variant (if any used at all).
gru_export gru_variant_t gru_variant_parse (const char *str)
 Parses a string and sets it to the most appropriate type.
gru_export bool gru_variant_equals_str (gru_variant_t *variant, const char *str)
 Simple equality check to test if the variant value matches a given string.

Define Documentation

#define GRU_VARIANT_BOOLEAN_DEFAULT_INITIALIZER   GRU_VARIANT_BOOLEAN_INITIALIZER(false)

Default boolean initializer.

#define GRU_VARIANT_BOOLEAN_INITIALIZER (  )     { .type = GRU_BOOLEAN, .variant.flag = (x) }

Initializer for the boolean variant type.

#define GRU_VARIANT_DOUBLE_DEFAULT_INITIALIZER   GRU_VARIANT_DOUBLE_INITIALIZER(0.0)

Default double initializer.

#define GRU_VARIANT_DOUBLE_INITIALIZER (  )     { .type = GRU_DOUBLE, .variant.fnumber = (x) }

Initializer for the double variant type.

#define GRU_VARIANT_INTEGER_DEFAULT_INITIALIZER   GRU_VARIANT_INTEGER_INITIALIZER(0)

Default integer initializer.

#define GRU_VARIANT_INTEGER_INITIALIZER (  )     { .type = GRU_INTEGER, .variant.inumber = (x) }

Initializer for the integer variant type.

#define GRU_VARIANT_STRING_DEFAULT_INITIALIZER   GRU_VARIANT_STRING_INITIALIZER(NULL)

Default string initializer.

#define GRU_VARIANT_STRING_INITIALIZER (  )     { .type = GRU_STRING, .variant.string = (x) }

Initializer for the string variant type.


Typedef Documentation

typedef struct gru_variant_t_ gru_variant_t

An abstract struct that can hold different types.


Enumeration Type Documentation

Enumerator:
GRU_STRING 
GRU_INTEGER 
GRU_DOUBLE 
GRU_BOOLEAN 

Function Documentation

gru_export void gru_variant_clean ( gru_variant_t variant  ) 

Release the memory used by a variant (if any used at all).

It's safe to pass any variant even if no memory is used at all

Parameters:
variant the variant to release
gru_export bool gru_variant_equals_str ( gru_variant_t variant,
const char *  str 
)

Simple equality check to test if the variant value matches a given string.

Parameters:
variant the variant to compare with
str the string to check
Returns:
true if it's equal or false otherwise
gru_export gru_variant_t gru_variant_parse ( const char *  str  ) 

Parses a string and sets it to the most appropriate type.

Parameters:
str the string to parse
Returns:
a variant (if all conversion fails, it defaults to string)
gru_export void gru_variant_set_integer ( gru_variant_t variant,
uint64_t  number 
)

Set the variant value to an integer.

Parameters:
variant the variant to hold the data
number the number to set
gru_export bool gru_variant_set_string ( gru_variant_t variant,
const char *  str 
)

Set the variant value to a string.

Parameters:
variant the variant hold the data
str the string to set
Returns:
false if unable to allocate memory for the string or true otherwise
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on 7 Jan 2019 for GRU - Generic Reusable Utilities by  doxygen 1.6.1