1 // file      : examples/cxx/parser/multiroot/protocol-pimpl.hxx
2 // copyright : not copyrighted - public domain
3 
4 #ifndef PROTOCOL_PIMPL_HXX
5 #define PROTOCOL_PIMPL_HXX
6 
7 #include "protocol.hxx"
8 #include "protocol-pskel.hxx"
9 
10 namespace protocol
11 {
12   class request_pimpl: public virtual request_pskel
13   {
14   public:
15     virtual void
16     account (unsigned int);
17 
18     virtual request*
19     post_request ();
20 
21   protected:
22     unsigned int account_;
23   };
24 
25   class balance_pimpl: public virtual balance_pskel,
26                        public request_pimpl
27   {
28   public:
29     virtual balance*
30     post_balance ();
31   };
32 
33   class withdraw_pimpl: public virtual withdraw_pskel,
34                         public request_pimpl
35   {
36   public:
37     virtual void
38     amount (unsigned int);
39 
40     virtual withdraw*
41     post_withdraw ();
42 
43   private:
44     unsigned int amount_;
45   };
46 }
47 
48 #endif // PROTOCOL_PIMPL_HXX
49