From 466e623dd626ca09fdb681a81bec1c565ac5ef30 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Fri, 18 Oct 2013 15:56:55 -0700 Subject: [PATCH] Add BaseFromMember --- .../Builds/VisualStudio2012/beast.vcxproj | 1 + .../VisualStudio2012/beast.vcxproj.filters | 3 + src/beast/beast/Utility.h | 1 + src/beast/beast/utility/BaseFromMember.h | 71 +++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 src/beast/beast/utility/BaseFromMember.h diff --git a/src/beast/Builds/VisualStudio2012/beast.vcxproj b/src/beast/Builds/VisualStudio2012/beast.vcxproj index 934a28286..455746b30 100644 --- a/src/beast/Builds/VisualStudio2012/beast.vcxproj +++ b/src/beast/Builds/VisualStudio2012/beast.vcxproj @@ -180,6 +180,7 @@ + diff --git a/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters b/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters index 171a1a51f..077df7635 100644 --- a/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters +++ b/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters @@ -1251,6 +1251,9 @@ beast\threads + + beast\utility + diff --git a/src/beast/beast/Utility.h b/src/beast/beast/Utility.h index 952d0c225..b7cd0854c 100644 --- a/src/beast/beast/Utility.h +++ b/src/beast/beast/Utility.h @@ -20,6 +20,7 @@ #ifndef BEAST_UTILITY_H_INCLUDED #define BEAST_UTILITY_H_INCLUDED +#include "utility/BaseFromMember.h" #include "utility/Debug.h" #include "utility/EnableIf.h" #include "utility/Error.h" diff --git a/src/beast/beast/utility/BaseFromMember.h b/src/beast/beast/utility/BaseFromMember.h new file mode 100644 index 000000000..e2103b649 --- /dev/null +++ b/src/beast/beast/utility/BaseFromMember.h @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +/* + This file is part of rippled: https://github.com/ripple/rippled + Copyright (c) 2012, 2013 Ripple Labs Inc. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +//============================================================================== + +#ifndef BEAST_UTILITY_BASEFROMMEMBER_H_INCLUDED +#define BEAST_UTILITY_BASEFROMMEMBER_H_INCLUDED + +namespace beast { + +template +class BaseFromMember +{ +private: + T m_t; + +public: + BaseFromMember () + : m_t (T()) + { + } + + template + explicit BaseFromMember (P1 const& p1) + : m_t (p1) + { } + + template + BaseFromMember (P1 const& p1, P2 const& p2) + : m_t (p1, p2) + { } + + template + BaseFromMember (P1 const& p1, P2 const& p2, P3 const& p3) + : m_t (p1, p2, p3) + { } + + template + BaseFromMember (P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4) + : m_t (p1, p2, p3, p4) + { } + + template + BaseFromMember (P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5) + : m_t (p1, p2, p3, p4, p5) + { } + + T& member() + { return m_t; } + + T const& member() const + { return m_t; } +}; + +} + +#endif