Skip to content

Commit

Permalink
ovsdb-types: Refactor structs so as to comply with C++ standard
Browse files Browse the repository at this point in the history
C++ standard only accepts anonymous struct inside
anonymous union. This patch re-organized the structs so
that this header file can be used in C++ source files.

Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
  • Loading branch information
yifsun authored and blp committed Oct 4, 2018
1 parent f827c57 commit f70ac90
Showing 1 changed file with 25 additions and 21 deletions.
46 changes: 25 additions & 21 deletions lib/ovsdb-types.h
Expand Up @@ -53,6 +53,27 @@ enum ovsdb_ref_type {
OVSDB_REF_WEAK /* Delete reference if target disappears. */
};

struct ovsdb_integer_constraints {
int64_t min; /* minInteger or INT64_MIN. */
int64_t max; /* maxInteger or INT64_MAX. */
};

struct ovsdb_real_constraints {
double min; /* minReal or -DBL_MAX. */
double max; /* minReal or DBL_MAX. */
};

struct ovsdb_string_constraints {
unsigned int minLen; /* minLength or 0. */
unsigned int maxLen; /* maxLength or UINT_MAX. */
};

struct ovsdb_uuid_constraints {
char *refTableName; /* Name of referenced table, or NULL. */
struct ovsdb_table *refTable; /* Referenced table, if available. */
enum ovsdb_ref_type refType; /* Reference type. */
};

struct ovsdb_base_type {
enum ovsdb_atomic_type type;

Expand All @@ -61,28 +82,11 @@ struct ovsdb_base_type {
struct ovsdb_datum *enum_;

union {
struct ovsdb_integer_constraints {
int64_t min; /* minInteger or INT64_MIN. */
int64_t max; /* maxInteger or INT64_MAX. */
} integer;

struct ovsdb_real_constraints {
double min; /* minReal or -DBL_MAX. */
double max; /* minReal or DBL_MAX. */
} real;

struct ovsdb_integer_constraints integer;
struct ovsdb_real_constraints real;
/* No constraints for Boolean types. */

struct ovsdb_string_constraints {
unsigned int minLen; /* minLength or 0. */
unsigned int maxLen; /* maxLength or UINT_MAX. */
} string;

struct ovsdb_uuid_constraints {
char *refTableName; /* Name of referenced table, or NULL. */
struct ovsdb_table *refTable; /* Referenced table, if available. */
enum ovsdb_ref_type refType; /* Reference type. */
} uuid;
struct ovsdb_string_constraints string;
struct ovsdb_uuid_constraints uuid;
};
};

Expand Down

0 comments on commit f70ac90

Please sign in to comment.