array-traits.hpp
Go to the documentation of this file.00001 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ 00002 /* 00003 * Main authors: 00004 * Christian Schulte <schulte@gecode.org> 00005 * 00006 * Copyright: 00007 * Christian Schulte, 2005 00008 * 00009 * This file is part of Gecode, the generic constraint 00010 * development environment: 00011 * http://www.gecode.org 00012 * 00013 * Permission is hereby granted, free of charge, to any person obtaining 00014 * a copy of this software and associated documentation files (the 00015 * "Software"), to deal in the Software without restriction, including 00016 * without limitation the rights to use, copy, modify, merge, publish, 00017 * distribute, sublicense, and/or sell copies of the Software, and to 00018 * permit persons to whom the Software is furnished to do so, subject to 00019 * the following conditions: 00020 * 00021 * The above copyright notice and this permission notice shall be 00022 * included in all copies or substantial portions of the Software. 00023 * 00024 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00025 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00026 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 00027 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 00028 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 00029 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 00030 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00031 * 00032 */ 00033 00034 namespace Gecode { 00035 00036 class IntVarArgs; 00037 class IntVarArray; 00038 class BoolVarArgs; 00039 class BoolVarArray; 00040 class IntArgs; 00041 00043 template<> 00044 class ArrayTraits<VarArgArray<IntVar>> { 00045 public: 00046 typedef IntVarArgs StorageType; 00047 typedef IntVar ValueType; 00048 typedef IntVarArgs ArgsType; 00049 }; 00050 00052 template<> 00053 class ArrayTraits<VarArray<IntVar>> { 00054 public: 00055 typedef IntVarArray StorageType; 00056 typedef IntVar ValueType; 00057 typedef IntVarArgs ArgsType; 00058 }; 00059 00061 template<> 00062 class ArrayTraits<VarArgArray<BoolVar>> { 00063 public: 00064 typedef BoolVarArgs StorageType; 00065 typedef BoolVar ValueType; 00066 typedef BoolVarArgs ArgsType; 00067 }; 00068 00070 template<> 00071 class ArrayTraits<VarArray<BoolVar>> { 00072 public: 00073 typedef BoolVarArray StorageType; 00074 typedef BoolVar ValueType; 00075 typedef BoolVarArgs ArgsType; 00076 }; 00077 00079 template<> 00080 class ArrayTraits<ArgArray<int>> { 00081 public: 00082 typedef IntArgs StorageType; 00083 typedef int ValueType; 00084 typedef IntArgs ArgsType; 00085 }; 00086 00088 template<> 00089 class ArrayTraits<ArgArray<IntSet>> { 00090 public: 00091 typedef IntSetArgs StorageType; 00092 typedef IntSet ValueType; 00093 typedef IntSetArgs ArgsType; 00094 }; 00095 00097 template<> 00098 class ArrayTraits<IntVarArray> { 00099 public: 00100 typedef IntVarArray StorageType; 00101 typedef IntVar ValueType; 00102 typedef IntVarArgs ArgsType; 00103 }; 00104 00106 template<> 00107 class ArrayTraits<IntVarArgs> { 00108 public: 00109 typedef IntVarArgs StorageType; 00110 typedef IntVar ValueType; 00111 typedef IntVarArgs ArgsType; 00112 }; 00113 00115 template<> 00116 class ArrayTraits<IntArgs> { 00117 public: 00118 typedef IntArgs StorageType; 00119 typedef int ValueType; 00120 typedef IntArgs ArgsType; 00121 }; 00122 00124 template<> 00125 class ArrayTraits<BoolVarArray> { 00126 public: 00127 typedef BoolVarArray StorageType; 00128 typedef BoolVar ValueType; 00129 typedef BoolVarArgs ArgsType; 00130 }; 00131 00133 template<> 00134 class ArrayTraits<BoolVarArgs> { 00135 public: 00136 typedef BoolVarArgs StorageType; 00137 typedef BoolVar ValueType; 00138 typedef BoolVarArgs ArgsType; 00139 }; 00140 00141 } 00142 00143 // STATISTICS: int-other