/* * Inkscape::Util::Tuple - generic tuple type * * Authors: * MenTaLguY * * Copyright (C) 2004 MenTaLguY * * Released under GNU GPL, read the file 'COPYING' for more information */ #ifndef SEEN_INKSCAPE_UTIL_TUPLE_H #define SEEN_INKSCAPE_UTIL_TUPLE_H #include "util/reference.h" namespace Inkscape { namespace Util { template struct Tuple { Tuple() {} Tuple(typename Traits::Reference::RValue a_, typename Traits::Reference::RValue b_, typename Traits::Reference::RValue c_, typename Traits::Reference::RValue d_, typename Traits::Reference::RValue e_, typename Traits::Reference::RValue f_) : a(a_), b(b_), c(c_), d(d_), e(e_), f(f_) {} A a; B b; C c; D d; E e; F f; }; template struct Tuple { Tuple() {} Tuple(typename Traits::Reference::RValue a_, typename Traits::Reference::RValue b_, typename Traits::Reference::RValue c_, typename Traits::Reference::RValue d_, typename Traits::Reference::RValue e_) : a(a_), b(b_), c(c_), d(d_), e(e_) {} A a; B b; C c; D d; E e; }; template struct Tuple { Tuple() {} Tuple(typename Traits::Reference::RValue a_, typename Traits::Reference::RValue b_, typename Traits::Reference::RValue c_, typename Traits::Reference::RValue d_) : a(a_), b(b_), c(c_), d(d_) {} A a; B b; C c; D d; }; template struct Tuple { Tuple() {} Tuple(typename Traits::Reference::RValue a_, typename Traits::Reference::RValue b_, typename Traits::Reference::RValue c_) : a(a_), b(b_), c(c_) {} A a; B b; C c; }; template struct Tuple { Tuple() {} Tuple(typename Traits::Reference::RValue a_, typename Traits::Reference::RValue b_) : a(a_), b(b_) {} A a; B b; }; template struct Tuple { Tuple() {} Tuple(typename Traits::Reference::RValue a_) : a(a_) {} A a; }; template <> struct Tuple {}; template inline Tuple tuple(typename Traits::Reference::RValue a, typename Traits::Reference::RValue b, typename Traits::Reference::RValue c, typename Traits::Reference::RValue d, typename Traits::Reference::RValue e, typename Traits::Reference::RValue f) { return Tuple(a, b, c, d, e, f); } template inline Tuple tuple(typename Traits::Reference::RValue a, typename Traits::Reference::RValue b, typename Traits::Reference::RValue c, typename Traits::Reference::RValue d, typename Traits::Reference::RValue e) { return Tuple(a, b, c, d, e); } template inline Tuple tuple(typename Traits::Reference::RValue a, typename Traits::Reference::RValue b, typename Traits::Reference::RValue c, typename Traits::Reference::RValue d) { return Tuple(a, b, c, d); } template inline Tuple tuple(typename Traits::Reference::RValue a, typename Traits::Reference::RValue b, typename Traits::Reference::RValue c) { return Tuple(a, b, c); } template inline Tuple tuple(typename Traits::Reference::RValue a, typename Traits::Reference::RValue b) { return Tuple(a, b); } template inline Tuple tuple(typename Traits::Reference::RValue a) { return Tuple(a); } inline Tuple<> tuple() { return Tuple<>(); } } } #endif /* Local Variables: mode:c++ c-file-style:"stroustrup" c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) indent-tabs-mode:nil fill-column:99 End: */ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :