00001 #ifndef QPID_AMQP_0_10_STRUCT_H
00002 #define QPID_AMQP_0_10_STRUCT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "built_in_types.h"
00026 #include <iosfwd>
00027
00028 namespace qpid {
00029 namespace amqp_0_10 {
00030
00031
00032
00033 template <class V, class CV, class H> struct Visitable {
00034 typedef V Visitor;
00035 typedef CV ConstVisitor;
00036 typedef H Holder;
00037
00038 virtual ~Visitable() {}
00039 virtual void accept(Visitor&) = 0;
00040 virtual void accept(ConstVisitor&) const = 0;
00041 };
00042
00043
00044
00045 struct StructVisitor;
00046 struct ConstStructVisitor;
00047 struct StructHolder;
00048 struct Struct
00049 : public Visitable<StructVisitor, ConstStructVisitor, StructHolder>
00050 {
00051 uint8_t getCode() const;
00052 uint8_t getPack() const;
00053 uint8_t getSize() const;
00054 uint8_t getClassCode() const;
00055 };
00056 std::ostream& operator<<(std::ostream&, const Struct&);
00057
00058 }}
00059
00060 #endif