ruby-cbc 0.1.9 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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