3 extern "C" class WvFastString;
4 typedef WvFastString& WvStringParm;
9 class WvString : WvFastString {};
11 class WvIPAddr : WvAddr {};
12 struct WvIPNet : WvIPAddr {
15 template<class T, bool> struct WvTraits_Helper {
16 static void release(T *obj) {
20 template<class From> struct WvTraits {
21 static void release(From *obj) {
22 WvTraits_Helper<From, 0>::release(obj);
29 WvLink(bool, int) : autofree() {}
30 bool get_autofree() {}
38 WvListBase() : head(0, 0) {}
40 template<class T> struct WvList : WvListBase {
45 void zap(bool destroy = 1) {
46 while (head.next) unlink_after(&head, destroy);
49 void unlink_after(WvLink *after, bool destroy) {
51 T *obj = (destroy && next->get_autofree()) ?
52 static_cast<T*>(next->data) : 0;
54 if (tail) tail = after;
56 WvTraits<T>::release(obj);
59 typedef WvList<WvString>WvStringListBase;
60 class WvStringList : WvStringListBase {};
62 WvStringList last_args, env;
64 void addroute(WvIPNet& dest, WvStringParm table) {
65 if (dest.is_default() || (table != "default")) WvSubProc checkProc;