Ticket #622: 0001-New-NamedValue-voodoo.patch

File 0001-New-NamedValue-voodoo.patch, 30.7 kB (added by ciaranm, 4 months ago)
  • paludis/util/files.m4

    From a2d5c0217797c33f9b55157a8b99f385965bd809 Mon Sep 17 00:00:00 2001
    From: Ciaran McCreesh <ciaran.mccreesh@googlemail.com>
    Date: Wed, 23 Jul 2008 16:47:54 +0100
    Subject: [PATCH] New NamedValue voodoo.
    
    Eventually this will replace kc and sr. It's much simpler, and quite a bit
    cruder.
    ---
     paludis/util/files.m4             |    2 +
     paludis/util/make_named_values.cc |   21 ++
     paludis/util/make_named_values.hh |  404 +++++++++++++++++++++++++++++++++++++
     paludis/util/named_value-fwd.hh   |   41 ++++
     paludis/util/named_value.cc       |   21 ++
     paludis/util/named_value.hh       |   70 +++++++
     6 files changed, 559 insertions(+), 0 deletions(-)
     create mode 100644 paludis/util/make_named_values.cc
     create mode 100644 paludis/util/make_named_values.hh
     create mode 100644 paludis/util/named_value-fwd.hh
     create mode 100644 paludis/util/named_value.cc
     create mode 100644 paludis/util/named_value.hh
    
    diff --git a/paludis/util/files.m4 b/paludis/util/files.m4
    index 65ea02c..0634217 100644
    a b  
    3636add(`kc',                                `hh', `fwd') 
    3737add(`keys',                              `hh') 
    3838add(`log',                               `hh', `cc', `se', `test') 
     39add(`make_named_values',                 `hh', `cc') 
    3940add(`make_shared_ptr',                   `hh', `fwd') 
    4041add(`map',                               `hh', `fwd', `impl', `cc') 
    4142add(`member_iterator',                   `hh', `fwd', `impl', `test') 
    4243add(`md5',                               `hh', `cc', `test') 
    4344add(`mutex',                             `hh', `cc', `fwd', `test') 
     45add(`named_value',                       `hh', `cc', `fwd') 
    4446add(`no_type',                           `hh') 
    4547add(`operators',                         `hh') 
    4648add(`options',                           `hh', `fwd', `cc', `test') 
  • (a) /dev/null vs. (b) b/paludis/util/make_named_values.cc

    diff --git a/paludis/util/make_named_values.cc b/paludis/util/make_named_values.cc
    new file mode 100644
    index 0000000..e62e18f
    a b  
     1/* vim: set sw=4 sts=4 et foldmethod=syntax : */ 
     2 
     3/* 
     4 * Copyright (c) 2008 Ciaran McCreesh 
     5 * 
     6 * This file is part of the Paludis package manager. Paludis is free software; 
     7 * you can redistribute it and/or modify it under the terms of the GNU General 
     8 * Public License version 2, as published by the Free Software Foundation. 
     9 * 
     10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY 
     11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
     12 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
     13 * details. 
     14 * 
     15 * You should have received a copy of the GNU General Public License along with 
     16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple 
     17 * Place, Suite 330, Boston, MA  02111-1307  USA 
     18 */ 
     19 
     20#include <paludis/util/make_named_values.hh> 
     21 
  • (a) /dev/null vs. (b) b/paludis/util/make_named_values.hh

    diff --git a/paludis/util/make_named_values.hh b/paludis/util/make_named_values.hh
    new file mode 100644
    index 0000000..8759f9f
    a b  
     1/* vim: set sw=4 sts=4 et foldmethod=syntax : */ 
     2 
     3/* 
     4 * Copyright (c) 2008 Ciaran McCreesh 
     5 * 
     6 * This file is part of the Paludis package manager. Paludis is free software; 
     7 * you can redistribute it and/or modify it under the terms of the GNU General 
     8 * Public License version 2, as published by the Free Software Foundation. 
     9 * 
     10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY 
     11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
     12 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
     13 * details. 
     14 * 
     15 * You should have received a copy of the GNU General Public License along with 
     16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple 
     17 * Place, Suite 330, Boston, MA  02111-1307  USA 
     18 */ 
     19 
     20#ifndef PALUDIS_GUARD_PALUDIS_UTIL_MAKE_NAMED_VALUES_HH 
     21#define PALUDIS_GUARD_PALUDIS_UTIL_MAKE_NAMED_VALUES_HH 1 
     22 
     23/** \file 
     24 * A load of make_named_values functions. 
     25 * 
     26 * Bizarre oddity in C++98: you can only use an initialiser list when using 
     27 * equals to initialise a newly constructed object. C++0x fixes this, but in the 
     28 * mean time we can hack around it with this mess... 
     29 */ 
     30 
     31namespace paludis 
     32{ 
     33    template <typename R_, typename T1_> 
     34    R_ make_named_values(const T1_ & v1) 
     35    { 
     36        R_ result = { v1 }; 
     37        return result; 
     38    } 
     39 
     40    template <typename R_, typename T1_, typename T2_> 
     41    R_ make_named_values(const T1_ & v1, const T2_ & v2) 
     42    { 
     43        R_ result = { v1, v2 }; 
     44        return result; 
     45    } 
     46 
     47    template <typename R_, typename T1_, typename T2_, typename T3_> 
     48    R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3) 
     49    { 
     50        R_ result = { v1, v2, v3 }; 
     51        return result; 
     52    } 
     53 
     54    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_> 
     55    R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4) 
     56    { 
     57        R_ result = { v1, v2, v3, v4 }; 
     58        return result; 
     59    } 
     60 
     61    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_> 
     62    R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5) 
     63    { 
     64        R_ result = { v1, v2, v3, v4, v5 }; 
     65        return result; 
     66    } 
     67 
     68    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     69             typename T6_> 
     70    R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     71            const T6_ & v6) 
     72    { 
     73        R_ result = { v1, v2, v3, v4, v5, v6 }; 
     74        return result; 
     75    } 
     76 
     77    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     78             typename T6_, typename T7_> 
     79    R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     80            const T6_ & v6, const T7_ & v7) 
     81    { 
     82        R_ result = { v1, v2, v3, v4, v5, v6, v7 }; 
     83        return result; 
     84    } 
     85 
     86    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     87             typename T6_, typename T7_, typename T8_> 
     88    R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     89            const T6_ & v6, const T7_ & v7, const T8_ & v8) 
     90    { 
     91        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8 }; 
     92        return result; 
     93    } 
     94 
     95    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     96             typename T6_, typename T7_, typename T8_, typename T9_> 
     97     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     98            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9) 
     99    { 
     100        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9 }; 
     101        return result; 
     102    } 
     103 
     104    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     105             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_> 
     106     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     107            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10) 
     108    { 
     109        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 }; 
     110        return result; 
     111    } 
     112 
     113    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     114             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     115             typename T11_> 
     116     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     117            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     118            const T11_ & v11) 
     119    { 
     120        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 }; 
     121        return result; 
     122    } 
     123 
     124    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     125             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     126             typename T11_, typename T12_> 
     127     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     128            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     129            const T11_ & v11, const T12_ & v12) 
     130    { 
     131        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12 }; 
     132        return result; 
     133    } 
     134 
     135    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     136             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     137             typename T11_, typename T12_, typename T13_> 
     138     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     139            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     140            const T11_ & v11, const T12_ & v12, const T13_ & v13) 
     141    { 
     142        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13 }; 
     143        return result; 
     144    } 
     145 
     146    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     147             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     148             typename T11_, typename T12_, typename T13_, typename T14_> 
     149     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     150            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     151            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14) 
     152    { 
     153        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14 }; 
     154        return result; 
     155    } 
     156 
     157    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     158             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     159             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_> 
     160     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     161            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     162            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15) 
     163    { 
     164        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 }; 
     165        return result; 
     166    } 
     167 
     168    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     169             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     170             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     171             typename T16_> 
     172     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     173            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     174            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     175            const T16_ & v16) 
     176    { 
     177        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16 }; 
     178        return result; 
     179    } 
     180 
     181    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     182             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     183             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     184             typename T16_, typename T17_> 
     185     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     186            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     187            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     188            const T16_ & v16, const T17_ & v17) 
     189    { 
     190        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17 }; 
     191        return result; 
     192    } 
     193 
     194    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     195             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     196             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     197             typename T16_, typename T17_, typename T18_> 
     198     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     199            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     200            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     201            const T16_ & v16, const T17_ & v17, const T18_ & v18) 
     202    { 
     203        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18 }; 
     204        return result; 
     205    } 
     206 
     207    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     208             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     209             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     210             typename T16_, typename T17_, typename T18_, typename T19_> 
     211     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     212            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     213            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     214            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19) 
     215    { 
     216        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19 }; 
     217        return result; 
     218    } 
     219 
     220    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     221             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     222             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     223             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_> 
     224     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     225            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     226            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     227            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20) 
     228    { 
     229        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20 }; 
     230        return result; 
     231    } 
     232 
     233    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     234             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     235             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     236             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     237             typename T21_> 
     238     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     239            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     240            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     241            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     242            const T21_ & v21) 
     243    { 
     244        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     245            v21 }; 
     246        return result; 
     247    } 
     248 
     249    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     250             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     251             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     252             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     253             typename T21_, typename T22_> 
     254     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     255            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     256            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     257            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     258            const T21_ & v21, const T22_ & v22) 
     259    { 
     260        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     261            v21, v22 }; 
     262        return result; 
     263    } 
     264 
     265    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     266             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     267             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     268             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     269             typename T21_, typename T22_, typename T23_> 
     270     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     271            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     272            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     273            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     274            const T21_ & v21, const T22_ & v22, const T23_ & v23) 
     275    { 
     276        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     277            v21, v22, v23 }; 
     278        return result; 
     279    } 
     280 
     281    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     282             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     283             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     284             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     285             typename T21_, typename T22_, typename T23_, typename T24_> 
     286     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     287            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     288            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     289            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     290            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24) 
     291    { 
     292        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     293            v21, v22, v23, v24 }; 
     294        return result; 
     295    } 
     296 
     297    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     298             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     299             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     300             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     301             typename T21_, typename T22_, typename T23_, typename T24_, typename T25_> 
     302     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     303            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     304            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     305            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     306            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24, const T25_ & v25) 
     307    { 
     308        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     309            v21, v22, v23, v24, v25 }; 
     310        return result; 
     311    } 
     312 
     313    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     314             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     315             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     316             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     317             typename T21_, typename T22_, typename T23_, typename T24_, typename T25_, 
     318             typename T26_> 
     319     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     320            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     321            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     322            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     323            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24, const T25_ & v25, 
     324            const T26_ & v26) 
     325    { 
     326        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     327            v21, v22, v23, v24, v25, v26 }; 
     328        return result; 
     329    } 
     330 
     331    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     332             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     333             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     334             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     335             typename T21_, typename T22_, typename T23_, typename T24_, typename T25_, 
     336             typename T26_, typename T27_> 
     337     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     338            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     339            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     340            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     341            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24, const T25_ & v25, 
     342            const T26_ & v26, const T27_ & v27) 
     343    { 
     344        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     345            v21, v22, v23, v24, v25, v26, v27 }; 
     346        return result; 
     347    } 
     348 
     349    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     350             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     351             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     352             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     353             typename T21_, typename T22_, typename T23_, typename T24_, typename T25_, 
     354             typename T26_, typename T27_, typename T28_> 
     355     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     356            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     357            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     358            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     359            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24, const T25_ & v25, 
     360            const T26_ & v26, const T27_ & v27, const T28_ & v28) 
     361    { 
     362        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     363            v21, v22, v23, v24, v25, v26, v27, v28 }; 
     364        return result; 
     365    } 
     366 
     367    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     368             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     369             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     370             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     371             typename T21_, typename T22_, typename T23_, typename T24_, typename T25_, 
     372             typename T26_, typename T27_, typename T28_, typename T29_> 
     373     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     374            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     375            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     376            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     377            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24, const T25_ & v25, 
     378            const T26_ & v26, const T27_ & v27, const T28_ & v28, const T29_ & v29) 
     379    { 
     380        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     381            v21, v22, v23, v24, v25, v26, v27, v28, v29 }; 
     382        return result; 
     383    } 
     384 
     385    template <typename R_, typename T1_, typename T2_, typename T3_, typename T4_, typename T5_, 
     386             typename T6_, typename T7_, typename T8_, typename T9_, typename T10_, 
     387             typename T11_, typename T12_, typename T13_, typename T14_, typename T15_, 
     388             typename T16_, typename T17_, typename T18_, typename T19_, typename T20_, 
     389             typename T21_, typename T22_, typename T23_, typename T24_, typename T25_, 
     390             typename T26_, typename T27_, typename T28_, typename T29_, typename T30_> 
     391     R_ make_named_values(const T1_ & v1, const T2_ & v2, const T3_ & v3, const T4_ & v4, const T5_ & v5, 
     392            const T6_ & v6, const T7_ & v7, const T8_ & v8, const T9_ & v9, const T10_ & v10, 
     393            const T11_ & v11, const T12_ & v12, const T13_ & v13, const T14_ & v14, const T15_ & v15, 
     394            const T16_ & v16, const T17_ & v17, const T18_ & v18, const T19_ & v19, const T20_ & v20, 
     395            const T21_ & v21, const T22_ & v22, const T23_ & v23, const T24_ & v24, const T25_ & v25, 
     396            const T26_ & v26, const T27_ & v27, const T28_ & v28, const T29_ & v29, const T30_ & v30) 
     397    { 
     398        R_ result = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, 
     399            v21, v22, v23, v24, v25, v26, v27, v28, v29, v30 }; 
     400        return result; 
     401    } 
     402} 
     403 
     404#endif 
  • (a) /dev/null vs. (b) b/paludis/util/named_value-fwd.hh

    diff --git a/paludis/util/named_value-fwd.hh b/paludis/util/named_value-fwd.hh
    new file mode 100644
    index 0000000..eca97e7
    a b  
     1/* vim: set sw=4 sts=4 et foldmethod=syntax : */ 
     2 
     3/* 
     4 * Copyright (c) 2008 Ciaran McCreesh 
     5 * 
     6 * This file is part of the Paludis package manager. Paludis is free software; 
     7 * you can redistribute it and/or modify it under the terms of the GNU General 
     8 * Public License version 2, as published by the Free Software Foundation. 
     9 * 
     10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY 
     11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
     12 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
     13 * details. 
     14 * 
     15 * You should have received a copy of the GNU General Public License along with 
     16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple 
     17 * Place, Suite 330, Boston, MA  02111-1307  USA 
     18 */ 
     19 
     20#ifndef PALUDIS_GUARD_PALUDIS_UTIL_NAMED_VALUE_FWD_HH 
     21#define PALUDIS_GUARD_PALUDIS_UTIL_NAMED_VALUE_FWD_HH 1 
     22 
     23#include <string> 
     24 
     25namespace paludis 
     26{ 
     27    template <typename K_, typename V_> 
     28    class NamedValue; 
     29 
     30    template <typename K_, typename V_> 
     31    NamedValue<K_, V_> 
     32    value_for(const V_ & v); 
     33 
     34    /* Hack: let "foo" work for strings, but ban other magic conversions */ 
     35    template <typename K_> 
     36    NamedValue<K_, std::string> 
     37    value_for(const char * const v); 
     38 
     39} 
     40 
     41#endif 
  • (a) /dev/null vs. (b) b/paludis/util/named_value.cc

    diff --git a/paludis/util/named_value.cc b/paludis/util/named_value.cc
    new file mode 100644
    index 0000000..e074f8f
    a b  
     1/* vim: set sw=4 sts=4 et foldmethod=syntax : */ 
     2 
     3/* 
     4 * Copyright (c) 2008 Ciaran McCreesh 
     5 * 
     6 * This file is part of the Paludis package manager. Paludis is free software; 
     7 * you can redistribute it and/or modify it under the terms of the GNU General 
     8 * Public License version 2, as published by the Free Software Foundation. 
     9 * 
     10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY 
     11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
     12 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
     13 * details. 
     14 * 
     15 * You should have received a copy of the GNU General Public License along with 
     16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple 
     17 * Place, Suite 330, Boston, MA  02111-1307  USA 
     18 */ 
     19 
     20#include <paludis/util/named_value.hh> 
     21 
  • (a) /dev/null vs. (b) b/paludis/util/named_value.hh

    diff --git a/paludis/util/named_value.hh b/paludis/util/named_value.hh
    new file mode 100644
    index 0000000..4d45616
    a b  
     1/* vim: set sw=4 sts=4 et foldmethod=syntax : */ 
     2 
     3/* 
     4 * Copyright (c) 2008 Ciaran McCreesh 
     5 * 
     6 * This file is part of the Paludis package manager. Paludis is free software; 
     7 * you can redistribute it and/or modify it under the terms of the GNU General 
     8 * Public License version 2, as published by the Free Software Foundation. 
     9 * 
     10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY 
     11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
     12 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
     13 * details. 
     14 * 
     15 * You should have received a copy of the GNU General Public License along with 
     16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple 
     17 * Place, Suite 330, Boston, MA  02111-1307  USA 
     18 */ 
     19 
     20#ifndef PALUDIS_GUARD_PALUDIS_UTIL_NAMED_VALUE_HH 
     21#define PALUDIS_GUARD_PALUDIS_UTIL_NAMED_VALUE_HH 1 
     22 
     23#include <paludis/util/named_value-fwd.hh> 
     24 
     25namespace paludis 
     26{ 
     27    template <typename K_, typename V_> 
     28    class NamedValue 
     29    { 
     30        private: 
     31            V_ _value; 
     32 
     33        public: 
     34            explicit NamedValue(const V_ & v) : 
     35                _value(v) 
     36            { 
     37            } 
     38 
     39            NamedValue(const NamedValue & v) : 
     40                _value(v._value) 
     41            { 
     42            } 
     43 
     44            V_ & operator() () 
     45            { 
     46                return _value; 
     47            } 
     48 
     49            const V_ & operator() () const 
     50            { 
     51                return _value; 
     52            } 
     53    }; 
     54 
     55    template <typename K_, typename V_> 
     56    NamedValue<K_, V_> 
     57    value_for(const V_ & v) 
     58    { 
     59        return NamedValue<K_, V_>(v); 
     60    } 
     61 
     62    template <typename K_> 
     63    NamedValue<K_, std::string> 
     64    value_for(const char * const v) 
     65    { 
     66        return NamedValue<K_, std::string>(v); 
     67    } 
     68} 
     69 
     70#endif