ruby-cbc 0.1.9 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/Rakefile +0 -2
  4. data/lib/ruby-cbc.rb +1 -1
  5. data/lib/ruby-cbc/problem.rb +6 -8
  6. data/lib/ruby-cbc/version.rb +1 -1
  7. data/ruby-cbc.gemspec +3 -2
  8. metadata +17 -287
  9. data/ext/ruby-cbc/cbc.i +0 -15
  10. data/ext/ruby-cbc/cbc_wrap.c +0 -4618
  11. data/ext/ruby-cbc/extconf.rb +0 -60
  12. data/ext/ruby-cbc/install/bin/cbc +0 -0
  13. data/ext/ruby-cbc/install/bin/clp +0 -0
  14. data/ext/ruby-cbc/install/include/coin/CbcBranchActual.hpp +0 -24
  15. data/ext/ruby-cbc/install/include/coin/CbcBranchAllDifferent.hpp +0 -62
  16. data/ext/ruby-cbc/install/include/coin/CbcBranchBase.hpp +0 -78
  17. data/ext/ruby-cbc/install/include/coin/CbcBranchCut.hpp +0 -183
  18. data/ext/ruby-cbc/install/include/coin/CbcBranchDecision.hpp +0 -129
  19. data/ext/ruby-cbc/install/include/coin/CbcBranchDefaultDecision.hpp +0 -100
  20. data/ext/ruby-cbc/install/include/coin/CbcBranchDynamic.hpp +0 -206
  21. data/ext/ruby-cbc/install/include/coin/CbcBranchLotsize.hpp +0 -242
  22. data/ext/ruby-cbc/install/include/coin/CbcBranchToFixLots.hpp +0 -94
  23. data/ext/ruby-cbc/install/include/coin/CbcBranchingObject.hpp +0 -236
  24. data/ext/ruby-cbc/install/include/coin/CbcClique.hpp +0 -303
  25. data/ext/ruby-cbc/install/include/coin/CbcCompare.hpp +0 -39
  26. data/ext/ruby-cbc/install/include/coin/CbcCompareActual.hpp +0 -14
  27. data/ext/ruby-cbc/install/include/coin/CbcCompareBase.hpp +0 -142
  28. data/ext/ruby-cbc/install/include/coin/CbcCompareDefault.hpp +0 -120
  29. data/ext/ruby-cbc/install/include/coin/CbcCompareDepth.hpp +0 -47
  30. data/ext/ruby-cbc/install/include/coin/CbcCompareEstimate.hpp +0 -48
  31. data/ext/ruby-cbc/install/include/coin/CbcCompareObjective.hpp +0 -49
  32. data/ext/ruby-cbc/install/include/coin/CbcConfig.h +0 -14
  33. data/ext/ruby-cbc/install/include/coin/CbcConsequence.hpp +0 -49
  34. data/ext/ruby-cbc/install/include/coin/CbcCountRowCut.hpp +0 -168
  35. data/ext/ruby-cbc/install/include/coin/CbcCutGenerator.hpp +0 -482
  36. data/ext/ruby-cbc/install/include/coin/CbcCutModifier.hpp +0 -57
  37. data/ext/ruby-cbc/install/include/coin/CbcCutSubsetModifier.hpp +0 -66
  38. data/ext/ruby-cbc/install/include/coin/CbcDummyBranchingObject.hpp +0 -83
  39. data/ext/ruby-cbc/install/include/coin/CbcEventHandler.hpp +0 -245
  40. data/ext/ruby-cbc/install/include/coin/CbcFathom.hpp +0 -137
  41. data/ext/ruby-cbc/install/include/coin/CbcFathomDynamicProgramming.hpp +0 -169
  42. data/ext/ruby-cbc/install/include/coin/CbcFeasibilityBase.hpp +0 -56
  43. data/ext/ruby-cbc/install/include/coin/CbcFixVariable.hpp +0 -67
  44. data/ext/ruby-cbc/install/include/coin/CbcFollowOn.hpp +0 -207
  45. data/ext/ruby-cbc/install/include/coin/CbcFullNodeInfo.hpp +0 -161
  46. data/ext/ruby-cbc/install/include/coin/CbcGeneral.hpp +0 -60
  47. data/ext/ruby-cbc/install/include/coin/CbcGeneralDepth.hpp +0 -279
  48. data/ext/ruby-cbc/install/include/coin/CbcHeuristic.hpp +0 -682
  49. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDINS.hpp +0 -96
  50. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDW.hpp +0 -309
  51. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDive.hpp +0 -192
  52. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveCoefficient.hpp +0 -52
  53. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveFractional.hpp +0 -52
  54. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveGuided.hpp +0 -55
  55. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveLineSearch.hpp +0 -52
  56. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDivePseudoCost.hpp +0 -60
  57. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveVectorLength.hpp +0 -52
  58. data/ext/ruby-cbc/install/include/coin/CbcHeuristicFPump.hpp +0 -340
  59. data/ext/ruby-cbc/install/include/coin/CbcHeuristicGreedy.hpp +0 -280
  60. data/ext/ruby-cbc/install/include/coin/CbcHeuristicLocal.hpp +0 -271
  61. data/ext/ruby-cbc/install/include/coin/CbcHeuristicPivotAndFix.hpp +0 -58
  62. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRENS.hpp +0 -77
  63. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRINS.hpp +0 -102
  64. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRandRound.hpp +0 -58
  65. data/ext/ruby-cbc/install/include/coin/CbcHeuristicVND.hpp +0 -94
  66. data/ext/ruby-cbc/install/include/coin/CbcLinked.hpp +0 -1406
  67. data/ext/ruby-cbc/install/include/coin/CbcMessage.hpp +0 -94
  68. data/ext/ruby-cbc/install/include/coin/CbcMipStartIO.hpp +0 -26
  69. data/ext/ruby-cbc/install/include/coin/CbcModel.hpp +0 -2952
  70. data/ext/ruby-cbc/install/include/coin/CbcNWay.hpp +0 -166
  71. data/ext/ruby-cbc/install/include/coin/CbcNode.hpp +0 -351
  72. data/ext/ruby-cbc/install/include/coin/CbcNodeInfo.hpp +0 -349
  73. data/ext/ruby-cbc/install/include/coin/CbcObject.hpp +0 -272
  74. data/ext/ruby-cbc/install/include/coin/CbcObjectUpdateData.hpp +0 -64
  75. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.cpp +0 -4134
  76. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.hpp +0 -532
  77. data/ext/ruby-cbc/install/include/coin/CbcParam.hpp +0 -324
  78. data/ext/ruby-cbc/install/include/coin/CbcPartialNodeInfo.hpp +0 -110
  79. data/ext/ruby-cbc/install/include/coin/CbcSOS.hpp +0 -279
  80. data/ext/ruby-cbc/install/include/coin/CbcSimpleInteger.hpp +0 -286
  81. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +0 -564
  82. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerPseudoCost.hpp +0 -114
  83. data/ext/ruby-cbc/install/include/coin/CbcSolver.hpp +0 -447
  84. data/ext/ruby-cbc/install/include/coin/CbcStrategy.hpp +0 -258
  85. data/ext/ruby-cbc/install/include/coin/CbcSubProblem.hpp +0 -83
  86. data/ext/ruby-cbc/install/include/coin/CbcTree.hpp +0 -490
  87. data/ext/ruby-cbc/install/include/coin/CbcTreeLocal.hpp +0 -372
  88. data/ext/ruby-cbc/install/include/coin/Cbc_C_Interface.h +0 -381
  89. data/ext/ruby-cbc/install/include/coin/Cgl012cut.hpp +0 -464
  90. data/ext/ruby-cbc/install/include/coin/CglAllDifferent.hpp +0 -115
  91. data/ext/ruby-cbc/install/include/coin/CglClique.hpp +0 -308
  92. data/ext/ruby-cbc/install/include/coin/CglConfig.h +0 -19
  93. data/ext/ruby-cbc/install/include/coin/CglCutGenerator.hpp +0 -121
  94. data/ext/ruby-cbc/install/include/coin/CglDuplicateRow.hpp +0 -189
  95. data/ext/ruby-cbc/install/include/coin/CglFlowCover.hpp +0 -371
  96. data/ext/ruby-cbc/install/include/coin/CglGMI.hpp +0 -364
  97. data/ext/ruby-cbc/install/include/coin/CglGMIParam.hpp +0 -313
  98. data/ext/ruby-cbc/install/include/coin/CglGomory.hpp +0 -204
  99. data/ext/ruby-cbc/install/include/coin/CglKnapsackCover.hpp +0 -310
  100. data/ext/ruby-cbc/install/include/coin/CglLandP.hpp +0 -306
  101. data/ext/ruby-cbc/install/include/coin/CglLandPValidator.hpp +0 -130
  102. data/ext/ruby-cbc/install/include/coin/CglLiftAndProject.hpp +0 -104
  103. data/ext/ruby-cbc/install/include/coin/CglMessage.hpp +0 -50
  104. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding.hpp +0 -429
  105. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding2.hpp +0 -427
  106. data/ext/ruby-cbc/install/include/coin/CglOddHole.hpp +0 -160
  107. data/ext/ruby-cbc/install/include/coin/CglParam.hpp +0 -93
  108. data/ext/ruby-cbc/install/include/coin/CglPreProcess.hpp +0 -492
  109. data/ext/ruby-cbc/install/include/coin/CglProbing.hpp +0 -543
  110. data/ext/ruby-cbc/install/include/coin/CglRedSplit.hpp +0 -448
  111. data/ext/ruby-cbc/install/include/coin/CglRedSplit2.hpp +0 -494
  112. data/ext/ruby-cbc/install/include/coin/CglRedSplit2Param.hpp +0 -495
  113. data/ext/ruby-cbc/install/include/coin/CglRedSplitParam.hpp +0 -272
  114. data/ext/ruby-cbc/install/include/coin/CglResidualCapacity.hpp +0 -240
  115. data/ext/ruby-cbc/install/include/coin/CglSimpleRounding.hpp +0 -174
  116. data/ext/ruby-cbc/install/include/coin/CglStored.hpp +0 -125
  117. data/ext/ruby-cbc/install/include/coin/CglTreeInfo.hpp +0 -180
  118. data/ext/ruby-cbc/install/include/coin/CglTwomir.hpp +0 -565
  119. data/ext/ruby-cbc/install/include/coin/CglZeroHalf.hpp +0 -133
  120. data/ext/ruby-cbc/install/include/coin/ClpAmplObjective.hpp +0 -113
  121. data/ext/ruby-cbc/install/include/coin/ClpCholeskyBase.hpp +0 -294
  122. data/ext/ruby-cbc/install/include/coin/ClpCholeskyDense.hpp +0 -162
  123. data/ext/ruby-cbc/install/include/coin/ClpConfig.h +0 -17
  124. data/ext/ruby-cbc/install/include/coin/ClpConstraint.hpp +0 -125
  125. data/ext/ruby-cbc/install/include/coin/ClpConstraintAmpl.hpp +0 -108
  126. data/ext/ruby-cbc/install/include/coin/ClpConstraintLinear.hpp +0 -110
  127. data/ext/ruby-cbc/install/include/coin/ClpConstraintQuadratic.hpp +0 -119
  128. data/ext/ruby-cbc/install/include/coin/ClpDualRowDantzig.hpp +0 -71
  129. data/ext/ruby-cbc/install/include/coin/ClpDualRowPivot.hpp +0 -129
  130. data/ext/ruby-cbc/install/include/coin/ClpDualRowSteepest.hpp +0 -153
  131. data/ext/ruby-cbc/install/include/coin/ClpDummyMatrix.hpp +0 -183
  132. data/ext/ruby-cbc/install/include/coin/ClpDynamicExampleMatrix.hpp +0 -186
  133. data/ext/ruby-cbc/install/include/coin/ClpDynamicMatrix.hpp +0 -381
  134. data/ext/ruby-cbc/install/include/coin/ClpEventHandler.hpp +0 -187
  135. data/ext/ruby-cbc/install/include/coin/ClpFactorization.hpp +0 -432
  136. data/ext/ruby-cbc/install/include/coin/ClpGubDynamicMatrix.hpp +0 -247
  137. data/ext/ruby-cbc/install/include/coin/ClpGubMatrix.hpp +0 -358
  138. data/ext/ruby-cbc/install/include/coin/ClpInterior.hpp +0 -570
  139. data/ext/ruby-cbc/install/include/coin/ClpLinearObjective.hpp +0 -103
  140. data/ext/ruby-cbc/install/include/coin/ClpMatrixBase.hpp +0 -524
  141. data/ext/ruby-cbc/install/include/coin/ClpMessage.hpp +0 -131
  142. data/ext/ruby-cbc/install/include/coin/ClpModel.hpp +0 -1307
  143. data/ext/ruby-cbc/install/include/coin/ClpNetworkMatrix.hpp +0 -229
  144. data/ext/ruby-cbc/install/include/coin/ClpNode.hpp +0 -349
  145. data/ext/ruby-cbc/install/include/coin/ClpNonLinearCost.hpp +0 -401
  146. data/ext/ruby-cbc/install/include/coin/ClpObjective.hpp +0 -134
  147. data/ext/ruby-cbc/install/include/coin/ClpPackedMatrix.hpp +0 -638
  148. data/ext/ruby-cbc/install/include/coin/ClpParameters.hpp +0 -126
  149. data/ext/ruby-cbc/install/include/coin/ClpPdcoBase.hpp +0 -103
  150. data/ext/ruby-cbc/install/include/coin/ClpPlusMinusOneMatrix.hpp +0 -290
  151. data/ext/ruby-cbc/install/include/coin/ClpPresolve.hpp +0 -299
  152. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnDantzig.hpp +0 -72
  153. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnPivot.hpp +0 -155
  154. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnSteepest.hpp +0 -247
  155. data/ext/ruby-cbc/install/include/coin/ClpQuadraticObjective.hpp +0 -155
  156. data/ext/ruby-cbc/install/include/coin/ClpSimplex.hpp +0 -1797
  157. data/ext/ruby-cbc/install/include/coin/ClpSimplexDual.hpp +0 -300
  158. data/ext/ruby-cbc/install/include/coin/ClpSimplexNonlinear.hpp +0 -117
  159. data/ext/ruby-cbc/install/include/coin/ClpSimplexOther.hpp +0 -277
  160. data/ext/ruby-cbc/install/include/coin/ClpSimplexPrimal.hpp +0 -244
  161. data/ext/ruby-cbc/install/include/coin/ClpSolve.hpp +0 -446
  162. data/ext/ruby-cbc/install/include/coin/Clp_C_Interface.h +0 -525
  163. data/ext/ruby-cbc/install/include/coin/CoinAlloc.hpp +0 -176
  164. data/ext/ruby-cbc/install/include/coin/CoinBuild.hpp +0 -149
  165. data/ext/ruby-cbc/install/include/coin/CoinDenseFactorization.hpp +0 -419
  166. data/ext/ruby-cbc/install/include/coin/CoinDenseVector.hpp +0 -383
  167. data/ext/ruby-cbc/install/include/coin/CoinDistance.hpp +0 -48
  168. data/ext/ruby-cbc/install/include/coin/CoinError.hpp +0 -257
  169. data/ext/ruby-cbc/install/include/coin/CoinFactorization.hpp +0 -2044
  170. data/ext/ruby-cbc/install/include/coin/CoinFileIO.hpp +0 -166
  171. data/ext/ruby-cbc/install/include/coin/CoinFinite.hpp +0 -34
  172. data/ext/ruby-cbc/install/include/coin/CoinFloatEqual.hpp +0 -177
  173. data/ext/ruby-cbc/install/include/coin/CoinHelperFunctions.hpp +0 -1111
  174. data/ext/ruby-cbc/install/include/coin/CoinIndexedVector.hpp +0 -1164
  175. data/ext/ruby-cbc/install/include/coin/CoinLpIO.hpp +0 -805
  176. data/ext/ruby-cbc/install/include/coin/CoinMessage.hpp +0 -96
  177. data/ext/ruby-cbc/install/include/coin/CoinMessageHandler.hpp +0 -666
  178. data/ext/ruby-cbc/install/include/coin/CoinModel.hpp +0 -1054
  179. data/ext/ruby-cbc/install/include/coin/CoinModelUseful.hpp +0 -441
  180. data/ext/ruby-cbc/install/include/coin/CoinMpsIO.hpp +0 -1056
  181. data/ext/ruby-cbc/install/include/coin/CoinOslFactorization.hpp +0 -280
  182. data/ext/ruby-cbc/install/include/coin/CoinPackedMatrix.hpp +0 -947
  183. data/ext/ruby-cbc/install/include/coin/CoinPackedVector.hpp +0 -657
  184. data/ext/ruby-cbc/install/include/coin/CoinPackedVectorBase.hpp +0 -269
  185. data/ext/ruby-cbc/install/include/coin/CoinParam.hpp +0 -644
  186. data/ext/ruby-cbc/install/include/coin/CoinPragma.hpp +0 -26
  187. data/ext/ruby-cbc/install/include/coin/CoinPresolveDoubleton.hpp +0 -73
  188. data/ext/ruby-cbc/install/include/coin/CoinPresolveDual.hpp +0 -85
  189. data/ext/ruby-cbc/install/include/coin/CoinPresolveDupcol.hpp +0 -226
  190. data/ext/ruby-cbc/install/include/coin/CoinPresolveEmpty.hpp +0 -116
  191. data/ext/ruby-cbc/install/include/coin/CoinPresolveFixed.hpp +0 -181
  192. data/ext/ruby-cbc/install/include/coin/CoinPresolveForcing.hpp +0 -61
  193. data/ext/ruby-cbc/install/include/coin/CoinPresolveImpliedFree.hpp +0 -60
  194. data/ext/ruby-cbc/install/include/coin/CoinPresolveIsolated.hpp +0 -51
  195. data/ext/ruby-cbc/install/include/coin/CoinPresolveMatrix.hpp +0 -1842
  196. data/ext/ruby-cbc/install/include/coin/CoinPresolveMonitor.hpp +0 -105
  197. data/ext/ruby-cbc/install/include/coin/CoinPresolvePsdebug.hpp +0 -166
  198. data/ext/ruby-cbc/install/include/coin/CoinPresolveSingleton.hpp +0 -112
  199. data/ext/ruby-cbc/install/include/coin/CoinPresolveSubst.hpp +0 -101
  200. data/ext/ruby-cbc/install/include/coin/CoinPresolveTighten.hpp +0 -55
  201. data/ext/ruby-cbc/install/include/coin/CoinPresolveTripleton.hpp +0 -66
  202. data/ext/ruby-cbc/install/include/coin/CoinPresolveUseless.hpp +0 -63
  203. data/ext/ruby-cbc/install/include/coin/CoinPresolveZeros.hpp +0 -60
  204. data/ext/ruby-cbc/install/include/coin/CoinRational.hpp +0 -44
  205. data/ext/ruby-cbc/install/include/coin/CoinSearchTree.hpp +0 -465
  206. data/ext/ruby-cbc/install/include/coin/CoinShallowPackedVector.hpp +0 -148
  207. data/ext/ruby-cbc/install/include/coin/CoinSignal.hpp +0 -117
  208. data/ext/ruby-cbc/install/include/coin/CoinSimpFactorization.hpp +0 -431
  209. data/ext/ruby-cbc/install/include/coin/CoinSmartPtr.hpp +0 -528
  210. data/ext/ruby-cbc/install/include/coin/CoinSnapshot.hpp +0 -476
  211. data/ext/ruby-cbc/install/include/coin/CoinSort.hpp +0 -678
  212. data/ext/ruby-cbc/install/include/coin/CoinStructuredModel.hpp +0 -247
  213. data/ext/ruby-cbc/install/include/coin/CoinTime.hpp +0 -310
  214. data/ext/ruby-cbc/install/include/coin/CoinTypes.hpp +0 -64
  215. data/ext/ruby-cbc/install/include/coin/CoinUtility.hpp +0 -19
  216. data/ext/ruby-cbc/install/include/coin/CoinUtilsConfig.h +0 -34
  217. data/ext/ruby-cbc/install/include/coin/CoinWarmStart.hpp +0 -58
  218. data/ext/ruby-cbc/install/include/coin/CoinWarmStartBasis.hpp +0 -456
  219. data/ext/ruby-cbc/install/include/coin/CoinWarmStartDual.hpp +0 -166
  220. data/ext/ruby-cbc/install/include/coin/CoinWarmStartPrimalDual.hpp +0 -211
  221. data/ext/ruby-cbc/install/include/coin/CoinWarmStartVector.hpp +0 -488
  222. data/ext/ruby-cbc/install/include/coin/Coin_C_defines.h +0 -115
  223. data/ext/ruby-cbc/install/include/coin/Idiot.hpp +0 -298
  224. data/ext/ruby-cbc/install/include/coin/OsiAuxInfo.hpp +0 -206
  225. data/ext/ruby-cbc/install/include/coin/OsiBranchingObject.hpp +0 -1005
  226. data/ext/ruby-cbc/install/include/coin/OsiCbcSolverInterface.hpp +0 -764
  227. data/ext/ruby-cbc/install/include/coin/OsiChooseVariable.hpp +0 -534
  228. data/ext/ruby-cbc/install/include/coin/OsiClpSolverInterface.hpp +0 -1509
  229. data/ext/ruby-cbc/install/include/coin/OsiColCut.hpp +0 -324
  230. data/ext/ruby-cbc/install/include/coin/OsiCollections.hpp +0 -35
  231. data/ext/ruby-cbc/install/include/coin/OsiConfig.h +0 -19
  232. data/ext/ruby-cbc/install/include/coin/OsiCut.hpp +0 -245
  233. data/ext/ruby-cbc/install/include/coin/OsiCuts.hpp +0 -474
  234. data/ext/ruby-cbc/install/include/coin/OsiPresolve.hpp +0 -252
  235. data/ext/ruby-cbc/install/include/coin/OsiRowCut.hpp +0 -331
  236. data/ext/ruby-cbc/install/include/coin/OsiRowCutDebugger.hpp +0 -187
  237. data/ext/ruby-cbc/install/include/coin/OsiSolverBranch.hpp +0 -152
  238. data/ext/ruby-cbc/install/include/coin/OsiSolverInterface.hpp +0 -2143
  239. data/ext/ruby-cbc/install/include/coin/OsiSolverParameters.hpp +0 -142
  240. data/ext/ruby-cbc/install/include/coin/OsiUnitTests.hpp +0 -374
  241. data/ext/ruby-cbc/install/lib/libCbc.la +0 -35
  242. data/ext/ruby-cbc/install/lib/libCbc.so +0 -0
  243. data/ext/ruby-cbc/install/lib/libCbc.so.3 +0 -0
  244. data/ext/ruby-cbc/install/lib/libCbc.so.3.9.7 +0 -0
  245. data/ext/ruby-cbc/install/lib/libCbcSolver.la +0 -35
  246. data/ext/ruby-cbc/install/lib/libCbcSolver.so +0 -0
  247. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3 +0 -0
  248. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3.9.7 +0 -0
  249. data/ext/ruby-cbc/install/lib/libCgl.la +0 -35
  250. data/ext/ruby-cbc/install/lib/libCgl.so +0 -0
  251. data/ext/ruby-cbc/install/lib/libCgl.so.1 +0 -0
  252. data/ext/ruby-cbc/install/lib/libCgl.so.1.9.7 +0 -0
  253. data/ext/ruby-cbc/install/lib/libClp.la +0 -35
  254. data/ext/ruby-cbc/install/lib/libClp.so +0 -0
  255. data/ext/ruby-cbc/install/lib/libClp.so.1 +0 -0
  256. data/ext/ruby-cbc/install/lib/libClp.so.1.13.9 +0 -0
  257. data/ext/ruby-cbc/install/lib/libClpSolver.la +0 -35
  258. data/ext/ruby-cbc/install/lib/libClpSolver.so +0 -0
  259. data/ext/ruby-cbc/install/lib/libClpSolver.so.1 +0 -0
  260. data/ext/ruby-cbc/install/lib/libClpSolver.so.1.13.9 +0 -0
  261. data/ext/ruby-cbc/install/lib/libCoinUtils.la +0 -35
  262. data/ext/ruby-cbc/install/lib/libCoinUtils.so +0 -0
  263. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3 +0 -0
  264. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3.10.11 +0 -0
  265. data/ext/ruby-cbc/install/lib/libOsi.la +0 -35
  266. data/ext/ruby-cbc/install/lib/libOsi.so +0 -0
  267. data/ext/ruby-cbc/install/lib/libOsi.so.1 +0 -0
  268. data/ext/ruby-cbc/install/lib/libOsi.so.1.12.6 +0 -0
  269. data/ext/ruby-cbc/install/lib/libOsiCbc.la +0 -35
  270. data/ext/ruby-cbc/install/lib/libOsiCbc.so +0 -0
  271. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3 +0 -0
  272. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3.9.7 +0 -0
  273. data/ext/ruby-cbc/install/lib/libOsiClp.la +0 -35
  274. data/ext/ruby-cbc/install/lib/libOsiClp.so +0 -0
  275. data/ext/ruby-cbc/install/lib/libOsiClp.so.1 +0 -0
  276. data/ext/ruby-cbc/install/lib/libOsiClp.so.1.13.9 +0 -0
  277. data/ext/ruby-cbc/install/lib/libOsiCommonTests.la +0 -35
  278. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so +0 -0
  279. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1 +0 -0
  280. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1.12.6 +0 -0
  281. data/ext/ruby-cbc/install/lib/pkgconfig/cbc.pc +0 -12
  282. data/ext/ruby-cbc/install/lib/pkgconfig/cgl.pc +0 -12
  283. data/ext/ruby-cbc/install/lib/pkgconfig/clp.pc +0 -12
  284. data/ext/ruby-cbc/install/lib/pkgconfig/coindatamiplib3.pc +0 -9
  285. data/ext/ruby-cbc/install/lib/pkgconfig/coindatasample.pc +0 -9
  286. data/ext/ruby-cbc/install/lib/pkgconfig/coinutils.pc +0 -12
  287. data/ext/ruby-cbc/install/lib/pkgconfig/osi-cbc.pc +0 -12
  288. data/ext/ruby-cbc/install/lib/pkgconfig/osi-clp.pc +0 -12
  289. data/ext/ruby-cbc/install/lib/pkgconfig/osi-unittests.pc +0 -12
  290. data/ext/ruby-cbc/install/lib/pkgconfig/osi.pc +0 -12
@@ -1,678 +0,0 @@
1
- /* $Id: CoinSort.hpp 1594 2013-04-19 14:33:00Z forrest $ */
2
- // Copyright (C) 2000, International Business Machines
3
- // Corporation and others. All Rights Reserved.
4
- // This code is licensed under the terms of the Eclipse Public License (EPL).
5
-
6
- #ifndef CoinSort_H
7
- #define CoinSort_H
8
-
9
- #include <functional>
10
- #include <new>
11
- #include <algorithm>
12
- #include "CoinDistance.hpp"
13
-
14
- // Uncomment the next three lines to get thorough initialisation of memory.
15
- // #ifndef ZEROFAULT
16
- // #define ZEROFAULT
17
- // #endif
18
-
19
- #ifdef COIN_FAST_CODE
20
- #ifndef COIN_USE_EKK_SORT
21
- #define COIN_USE_EKK_SORT
22
- #endif
23
- #endif
24
-
25
- //#############################################################################
26
-
27
- /** An ordered pair. It's the same as std::pair, just this way it'll have the
28
- same look as the triple sorting. */
29
- template <class S, class T>
30
- struct CoinPair {
31
- public:
32
- /// First member of pair
33
- S first;
34
- /// Second member of pair
35
- T second;
36
- public:
37
- /// Construct from ordered pair
38
- CoinPair(const S& s, const T& t) : first(s), second(t) {}
39
- };
40
-
41
- //#############################################################################
42
-
43
- /**@name Comparisons on first element of two ordered pairs */
44
- //@{
45
- /** Function operator.
46
- Returns true if t1.first &lt; t2.first (i.e., increasing). */
47
- template < class S, class T>
48
- class CoinFirstLess_2 {
49
- public:
50
- /// Compare function
51
- inline bool operator()(const CoinPair<S,T>& t1,
52
- const CoinPair<S,T>& t2) const
53
- { return t1.first < t2.first; }
54
- };
55
- //-----------------------------------------------------------------------------
56
- /** Function operator.
57
- Returns true if t1.first &gt; t2.first (i.e, decreasing). */
58
- template < class S, class T>
59
- class CoinFirstGreater_2 {
60
- public:
61
- /// Compare function
62
- inline bool operator()(const CoinPair<S,T>& t1,
63
- const CoinPair<S,T>& t2) const
64
- { return t1.first > t2.first; }
65
- };
66
- //-----------------------------------------------------------------------------
67
- /** Function operator.
68
- Returns true if abs(t1.first) &lt; abs(t2.first) (i.e., increasing). */
69
- template < class S, class T>
70
- class CoinFirstAbsLess_2 {
71
- public:
72
- /// Compare function
73
- inline bool operator()(const CoinPair<S,T>& t1,
74
- const CoinPair<S,T>& t2) const
75
- {
76
- const T t1Abs = t1.first < static_cast<T>(0) ? -t1.first : t1.first;
77
- const T t2Abs = t2.first < static_cast<T>(0) ? -t2.first : t2.first;
78
- return t1Abs < t2Abs;
79
- }
80
- };
81
- //-----------------------------------------------------------------------------
82
- /** Function operator.
83
- Returns true if abs(t1.first) &gt; abs(t2.first) (i.e., decreasing). */
84
- template < class S, class T>
85
- class CoinFirstAbsGreater_2 {
86
- public:
87
- /// Compare function
88
- inline bool operator()(CoinPair<S,T> t1, CoinPair<S,T> t2) const
89
- {
90
- const T t1Abs = t1.first < static_cast<T>(0) ? -t1.first : t1.first;
91
- const T t2Abs = t2.first < static_cast<T>(0) ? -t2.first : t2.first;
92
- return t1Abs > t2Abs;
93
- }
94
- };
95
- //-----------------------------------------------------------------------------
96
- /** Function operator.
97
- Compare based on the entries of an external vector, i.e., returns true if
98
- vec[t1.first &lt; vec[t2.first] (i.e., increasing wrt. vec). Note that to
99
- use this comparison operator .first must be a data type automatically
100
- convertible to int. */
101
- template < class S, class T, class V>
102
- class CoinExternalVectorFirstLess_2 {
103
- private:
104
- CoinExternalVectorFirstLess_2();
105
- private:
106
- const V* vec_;
107
- public:
108
- inline bool operator()(const CoinPair<S,T>& t1,
109
- const CoinPair<S,T>& t2) const
110
- { return vec_[t1.first] < vec_[t2.first]; }
111
- CoinExternalVectorFirstLess_2(const V* v) : vec_(v) {}
112
- };
113
- //-----------------------------------------------------------------------------
114
- /** Function operator.
115
- Compare based on the entries of an external vector, i.e., returns true if
116
- vec[t1.first &gt; vec[t2.first] (i.e., decreasing wrt. vec). Note that to
117
- use this comparison operator .first must be a data type automatically
118
- convertible to int. */
119
- template < class S, class T, class V>
120
- class CoinExternalVectorFirstGreater_2 {
121
- private:
122
- CoinExternalVectorFirstGreater_2();
123
- private:
124
- const V* vec_;
125
- public:
126
- inline bool operator()(const CoinPair<S,T>& t1,
127
- const CoinPair<S,T>& t2) const
128
- { return vec_[t1.first] > vec_[t2.first]; }
129
- CoinExternalVectorFirstGreater_2(const V* v) : vec_(v) {}
130
- };
131
- //@}
132
-
133
- //#############################################################################
134
-
135
- /** Sort a pair of containers.<br>
136
-
137
- Iter_S - iterator for first container<br>
138
- Iter_T - iterator for 2nd container<br>
139
- CoinCompare2 - class comparing CoinPairs<br>
140
- */
141
-
142
- #ifdef COIN_SORT_ARBITRARY_CONTAINERS
143
- template <class Iter_S, class Iter_T, class CoinCompare2> void
144
- CoinSort_2(Iter_S sfirst, Iter_S slast, Iter_T tfirst, const CoinCompare2& pc)
145
- {
146
- typedef typename std::iterator_traits<Iter_S>::value_type S;
147
- typedef typename std::iterator_traits<Iter_T>::value_type T;
148
- const size_t len = coinDistance(sfirst, slast);
149
- if (len <= 1)
150
- return;
151
-
152
- typedef CoinPair<S,T> ST_pair;
153
- ST_pair* x = static_cast<ST_pair*>(::operator new(len * sizeof(ST_pair)));
154
- # ifdef ZEROFAULT
155
- memset(x,0,(len*sizeof(ST_pair))) ;
156
- # endif
157
-
158
- int i = 0;
159
- Iter_S scurrent = sfirst;
160
- Iter_T tcurrent = tfirst;
161
- while (scurrent != slast) {
162
- new (x+i++) ST_pair(*scurrent++, *tcurrent++);
163
- }
164
-
165
- std::sort(x.begin(), x.end(), pc);
166
-
167
- scurrent = sfirst;
168
- tcurrent = tfirst;
169
- for (i = 0; i < len; ++i) {
170
- *scurrent++ = x[i].first;
171
- *tcurrent++ = x[i].second;
172
- }
173
-
174
- ::operator delete(x);
175
- }
176
- //-----------------------------------------------------------------------------
177
- template <class Iter_S, class Iter_T> void
178
- CoinSort_2(Iter_S sfirst, Iter_S slast, Iter_T tfirst)
179
- {
180
- typedef typename std::iterator_traits<Iter_S>::value_type S;
181
- typedef typename std::iterator_traits<Iter_T>::value_type T;
182
- CoinSort_2(sfirst, slast, tfirst, CoinFirstLess_2<S,T>());
183
- }
184
-
185
- #else //=======================================================================
186
-
187
- template <class S, class T, class CoinCompare2> void
188
- CoinSort_2(S* sfirst, S* slast, T* tfirst, const CoinCompare2& pc)
189
- {
190
- const size_t len = coinDistance(sfirst, slast);
191
- if (len <= 1)
192
- return;
193
-
194
- typedef CoinPair<S,T> ST_pair;
195
- ST_pair* x = static_cast<ST_pair*>(::operator new(len * sizeof(ST_pair)));
196
- # ifdef ZEROFAULT
197
- // Can show RUI errors on some systems due to copy of ST_pair with gaps.
198
- // E.g., <int, double> has 4 byte alignment gap on Solaris/SUNWspro.
199
- memset(x,0,(len*sizeof(ST_pair))) ;
200
- # endif
201
-
202
- size_t i = 0;
203
- S* scurrent = sfirst;
204
- T* tcurrent = tfirst;
205
- while (scurrent != slast) {
206
- new (x+i++) ST_pair(*scurrent++, *tcurrent++);
207
- }
208
-
209
- std::sort(x, x + len, pc);
210
-
211
- scurrent = sfirst;
212
- tcurrent = tfirst;
213
- for (i = 0; i < len; ++i) {
214
- *scurrent++ = x[i].first;
215
- *tcurrent++ = x[i].second;
216
- }
217
-
218
- ::operator delete(x);
219
- }
220
- template <class S, class T> void
221
- // This Always uses std::sort
222
- CoinSort_2Std(S* sfirst, S* slast, T* tfirst)
223
- {
224
- CoinSort_2(sfirst, slast, tfirst, CoinFirstLess_2<S,T>());
225
- }
226
- #ifndef COIN_USE_EKK_SORT
227
- //-----------------------------------------------------------------------------
228
- template <class S, class T> void
229
- CoinSort_2(S* sfirst, S* slast, T* tfirst)
230
- {
231
- CoinSort_2(sfirst, slast, tfirst, CoinFirstLess_2<S,T>());
232
- }
233
- #else
234
- //-----------------------------------------------------------------------------
235
- extern int boundary_sort;
236
- extern int boundary_sort2;
237
- extern int boundary_sort3;
238
- /// Sort without new and delete
239
- template <class S, class T> void
240
- CoinSort_2(S* key, S* lastKey, T* array2)
241
- {
242
- const size_t number = coinDistance(key, lastKey);
243
- if (number <= 1) {
244
- return;
245
- } else if (number>10000) {
246
- CoinSort_2Std(key, lastKey, array2);
247
- return;
248
- }
249
- #if 0
250
- if (number==boundary_sort3) {
251
- printf("before sort %d entries\n",number);
252
- for (int j=0;j<number;j++) {
253
- std::cout<<" ( "<<key[j]<<","<<array2[j]<<")";
254
- }
255
- std::cout<<std::endl;
256
- }
257
- #endif
258
- int minsize=10;
259
- int n = static_cast<int>(number);
260
- int sp;
261
- S *v = key;
262
- S *m, t;
263
- S * ls[32] , * rs[32];
264
- S *l , *r , c;
265
- T it;
266
- int j;
267
- /*check already sorted */
268
- S last=key[0];
269
- for (j=1;j<n;j++) {
270
- if (key[j]>=last) {
271
- last=key[j];
272
- } else {
273
- break;
274
- } /* endif */
275
- } /* endfor */
276
- if (j==n) {
277
- return;
278
- } /* endif */
279
- sp = 0 ; ls[sp] = v ; rs[sp] = v + (n-1) ;
280
- while( sp >= 0 )
281
- {
282
- if ( rs[sp] - ls[sp] > minsize )
283
- {
284
- l = ls[sp] ; r = rs[sp] ; m = l + (r-l)/2 ;
285
- if ( *l > *m )
286
- {
287
- t = *l ; *l = *m ; *m = t ;
288
- it = array2[l-v] ; array2[l-v] = array2[m-v] ; array2[m-v] = it ;
289
- }
290
- if ( *m > *r )
291
- {
292
- t = *m ; *m = *r ; *r = t ;
293
- it = array2[m-v] ; array2[m-v] = array2[r-v] ; array2[r-v] = it ;
294
- if ( *l > *m )
295
- {
296
- t = *l ; *l = *m ; *m = t ;
297
- it = array2[l-v] ; array2[l-v] = array2[m-v] ; array2[m-v] = it ;
298
- }
299
- }
300
- c = *m ;
301
- while ( r - l > 1 )
302
- {
303
- while ( *(++l) < c ) ;
304
- while ( *(--r) > c ) ;
305
- t = *l ; *l = *r ; *r = t ;
306
- it = array2[l-v] ; array2[l-v] = array2[r-v] ; array2[r-v] = it ;
307
- }
308
- l = r - 1 ;
309
- if ( l < m )
310
- { ls[sp+1] = ls[sp] ;
311
- rs[sp+1] = l ;
312
- ls[sp ] = r ;
313
- }
314
- else
315
- { ls[sp+1] = r ;
316
- rs[sp+1] = rs[sp] ;
317
- rs[sp ] = l ;
318
- }
319
- sp++ ;
320
- }
321
- else sp-- ;
322
- }
323
- for ( l = v , m = v + (n-1) ; l < m ; l++ )
324
- { if ( *l > *(l+1) )
325
- {
326
- c = *(l+1) ;
327
- it = array2[(l-v)+1] ;
328
- for ( r = l ; r >= v && *r > c ; r-- )
329
- {
330
- *(r+1) = *r ;
331
- array2[(r-v)+1] = array2[(r-v)] ;
332
- }
333
- *(r+1) = c ;
334
- array2[(r-v)+1] = it ;
335
- }
336
- }
337
- #if 0
338
- if (number==boundary_sort3) {
339
- printf("after sort %d entries\n",number);
340
- for (int j=0;j<number;j++) {
341
- std::cout<<" ( "<<key[j]<<","<<array2[j]<<")";
342
- }
343
- std::cout<<std::endl;
344
- CoinSort_2Many(key, lastKey, array2);
345
- printf("after2 sort %d entries\n",number);
346
- for (int j=0;j<number;j++) {
347
- std::cout<<" ( "<<key[j]<<","<<array2[j]<<")";
348
- }
349
- std::cout<<std::endl;
350
- }
351
- #endif
352
- }
353
- #endif
354
- #endif
355
- /// Sort without new and delete
356
- template <class S, class T> void
357
- CoinShortSort_2(S* key, S* lastKey, T* array2)
358
- {
359
- const size_t number = coinDistance(key, lastKey);
360
- if (number <= 2) {
361
- if (number == 2 && key[0] > key[1]) {
362
- S tempS = key[0];
363
- T tempT = array2[0];
364
- key[0] = key[1];
365
- array2[0] = array2[1];
366
- key[1] = tempS;
367
- array2[1] = tempT;
368
- }
369
- return;
370
- } else if (number>10000) {
371
- CoinSort_2Std(key, lastKey, array2);
372
- return;
373
- }
374
- int minsize=10;
375
- size_t n = number;
376
- int sp;
377
- S *v = key;
378
- S *m, t;
379
- S * ls[32] , * rs[32];
380
- S *l , *r , c;
381
- T it;
382
- size_t j;
383
- /*check already sorted */
384
- S last=key[0];
385
- for (j=1;j<n;j++) {
386
- if (key[j]>=last) {
387
- last=key[j];
388
- } else {
389
- break;
390
- } /* endif */
391
- } /* endfor */
392
- if (j==n) {
393
- return;
394
- } /* endif */
395
- sp = 0 ; ls[sp] = v ; rs[sp] = v + (n-1) ;
396
- while( sp >= 0 )
397
- {
398
- if ( rs[sp] - ls[sp] > minsize )
399
- {
400
- l = ls[sp] ; r = rs[sp] ; m = l + (r-l)/2 ;
401
- if ( *l > *m )
402
- {
403
- t = *l ; *l = *m ; *m = t ;
404
- it = array2[l-v] ; array2[l-v] = array2[m-v] ; array2[m-v] = it ;
405
- }
406
- if ( *m > *r )
407
- {
408
- t = *m ; *m = *r ; *r = t ;
409
- it = array2[m-v] ; array2[m-v] = array2[r-v] ; array2[r-v] = it ;
410
- if ( *l > *m )
411
- {
412
- t = *l ; *l = *m ; *m = t ;
413
- it = array2[l-v] ; array2[l-v] = array2[m-v] ; array2[m-v] = it ;
414
- }
415
- }
416
- c = *m ;
417
- while ( r - l > 1 )
418
- {
419
- while ( *(++l) < c ) ;
420
- while ( *(--r) > c ) ;
421
- t = *l ; *l = *r ; *r = t ;
422
- it = array2[l-v] ; array2[l-v] = array2[r-v] ; array2[r-v] = it ;
423
- }
424
- l = r - 1 ;
425
- if ( l < m )
426
- { ls[sp+1] = ls[sp] ;
427
- rs[sp+1] = l ;
428
- ls[sp ] = r ;
429
- }
430
- else
431
- { ls[sp+1] = r ;
432
- rs[sp+1] = rs[sp] ;
433
- rs[sp ] = l ;
434
- }
435
- sp++ ;
436
- }
437
- else sp-- ;
438
- }
439
- for ( l = v , m = v + (n-1) ; l < m ; l++ )
440
- { if ( *l > *(l+1) )
441
- {
442
- c = *(l+1) ;
443
- it = array2[(l-v)+1] ;
444
- for ( r = l ; r >= v && *r > c ; r-- )
445
- {
446
- *(r+1) = *r ;
447
- array2[(r-v)+1] = array2[(r-v)] ;
448
- }
449
- *(r+1) = c ;
450
- array2[(r-v)+1] = it ;
451
- }
452
- }
453
- }
454
- //#############################################################################
455
- //#############################################################################
456
-
457
- /**@name Ordered Triple Struct */
458
- template <class S, class T, class U>
459
- class CoinTriple {
460
- public:
461
- /// First member of triple
462
- S first;
463
- /// Second member of triple
464
- T second;
465
- /// Third member of triple
466
- U third;
467
- public:
468
- /// Construct from ordered triple
469
- CoinTriple(const S& s, const T& t, const U& u):first(s),second(t),third(u) {}
470
- };
471
-
472
- //#############################################################################
473
- /**@name Comparisons on first element of two ordered triples */
474
- //@{
475
- /** Function operator.
476
- Returns true if t1.first &lt; t2.first (i.e., increasing). */
477
- template < class S, class T, class U >
478
- class CoinFirstLess_3 {
479
- public:
480
- /// Compare function
481
- inline bool operator()(const CoinTriple<S,T,U>& t1,
482
- const CoinTriple<S,T,U>& t2) const
483
- { return t1.first < t2.first; }
484
- };
485
- //-----------------------------------------------------------------------------
486
- /** Function operator.
487
- Returns true if t1.first &gt; t2.first (i.e, decreasing). */
488
- template < class S, class T, class U >
489
- class CoinFirstGreater_3 {
490
- public:
491
- /// Compare function
492
- inline bool operator()(const CoinTriple<S,T,U>& t1,
493
- const CoinTriple<S,T,U>& t2) const
494
- { return t1.first>t2.first; }
495
- };
496
- //-----------------------------------------------------------------------------
497
- /** Function operator.
498
- Returns true if abs(t1.first) &lt; abs(t2.first) (i.e., increasing). */
499
- template < class S, class T, class U >
500
- class CoinFirstAbsLess_3 {
501
- public:
502
- /// Compare function
503
- inline bool operator()(const CoinTriple<S,T,U>& t1,
504
- const CoinTriple<S,T,U>& t2) const
505
- {
506
- const T t1Abs = t1.first < static_cast<T>(0) ? -t1.first : t1.first;
507
- const T t2Abs = t2.first < static_cast<T>(0) ? -t2.first : t2.first;
508
- return t1Abs < t2Abs;
509
- }
510
- };
511
- //-----------------------------------------------------------------------------
512
- /** Function operator.
513
- Returns true if abs(t1.first) &gt; abs(t2.first) (i.e., decreasing). */
514
- template < class S, class T, class U >
515
- class CoinFirstAbsGreater_3 {
516
- public:
517
- /// Compare function
518
- inline bool operator()(const CoinTriple<S,T,U>& t1,
519
- const CoinTriple<S,T,U>& t2) const
520
- {
521
- const T t1Abs = t1.first < static_cast<T>(0) ? -t1.first : t1.first;
522
- const T t2Abs = t2.first < static_cast<T>(0) ? -t2.first : t2.first;
523
- return t1Abs > t2Abs;
524
- }
525
- };
526
- //-----------------------------------------------------------------------------
527
- /** Function operator.
528
- Compare based on the entries of an external vector, i.e., returns true if
529
- vec[t1.first &lt; vec[t2.first] (i.e., increasing wrt. vec). Note that to
530
- use this comparison operator .first must be a data type automatically
531
- convertible to int. */
532
- template < class S, class T, class U, class V>
533
- class CoinExternalVectorFirstLess_3 {
534
- private:
535
- CoinExternalVectorFirstLess_3();
536
- private:
537
- const V* vec_;
538
- public:
539
- inline bool operator()(const CoinTriple<S,T,U>& t1,
540
- const CoinTriple<S,T,U>& t2) const
541
- { return vec_[t1.first] < vec_[t2.first]; }
542
- CoinExternalVectorFirstLess_3(const V* v) : vec_(v) {}
543
- };
544
- //-----------------------------------------------------------------------------
545
- /** Function operator.
546
- Compare based on the entries of an external vector, i.e., returns true if
547
- vec[t1.first &gt; vec[t2.first] (i.e., decreasing wrt. vec). Note that to
548
- use this comparison operator .first must be a data type automatically
549
- convertible to int. */
550
- template < class S, class T, class U, class V>
551
- class CoinExternalVectorFirstGreater_3 {
552
- private:
553
- CoinExternalVectorFirstGreater_3();
554
- private:
555
- const V* vec_;
556
- public:
557
- inline bool operator()(const CoinTriple<S,T,U>& t1,
558
- const CoinTriple<S,T,U>& t2) const
559
- { return vec_[t1.first] > vec_[t2.first]; }
560
- CoinExternalVectorFirstGreater_3(const V* v) : vec_(v) {}
561
- };
562
- //@}
563
-
564
- //#############################################################################
565
-
566
- /**@name Typedefs for sorting the entries of a packed vector based on an
567
- external vector. */
568
- //@{
569
- /// Sort packed vector in increasing order of the external vector
570
- typedef CoinExternalVectorFirstLess_3<int, int, double, double>
571
- CoinIncrSolutionOrdered;
572
- /// Sort packed vector in decreasing order of the external vector
573
- typedef CoinExternalVectorFirstGreater_3<int, int, double, double>
574
- CoinDecrSolutionOrdered;
575
- //@}
576
-
577
- //#############################################################################
578
-
579
- /** Sort a triple of containers.<br>
580
-
581
- Iter_S - iterator for first container<br>
582
- Iter_T - iterator for 2nd container<br>
583
- Iter_U - iterator for 3rd container<br>
584
- CoinCompare3 - class comparing CoinTriples<br>
585
- */
586
- #ifdef COIN_SORT_ARBITRARY_CONTAINERS
587
- template <class Iter_S, class Iter_T, class Iter_U, class CoinCompare3> void
588
- CoinSort_3(Iter_S sfirst, Iter_S slast, Iter_T tfirst, Iter_U, ufirst,
589
- const CoinCompare3& tc)
590
- {
591
- typedef typename std::iterator_traits<Iter_S>::value_type S;
592
- typedef typename std::iterator_traits<Iter_T>::value_type T;
593
- typedef typename std::iterator_traits<Iter_U>::value_type U;
594
- const size_t len = coinDistance(sfirst, slast);
595
- if (len <= 1)
596
- return;
597
-
598
- typedef CoinTriple<S,T,U> STU_triple;
599
- STU_triple* x =
600
- static_cast<STU_triple*>(::operator new(len * sizeof(STU_triple)));
601
-
602
- int i = 0;
603
- Iter_S scurrent = sfirst;
604
- Iter_T tcurrent = tfirst;
605
- Iter_U ucurrent = ufirst;
606
- while (scurrent != slast) {
607
- new (x+i++) STU_triple(*scurrent++, *tcurrent++, *ucurrent++);
608
- }
609
-
610
- std::sort(x, x+len, tc);
611
-
612
- scurrent = sfirst;
613
- tcurrent = tfirst;
614
- ucurrent = ufirst;
615
- for (i = 0; i < len; ++i) {
616
- *scurrent++ = x[i].first;
617
- *tcurrent++ = x[i].second;
618
- *ucurrent++ = x[i].third;
619
- }
620
-
621
- ::operator delete(x);
622
- }
623
- //-----------------------------------------------------------------------------
624
- template <class Iter_S, class Iter_T, class Iter_U> void
625
- CoinSort_3(Iter_S sfirst, Iter_S slast, Iter_T tfirst, Iter_U, ufirst)
626
- {
627
- typedef typename std::iterator_traits<Iter_S>::value_type S;
628
- typedef typename std::iterator_traits<Iter_T>::value_type T;
629
- typedef typename std::iterator_traits<Iter_U>::value_type U;
630
- CoinSort_3(sfirts, slast, tfirst, ufirst, CoinFirstLess_3<S,T,U>());
631
- }
632
-
633
- #else //=======================================================================
634
-
635
- template <class S, class T, class U, class CoinCompare3> void
636
- CoinSort_3(S* sfirst, S* slast, T* tfirst, U* ufirst, const CoinCompare3& tc)
637
- {
638
- const size_t len = coinDistance(sfirst,slast);
639
- if (len <= 1)
640
- return;
641
-
642
- typedef CoinTriple<S,T,U> STU_triple;
643
- STU_triple* x =
644
- static_cast<STU_triple*>(::operator new(len * sizeof(STU_triple)));
645
-
646
- size_t i = 0;
647
- S* scurrent = sfirst;
648
- T* tcurrent = tfirst;
649
- U* ucurrent = ufirst;
650
- while (scurrent != slast) {
651
- new (x+i++) STU_triple(*scurrent++, *tcurrent++, *ucurrent++);
652
- }
653
-
654
- std::sort(x, x+len, tc);
655
-
656
- scurrent = sfirst;
657
- tcurrent = tfirst;
658
- ucurrent = ufirst;
659
- for (i = 0; i < len; ++i) {
660
- *scurrent++ = x[i].first;
661
- *tcurrent++ = x[i].second;
662
- *ucurrent++ = x[i].third;
663
- }
664
-
665
- ::operator delete(x);
666
- }
667
- //-----------------------------------------------------------------------------
668
- template <class S, class T, class U> void
669
- CoinSort_3(S* sfirst, S* slast, T* tfirst, U* ufirst)
670
- {
671
- CoinSort_3(sfirst, slast, tfirst, ufirst, CoinFirstLess_3<S,T,U>());
672
- }
673
-
674
- #endif
675
-
676
- //#############################################################################
677
-
678
- #endif