[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] Inline key smartlist functions; use fast versions by defau...
Update of /home/or/cvsroot/tor/src/common
In directory moria:/tmp/cvs-serv25727/src/common
Modified Files:
container.c container.h util.h
Log Message:
Inline key smartlist functions; use fast versions by default.
Index: container.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/container.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- container.c 6 Oct 2005 04:33:40 -0000 1.44
+++ container.c 18 Oct 2005 04:51:07 -0000 1.45
@@ -28,19 +28,6 @@
*/
#define SMARTLIST_DEFAULT_CAPACITY 32
-#ifndef FAST_SMARTLIST
-/** A resizeable list of pointers, with associated helpful functionality. */
-struct smartlist_t {
- /* <b>list</b> has enough capacity to store exactly <b>capacity</b> elements
- * before it needs to be resized. Only the first <b>num_used</b> (\<=
- * capacity) elements point to valid data.
- */
- void **list;
- int num_used;
- int capacity;
-};
-#endif
-
/** Allocate and return an empty smartlist.
*/
smartlist_t *
@@ -236,36 +223,6 @@
smartlist_remove(sl1, sl2->list[i]);
}
-#ifndef FAST_SMARTLIST
-/** Return the <b>idx</b>th element of sl.
- */
-void *
-smartlist_get(const smartlist_t *sl, int idx)
-{
- tor_assert(sl);
- tor_assert(idx>=0);
- tor_assert(idx < sl->num_used);
- return sl->list[idx];
-}
-/** Change the value of the <b>idx</b>th element of sl to <b>val</b>.
- */
-void
-smartlist_set(smartlist_t *sl, int idx, void *val)
-{
- tor_assert(sl);
- tor_assert(idx>=0);
- tor_assert(idx < sl->num_used);
- sl->list[idx] = val;
-}
-/** Return the number of items in sl.
- */
-int
-smartlist_len(const smartlist_t *sl)
-{
- return sl->num_used;
-}
-#endif
-
/** Remove the <b>idx</b>th element of sl; if idx is not the last
* element, swap the last element of sl into the <b>idx</b>th space.
* Return the old value of the <b>idx</b>th element.
Index: container.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/container.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- container.h 12 Sep 2005 08:27:01 -0000 1.17
+++ container.h 18 Oct 2005 04:51:07 -0000 1.18
@@ -7,11 +7,11 @@
#define __CONTAINER_H
#define CONTAINER_H_ID "$Id$"
-/** Generic resizeable array. */
-typedef struct smartlist_t smartlist_t;
-#ifdef FAST_SMARTLIST
+#import "compat.h"
+#import "util.h"
-struct smartlist_t {
+/** A resizeable list of pointers, with associated helpful functionality. */
+typedef struct smartlist_t {
/** <b>list</b> has enough capacity to store exactly <b>capacity</b> elements
* before it needs to be resized. Only the first <b>num_used</b> (\<=
* capacity) elements point to valid data.
@@ -19,8 +19,7 @@
void **list;
int num_used;
int capacity;
-};
-#endif
+} smartlist_t;
smartlist_t *smartlist_create(void);
void smartlist_free(smartlist_t *sl);
@@ -38,15 +37,32 @@
void smartlist_intersect(smartlist_t *sl1, const smartlist_t *sl2);
void smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2);
/* smartlist_choose() is defined in crypto.[ch] */
-#ifndef FAST_SMARTLIST
-void *smartlist_get(const smartlist_t *sl, int idx);
-void smartlist_set(smartlist_t *sl, int idx, void *val);
-int smartlist_len(const smartlist_t *sl);
-#else
-#define smartlist_get(sl,idx) ((sl)->list[(idx)])
-#define smartlist_set(sl,idx,val) ((sl)->list[(idx)] = val)
-#define smartlist_len(sl) ((sl)->num_used)
+/** Return the number of items in sl.
+ */
+extern INLINE int smartlist_len(const smartlist_t *sl) {
+#ifdef DEBUG_SMARTLIST
+ tor_assert(sl);
+#endif
+ return (sl)->num_used;
+}
+/** Return the <b>idx</b>th element of sl.
+ */
+extern INLINE void *smartlist_get(const smartlist_t *sl, int idx) {
+#ifdef DEBUG_SMARTLIST
+ tor_assert(sl);
+ tor_assert(idx>=0);
+ tor_assert(sl->num_used < idx);
#endif
+ return sl->list[idx];
+}
+extern INLINE void smartlist_set(smartlist_t *sl, int idx, void *val) {
+#ifdef DEBUG_SMARTLIST
+ tor_assert(sl);
+ tor_assert(idx>=0);
+ tor_assert(sl->num_used < idx);
+#endif
+ sl->list[idx] = val;
+}
void smartlist_del(smartlist_t *sl, int idx);
void smartlist_del_keeporder(smartlist_t *sl, int idx);
void smartlist_insert(smartlist_t *sl, int idx, void *val);
Index: util.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/util.h,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -d -r1.143 -r1.144
--- util.h 6 Oct 2005 04:33:40 -0000 1.143
+++ util.h 18 Oct 2005 04:51:07 -0000 1.144
@@ -16,6 +16,7 @@
#include "torint.h"
#include "compat.h"
#include <stdio.h>
+#include <stdlib.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif