Fix several warnings that appear in gcc 4.3.2.
[wvstreams.git] / include / uniregistrygen.h
blob4007ff97f3af20160c0b84b732fdee8e30771475
1 /* -*- Mode: C++ -*-
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2003 Net Integration Technologies, Inc.
5 * A generator that exposes the windows registry.
7 * When linking statically, use the following #pragma to ensure this
8 * generator gets registered:
9 * #pragma comment(linker, "/include:?UniRegistryGenMoniker@@3V?$WvMoniker@VUniConfGen@@@@A")
11 #ifndef __UNICONFREGISTRY_H
12 #define __UNICONFREGISTRY_H
14 #include "uniconfgen.h"
15 #include "wvlog.h"
16 #include "windows.h"
18 /**
19 * A generator that exposes the windows registry.
21 * To mount, use the moniker "registry:".
24 class UniRegistryGen : public UniConfGen
26 WvLog m_log;
27 HKEY m_hRoot;
29 protected:
30 virtual void flush_buffers() { }
32 public:
33 UniRegistryGen(WvString _base);
34 virtual ~UniRegistryGen();
36 /***** Overridden methods *****/
38 virtual bool isok();
39 virtual WvString get(const UniConfKey &key);
40 virtual void set(const UniConfKey &key, WvStringParm value);
41 virtual void setv(const UniConfPairList &pairs);
42 virtual bool exists(const UniConfKey &key);
43 virtual bool haschildren(const UniConfKey &key);
44 virtual Iter *iterator(const UniConfKey &key);
47 class UniRegistryGenIter : public UniConfGen::Iter
49 public:
50 UniRegistryGenIter(UniRegistryGen &gen, const UniConfKey &key, HKEY base);
52 /** Destroys the iterator. */
53 virtual ~UniRegistryGenIter();
55 /**
56 * Rewinds the iterator.
57 * Must be called prior to the first invocation of next().
59 virtual void rewind();
61 /**
62 * Seeks to the next element in the sequence.
63 * Returns true if that element exists.
64 * Must be called prior to the first invocation of key().
66 virtual bool next();
68 /** Returns the current key. */
69 virtual UniConfKey key() const;
71 /** Returns the value of the current key. */
72 virtual WvString value() const;
74 private:
75 LONG next_key();
76 LONG next_value();
78 HKEY m_hKey;
79 enum Enumerating { KEYS, VALUES } m_enumerating;
80 unsigned m_index;
81 UniRegistryGen &gen;
82 const UniConfKey parent;
83 UniConfKey current_key;
84 const HKEY m_dontClose;
87 #endif // __UNICONFREGISTRY_H