00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026 #ifndef IH_SENF_Utils_mpl_
00027 #define IH_SENF_Utils_mpl_ 1
00028
00029
00030
00031
00032
00033 #define SENF_MPL_SLOT_I_CHOOSE(a,b) (a != 0 ? a-1 : (b))
00034
00035 #define SENF_MPL_SLOT_I_CHECK(name,a,b) \
00036 SENF_MPL_SLOT_I_CHOOSE( \
00037 SENF_MPL_RV(_SENF_MPL_SLOT_ ## name (senf::mpl::take_int<(a)>())), \
00038 b )
00039
00040 #define SENF_MPL_SLOT_I_GET(name) \
00041 SENF_MPL_SLOT_I_CHECK(name, __LINE__>1?__LINE__-1:0, \
00042 SENF_MPL_SLOT_I_CHECK(name, __LINE__>2?__LINE__-2:0, \
00043 SENF_MPL_SLOT_I_CHECK(name, __LINE__>3?__LINE__-3:0, \
00044 SENF_MPL_SLOT_I_CHECK(name, __LINE__>4?__LINE__-4:0, \
00045 SENF_MPL_SLOT_I_CHECK(name, __LINE__>5?__LINE__-5:0, \
00046 SENF_MPL_SLOT_I_CHECK(name, __LINE__>6?__LINE__-6:0, \
00047 SENF_MPL_SLOT_I_CHECK(name, __LINE__>7?__LINE__-7:0, \
00048 SENF_MPL_SLOT_I_CHECK(name, __LINE__>8?__LINE__-8:0, \
00049 SENF_MPL_SLOT_I_CHECK(name, __LINE__>9?__LINE__-9:0, \
00050 SENF_MPL_SLOT_I_CHECK(name, __LINE__>10?__LINE__-10:0, \
00051 SENF_MPL_SLOT_I_CHECK(name, __LINE__>11?__LINE__-11:0, \
00052 SENF_MPL_SLOT_I_CHECK(name, __LINE__>12?__LINE__-12:0, \
00053 SENF_MPL_SLOT_I_CHECK(name, __LINE__>13?__LINE__-13:0, \
00054 SENF_MPL_SLOT_I_CHECK(name, __LINE__>14?__LINE__-14:0, \
00055 SENF_MPL_SLOT_I_CHECK(name, __LINE__>15?__LINE__-15:0, \
00056 SENF_MPL_SLOT_I_CHECK(name, __LINE__>16?__LINE__-16:0, \
00057 SENF_MPL_SLOT_I_CHECK(name, __LINE__>17?__LINE__-17:0, \
00058 SENF_MPL_SLOT_I_CHECK(name, __LINE__>18?__LINE__-18:0, \
00059 SENF_MPL_SLOT_I_CHECK(name, __LINE__>19?__LINE__-19:0, \
00060 SENF_MPL_SLOT_I_CHECK(name, __LINE__>20?__LINE__-20:0, \
00061 SENF_MPL_SLOT_I_CHECK(name, __LINE__>21?__LINE__-21:0, \
00062 SENF_MPL_SLOT_I_CHECK(name, __LINE__>22?__LINE__-22:0, \
00063 SENF_MPL_SLOT_I_CHECK(name, __LINE__>23?__LINE__-23:0, \
00064 SENF_MPL_SLOT_I_CHECK(name, __LINE__>24?__LINE__-24:0, \
00065 SENF_MPL_SLOT_I_CHECK(name, __LINE__>25?__LINE__-25:0, \
00066 SENF_MPL_SLOT_I_CHECK(name, __LINE__>26?__LINE__-26:0, \
00067 SENF_MPL_SLOT_I_CHECK(name, __LINE__>27?__LINE__-27:0, \
00068 SENF_MPL_SLOT_I_CHECK(name, __LINE__>28?__LINE__-28:0, \
00069 SENF_MPL_SLOT_I_CHECK(name, __LINE__>29?__LINE__-29:0, \
00070 SENF_MPL_SLOT_I_CHECK(name, __LINE__>30?__LINE__-30:0, \
00071 SENF_MPL_SLOT_I_CHECK(name, __LINE__>31?__LINE__-31:0, \
00072 SENF_MPL_SLOT_I_CHECK(name, __LINE__>32?__LINE__-32:0, \
00073 SENF_MPL_SLOT_I_CHECK(name, __LINE__>33?__LINE__-33:0, \
00074 SENF_MPL_SLOT_I_CHECK(name, __LINE__>34?__LINE__-34:0, \
00075 SENF_MPL_SLOT_I_CHECK(name, __LINE__>35?__LINE__-35:0, \
00076 SENF_MPL_SLOT_I_CHECK(name, __LINE__>36?__LINE__-36:0, \
00077 SENF_MPL_SLOT_I_CHECK(name, __LINE__>37?__LINE__-37:0, \
00078 SENF_MPL_SLOT_I_CHECK(name, __LINE__>38?__LINE__-38:0, \
00079 SENF_MPL_SLOT_I_CHECK(name, __LINE__>39?__LINE__-39:0, \
00080 SENF_MPL_SLOT_I_CHECK(name, __LINE__>40?__LINE__-40:0, \
00081 SENF_MPL_SLOT_I_CHECK(name, __LINE__>41?__LINE__-41:0, \
00082 SENF_MPL_SLOT_I_CHECK(name, __LINE__>42?__LINE__-42:0, \
00083 SENF_MPL_SLOT_I_CHECK(name, __LINE__>43?__LINE__-43:0, \
00084 SENF_MPL_SLOT_I_CHECK(name, __LINE__>44?__LINE__-44:0, \
00085 SENF_MPL_SLOT_I_CHECK(name, __LINE__>45?__LINE__-45:0, \
00086 SENF_MPL_SLOT_I_CHECK(name, __LINE__>46?__LINE__-46:0, \
00087 SENF_MPL_SLOT_I_CHECK(name, __LINE__>47?__LINE__-47:0, \
00088 SENF_MPL_SLOT_I_CHECK(name, __LINE__>48?__LINE__-48:0, \
00089 SENF_MPL_SLOT_I_CHECK(name, __LINE__>49?__LINE__-49:0, \
00090 SENF_MPL_SLOT_I_CHECK(name, __LINE__>50?__LINE__-50:0, \
00091 SENF_MPL_SLOT_I_CHECK(name, __LINE__>51?__LINE__-51:0, \
00092 SENF_MPL_SLOT_I_CHECK(name, __LINE__>52?__LINE__-52:0, \
00093 SENF_MPL_SLOT_I_CHECK(name, __LINE__>53?__LINE__-53:0, \
00094 SENF_MPL_SLOT_I_CHECK(name, __LINE__>54?__LINE__-54:0, \
00095 SENF_MPL_SLOT_I_CHECK(name, __LINE__>55?__LINE__-55:0, \
00096 SENF_MPL_SLOT_I_CHECK(name, __LINE__>56?__LINE__-56:0, \
00097 SENF_MPL_SLOT_I_CHECK(name, __LINE__>57?__LINE__-57:0, \
00098 SENF_MPL_SLOT_I_CHECK(name, __LINE__>58?__LINE__-58:0, \
00099 SENF_MPL_SLOT_I_CHECK(name, __LINE__>59?__LINE__-59:0, \
00100 SENF_MPL_SLOT_I_CHECK(name, __LINE__>60?__LINE__-60:0, \
00101 SENF_MPL_SLOT_I_CHECK(name, __LINE__>61?__LINE__-61:0, \
00102 SENF_MPL_SLOT_I_CHECK(name, __LINE__>62?__LINE__-62:0, \
00103 SENF_MPL_SLOT_I_CHECK(name, __LINE__>63?__LINE__-63:0, \
00104 SENF_MPL_SLOT_I_CHECK(name, __LINE__>64?__LINE__-64:0, \
00105 SENF_MPL_SLOT_I_CHECK(name, __LINE__>65?__LINE__-65:0, \
00106 SENF_MPL_SLOT_I_CHECK(name, __LINE__>66?__LINE__-66:0, \
00107 SENF_MPL_SLOT_I_CHECK(name, __LINE__>67?__LINE__-67:0, \
00108 SENF_MPL_SLOT_I_CHECK(name, __LINE__>68?__LINE__-68:0, \
00109 SENF_MPL_SLOT_I_CHECK(name, __LINE__>69?__LINE__-69:0, \
00110 SENF_MPL_SLOT_I_CHECK(name, __LINE__>70?__LINE__-70:0, \
00111 SENF_MPL_SLOT_I_CHECK(name, __LINE__>71?__LINE__-71:0, \
00112 SENF_MPL_SLOT_I_CHECK(name, __LINE__>72?__LINE__-72:0, \
00113 SENF_MPL_SLOT_I_CHECK(name, __LINE__>73?__LINE__-73:0, \
00114 SENF_MPL_SLOT_I_CHECK(name, __LINE__>74?__LINE__-74:0, \
00115 SENF_MPL_SLOT_I_CHECK(name, __LINE__>75?__LINE__-75:0, \
00116 SENF_MPL_SLOT_I_CHECK(name, __LINE__>76?__LINE__-76:0, \
00117 SENF_MPL_SLOT_I_CHECK(name, __LINE__>77?__LINE__-77:0, \
00118 SENF_MPL_SLOT_I_CHECK(name, __LINE__>78?__LINE__-78:0, \
00119 SENF_MPL_SLOT_I_CHECK(name, __LINE__>79?__LINE__-79:0, \
00120 SENF_MPL_SLOT_I_CHECK(name, __LINE__>80?__LINE__-80:0, \
00121 0 ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
00122
00123
00124
00125 #endif
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136