00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 #pragma once 00013 00014 #include <opc/ua/protocol/variant.h> 00015 00016 00017 namespace OpcUa 00018 { 00019 00020 template <typename Delegate> 00021 class TypedVisitor : public VariantVisitor 00022 { 00023 public: 00024 typedef void result_type; 00025 00026 public: 00027 TypedVisitor(Delegate& impl) 00028 : Impl(impl) 00029 { 00030 } 00031 00032 public: 00033 virtual void Visit(bool val) { Impl.OnScalar(val); } 00034 virtual void Visit(const std::vector<bool>& val) { Impl.OnContainer(val); } 00035 virtual void Visit(int8_t val) { Impl.OnScalar(val); } 00036 virtual void Visit(const std::vector<int8_t>& val) { Impl.OnContainer(val); } 00037 virtual void Visit(uint8_t val) { Impl.OnScalar(val); } 00038 virtual void Visit(const std::vector<uint8_t>& val) { Impl.OnContainer(val); } 00039 virtual void Visit(int16_t val) { Impl.OnScalar(val); } 00040 virtual void Visit(const std::vector<int16_t>& val) { Impl.OnContainer(val); } 00041 virtual void Visit(uint16_t val) { Impl.OnScalar(val); } 00042 virtual void Visit(const std::vector<uint16_t>& val) { Impl.OnContainer(val); } 00043 virtual void Visit(int32_t val) { Impl.OnScalar(val); } 00044 virtual void Visit(const std::vector<int32_t>& val) { Impl.OnContainer(val); } 00045 virtual void Visit(uint32_t val) { Impl.OnScalar(val); } 00046 virtual void Visit(const std::vector<uint32_t>& val) { Impl.OnContainer(val); } 00047 virtual void Visit(int64_t val) { Impl.OnScalar(val); } 00048 virtual void Visit(const std::vector<int64_t>& val) { Impl.OnContainer(val); } 00049 virtual void Visit(uint64_t val) { Impl.OnScalar(val); } 00050 virtual void Visit(const std::vector<uint64_t>& val) { Impl.OnContainer(val); } 00051 virtual void Visit(float val) { Impl.OnScalar(val); } 00052 virtual void Visit(const std::vector<float>& val) { Impl.OnContainer(val); } 00053 virtual void Visit(double val) { Impl.OnScalar(val); } 00054 virtual void Visit(const std::vector<double>& val) { Impl.OnContainer(val); } 00055 virtual void Visit(const std::string& val) { Impl.OnScalar(val); } 00056 virtual void Visit(const std::vector<std::string>& val) { Impl.OnContainer(val); } 00057 virtual void Visit(const DateTime& val) { Impl.OnScalar(val); } 00058 virtual void Visit(const std::vector<DateTime>& val) { Impl.OnContainer(val); } 00059 virtual void Visit(const Guid& val) { Impl.OnScalar(val); } 00060 virtual void Visit(const std::vector<Guid>& val) { Impl.OnContainer(val); } 00061 virtual void Visit(const ByteString& val) { Impl.OnScalar(val); } 00062 virtual void Visit(const std::vector<ByteString>& val) { Impl.OnContainer(val); } 00063 virtual void Visit(const NodeId& val) { Impl.OnScalar(val); } 00064 virtual void Visit(const std::vector<NodeId>& val) { Impl.OnContainer(val); } 00065 virtual void Visit(const StatusCode& val) { Impl.OnScalar(val); } 00066 virtual void Visit(const std::vector<StatusCode>& val) { Impl.OnContainer(val); } 00067 virtual void Visit(const LocalizedText& val) { Impl.OnScalar(val); } 00068 virtual void Visit(const std::vector<LocalizedText>& val) { Impl.OnContainer(val); } 00069 virtual void Visit(const QualifiedName& val) { Impl.OnScalar(val); } 00070 virtual void Visit(const std::vector<QualifiedName>& val) { Impl.OnContainer(val); } 00071 virtual void Visit(const Variant& val) { Impl.OnScalar(val); } 00072 virtual void Visit(const std::vector<Variant>& val) { Impl.OnContainer(val); } 00073 virtual void Visit(const DiagnosticInfo& val) { Impl.OnScalar(val); } 00074 virtual void Visit(const std::vector<DiagnosticInfo>& val) { Impl.OnContainer(val); } 00075 00076 private: 00077 Delegate& Impl; 00078 }; 00079 00080 00081 }