~ubuntu-branches/ubuntu/wily/openvswitch/wily

« back to all changes in this revision

Viewing changes to lib/type-props.h

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2015-08-10 11:35:15 UTC
  • mfrom: (1.1.30)
  • Revision ID: package-import@ubuntu.com-20150810113515-575vj06oq29emxsn
Tags: 2.4.0~git20150810.97bab95-0ubuntu1
* New upstream snapshot from 2.4 branch:
  - d/*: Align any relevant packaging changes with upstream.
* d/*: wrap-and-sort.
* d/openvswitch-{common,vswitch}.install: Correct install location for
  bash completion files.
* d/tests/openflow.py: Explicitly use ovs-testcontroller as provided
  by 2.4.0 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (c) 2008, 2011 Nicira, Inc.
 
2
 * Copyright (c) 2008, 2011, 2015 Nicira, Inc.
3
3
 *
4
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
5
 * you may not use this file except in compliance with the License.
19
19
 
20
20
#include <limits.h>
21
21
 
 
22
/* True if TYPE is _Bool, false otherwise. */
 
23
#define TYPE_IS_BOOL(TYPE) ((TYPE) 1 == (TYPE) 2)
 
24
 
 
25
/* True if TYPE is an integer type (including _Bool), false if it is a
 
26
 * floating-point type. */
22
27
#define TYPE_IS_INTEGER(TYPE) ((TYPE) 1.5 == (TYPE) 1)
 
28
 
 
29
/* True if TYPE is a signed integer or floating point type, otherwise false. */
23
30
#define TYPE_IS_SIGNED(TYPE) ((TYPE) 1 > (TYPE) -1)
24
 
#define TYPE_VALUE_BITS(TYPE) (sizeof(TYPE) * CHAR_BIT - TYPE_IS_SIGNED(TYPE))
25
 
#define TYPE_MINIMUM(TYPE) (TYPE_IS_SIGNED(TYPE) \
26
 
                            ? ~(TYPE)0 << TYPE_VALUE_BITS(TYPE) \
27
 
                            : 0)
28
 
#define TYPE_MAXIMUM(TYPE) (TYPE_IS_SIGNED(TYPE) \
29
 
                            ? ~(~(TYPE)0 << TYPE_VALUE_BITS(TYPE)) \
30
 
                            : (TYPE)-1)
 
31
 
 
32
/* The number of value bits in an signed or unsigned integer TYPE:
 
33
 *
 
34
 *    - _Bool has 1 value bit.
 
35
 *
 
36
 *    - An N-bit unsigned integer type has N value bits.
 
37
 *
 
38
 *    - An N-bit signed integer type has N-1 value bits.
 
39
 */
 
40
#define TYPE_VALUE_BITS(TYPE) \
 
41
    (TYPE_IS_BOOL(TYPE) ? 1 : sizeof(TYPE) * CHAR_BIT - TYPE_IS_SIGNED(TYPE))
 
42
 
 
43
/* The minimum or maximum value of a signed or unsigned integer TYPE. */
 
44
#define TYPE_MINIMUM(TYPE) (TYPE_IS_SIGNED(TYPE) ? -TYPE_MAXIMUM(TYPE) - 1 : 0)
 
45
#define TYPE_MAXIMUM(TYPE) \
 
46
    ((((TYPE)1 << (TYPE_VALUE_BITS(TYPE) - 1)) - 1) * 2 + 1)
31
47
 
32
48
/* Number of decimal digits required to format an integer of the given TYPE.
33
49
 * Includes space for a sign, if TYPE is signed, but not for a null