aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-02-16 20:00:43 +0000
committerNick Mathewson <nickm@torproject.org>2007-02-16 20:00:43 +0000
commitd4aaffc6e7af3577696f55a1ffbcb6a2f98fbddb (patch)
treea5a84c69319e287d9b2013e548a416f0203fc251 /src/or
parente5d3269b10754b9b46bc19234bbfabd3e631f733 (diff)
downloadtor-d4aaffc6e7af3577696f55a1ffbcb6a2f98fbddb.tar
tor-d4aaffc6e7af3577696f55a1ffbcb6a2f98fbddb.tar.gz
r11824@catbus: nickm | 2007-02-16 13:16:47 -0500
Move all struct-offset-manipulation macros into util.h, and use them consistently. Because there are days when "SUBTYPE_P(handle, subtype, _base)" is just easier to read and write than "(basetp*)(((handle) - STRUCT_OFFSET(subtype, _base))". svn:r9592
Diffstat (limited to 'src/or')
-rw-r--r--src/or/config.c12
-rw-r--r--src/or/or.h6
2 files changed, 1 insertions, 17 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 8b1b4909d..279ddd5bb 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -102,18 +102,6 @@ typedef struct config_var_t {
const char *initvalue; /**< String (or null) describing initial value. */
} config_var_t;
-/** Macro: yield a pointer to the field at position <b>off</b> within the
- * structure <b>st</b>. Example:
- * <pre>
- * struct a { int foo; int bar; } x;
- * off_t bar_offset = STRUCT_OFFSET(struct a, bar);
- * int *bar_p = STRUCT_VAR_P(&x, bar_offset);
- * *bar_p = 3;
- * </pre>
- */
-#define STRUCT_VAR_P(st, off) \
- ((void*) ( ((char*)st) + off ) )
-
/** An entry for config_vars: "The option <b>name</b> has type
* CONFIG_TYPE_<b>conftype</b>, and corresponds to
* or_options_t.<b>member</b>"
diff --git a/src/or/or.h b/src/or/or.h
index 5c23c9d6b..3b0669f6e 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -928,8 +928,7 @@ typedef struct control_connection_t {
/** Cast a connection_t subtype pointer to a connection_t **/
#define TO_CONN(c) (&(((c)->_base)))
/** Helper macro: Given a pointer to to._base, of type from*, return &to. */
-#define DOWNCAST(to, ptr) \
- (to*) (((char*)(ptr)) - STRUCT_OFFSET(to, _base))
+#define DOWNCAST(to, ptr) ((to*)SUBTYPE_P(ptr, to, _base))
/** Convert a connection_t* to an or_connection_t*; assert if the cast is
* invalid. */
@@ -1515,14 +1514,11 @@ static origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *);
static INLINE or_circuit_t *TO_OR_CIRCUIT(circuit_t *x)
{
tor_assert(x->magic == OR_CIRCUIT_MAGIC);
- //return (or_circuit_t*) (((char*)x) - STRUCT_OFFSET(or_circuit_t, _base));
return DOWNCAST(or_circuit_t, x);
}
static INLINE origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *x)
{
tor_assert(x->magic == ORIGIN_CIRCUIT_MAGIC);
- //return (origin_circuit_t*)
- // (((char*)x) - STRUCT_OFFSET(origin_circuit_t, _base));
return DOWNCAST(origin_circuit_t, x);
}