#define SUBTYPE_P(p, subtype, basemember) \
((void*) ( ((char*)(p)) - STRUCT_OFFSET(subtype, basemember) ))
+/* Logic */
+/** Macro: true if two values have the same boolean value. */
+#define bool_eq(a,b) (!(a)==!(b))
+/** Macro: true if two values have different boolean values. */
+#define bool_neq(a,b) (!(a)!=!(b))
+
/* String manipulation */
/** Allowable characters in a hexadecimal string. */
}
}
-/** Helper: return true iff the boolean values of <b>a</b> and <b>b</b> are
- * different. */
-static INLINE int
-bool_neq(int a, int b)
-{
- return (a) ? !b : b;
-}
-
/** Remove all descriptors whose nicknames or fingerprints no longer
* are allowed by our fingerprint list. (Descriptors that used to be
* good can become bad when we reload the fingerprint list.)