Ignore:
Timestamp:
Nov 16, 2009 1:16:32 PM (10 years ago)
Author:
bjarni
Message:

Extract pOption/CoinOption.cpp out of pSolver/CoinSolver.cpp and update option calls in CoinCbc?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CoinMP/src/CoinSolver.c

    r347 r366  
    1717        strcpy(pSolver->LogFilename, "");
    1818
    19         pSolver->OptionCount = 0;
    20         pSolver->OptionCopy = 0;
    21         pSolver->OptionTable = NULL;
    22 
    2319        pSolver->MsgLogCallback = NULL;
    2420        pSolver->IterCallback = NULL;
     
    3228{
    3329        if (!pSolver) {
    34                 if (pSolver->OptionCopy && pSolver->OptionTable) {
    35                         free(pSolver->OptionTable);
    36                 }
    3730                return;
    3831        }
     
    5447}
    5548
    56 
    57 
    58 void coinCopyOptionTable(PSOLVER pSolver, OPTIONTABLE OptionTable, int OptionCount)
    59 {
    60         if (!pSolver) {
    61                 return;
    62         }
    63         if (pSolver->OptionCount > 0) {
    64                 pSolver->OptionCount = OptionCount;
    65                 pSolver->OptionTable = (PSOLVOPT)malloc(OptionCount * sizeof(SOLVOPTINFO));
    66                 memcpy(pSolver->OptionTable, OptionTable, OptionCount * sizeof(SOLVOPTINFO));
    67                 pSolver->OptionCopy = 1;
    68         }
    69 }
    70 
    71 
    72 void coinSetOptionTable(PSOLVER pSolver, OPTIONTABLE OptionTable, int OptionCount)
    73 {
    74         if (!pSolver) {
    75                 return;
    76         }
    77         pSolver->OptionTable = OptionTable;
    78         pSolver->OptionCount = OptionCount;
    79 }
    80 
    81 
    82 int coinGetOptionCount(PSOLVER pSolver)
    83 {
    84         if (pSolver == NULL) {
    85                 return 0;
    86         }
    87         return pSolver->OptionCount;
    88 }
    89 
    90 
    91 int coinGetOptionID(PSOLVER pSolver, int OptionNr)
    92 {
    93         if ((OptionNr < 0) || (OptionNr >= pSolver->OptionCount)) {
    94                 return -1;
    95         }
    96         return pSolver->OptionTable[OptionNr].OptionID;
    97 }
    98 
    99 
    100 int coinLocateOptionID(PSOLVER pSolver, int OptionID)
    101 {
    102         int i;
    103 
    104         for (i = 0; i < pSolver->OptionCount; i++) {
    105                 if (OptionID == pSolver->OptionTable[i].OptionID) {
    106                         return i;
    107                 }
    108         }
    109         return -1;
    110 }
    111 
    112 
    113 int coinGetOptionType(PSOLVER pSolver, int OptionID)
    114 {
    115         int OptionNr;
    116 
    117         OptionNr = coinLocateOptionID(pSolver, OptionID);
    118         if (OptionNr == -1) {
    119                 return OPT_NONE;
    120         }
    121         return pSolver->OptionTable[OptionNr].OptionType;
    122 }
    123 
    124 
    125 int coinGetOptionGroup(PSOLVER pSolver, int OptionID)
    126 {
    127         int OptionNr;
    128 
    129         OptionNr = coinLocateOptionID(pSolver, OptionID);
    130         if (OptionNr == -1) {
    131                 return GRP_NONE;
    132         }
    133         return pSolver->OptionTable[OptionNr].GroupType;
    134 }
    135 
    136 
    137 #ifdef _WIN32
    138  #define STRING_COMPARE_NOCASE(s1, s2)  strcmpi(s1, s2)
    139 #else
    140  #define STRING_COMPARE_NOCASE(s1, s2)  strcasecmp(s1, s2)
    141 #endif
    142 
    143 int coinLocateOptionName(PSOLVER pSolver, char* OptionName)
    144 {
    145         int i;
    146 
    147         for (i = 0; i < pSolver->OptionCount; i++) {
    148                 if (STRING_COMPARE_NOCASE(OptionName, pSolver->OptionTable[i].OptionName) != 0) {
    149                         return pSolver->OptionTable[i].OptionID;
    150                 }
    151                 if (STRING_COMPARE_NOCASE(OptionName, pSolver->OptionTable[i].ShortName) != 0) {
    152                         return pSolver->OptionTable[i].OptionID;
    153                 }
    154         }
    155         return -1;
    156 }
    157 
    158 
    159 const char* coinGetOptionName(PSOLVER pSolver, int OptionID)
    160 {
    161         int OptionNr;
    162 
    163         OptionNr = coinLocateOptionID(pSolver, OptionID);
    164         if (OptionNr == -1) {
    165                 return "";
    166         }
    167         return pSolver->OptionTable[OptionNr].OptionName;
    168 }
    169 
    170 
    171 int coinGetOptionNameBuf(PSOLVER pSolver, int OptionID, char* OptionName, int buflen)
    172 {
    173         int OptionNr;
    174 
    175         OptionNr = coinLocateOptionID(pSolver, OptionID);
    176         if (OptionNr == -1) {
    177                 if (OptionName) {
    178                         strcpy(OptionName, "");
    179                 }
    180                 return -1;
    181         }
    182         if (OptionName) {
    183                 strncpy(OptionName, pSolver->OptionTable[OptionNr].OptionName, buflen-1);
    184                 OptionName[buflen-1] = '\0';
    185         }
    186         return 0;
    187 }
    188 
    189 const char* coinGetOptionShortName(PSOLVER pSolver, int OptionID)
    190 {
    191         int OptionNr;
    192 
    193         OptionNr = coinLocateOptionID(pSolver, OptionID);
    194         if (OptionNr == -1) {
    195                 return "";
    196         }
    197         return pSolver->OptionTable[OptionNr].ShortName;
    198 }
    199 
    200 
    201 int coinGetOptionShortNameBuf(PSOLVER pSolver, int OptionID, char* ShortName, int buflen)
    202 {
    203         int OptionNr;
    204 
    205         OptionNr = coinLocateOptionID(pSolver, OptionID);
    206         if (OptionNr == -1) {
    207                 if (ShortName) {
    208                         strcpy(ShortName, "");
    209                 }
    210                 return -1;
    211         }
    212         if (ShortName) {
    213                 strncpy(ShortName, pSolver->OptionTable[OptionNr].ShortName, buflen-1);
    214                 ShortName[buflen-1] = '\0';
    215         }
    216         return 0;
    217 }
    218 
    219 
    220 int coinGetIntOptionDefaultValue(PSOLVER pSolver, int OptionID)
    221 {
    222         int OptionNr;
    223 
    224         OptionNr = coinLocateOptionID(pSolver, OptionID);
    225         if (OptionNr == -1) {
    226                 return 0;
    227         }
    228         return (int)pSolver->OptionTable[OptionNr].DefaultValue;
    229 }
    230 
    231 
    232 
    233 int coinGetIntOptionMinValue(PSOLVER pSolver, int OptionID)
    234 {
    235         int OptionNr;
    236 
    237         OptionNr = coinLocateOptionID(pSolver, OptionID);
    238         if (OptionNr == -1) {
    239                 return 0;
    240         }
    241         return (int)pSolver->OptionTable[OptionNr].MinValue;
    242 }
    243 
    244 
    245 
    246 int coinGetIntOptionMaxValue(PSOLVER pSolver, int OptionID)
    247 {
    248         int OptionNr;
    249 
    250         OptionNr = coinLocateOptionID(pSolver, OptionID);
    251         if (OptionNr == -1) {
    252                 return 0;
    253         }
    254         return (int)pSolver->OptionTable[OptionNr].MaxValue;
    255 }
    256 
    257 
    258 
    259 
    260 double coinGetRealOptionDefaultValue(PSOLVER pSolver, int OptionID)
    261 {
    262         int OptionNr;
    263 
    264         OptionNr = coinLocateOptionID(pSolver, OptionID);
    265         if (OptionNr == -1) {
    266                 return 0.0;
    267         }
    268         return pSolver->OptionTable[OptionNr].DefaultValue;
    269 }
    270 
    271 
    272 
    273 double coinGetRealOptionMinValue(PSOLVER pSolver, int OptionID)
    274 {
    275         int OptionNr;
    276 
    277         OptionNr = coinLocateOptionID(pSolver, OptionID);
    278         if (OptionNr == -1) {
    279                 return 0.0;
    280         }
    281         return pSolver->OptionTable[OptionNr].MinValue;
    282 }
    283 
    284 
    285 
    286 double coinGetRealOptionMaxValue(PSOLVER pSolver, int OptionID)
    287 {
    288         int OptionNr;
    289 
    290         OptionNr = coinLocateOptionID(pSolver, OptionID);
    291         if (OptionNr == -1) {
    292                 return 0.0;
    293         }
    294         return pSolver->OptionTable[OptionNr].MaxValue;
    295 }
    296 
    297 int coinGetOptionChanged(PSOLVER pSolver, int OptionID)
    298 {
    299         int OptionNr;
    300 
    301         OptionNr = coinLocateOptionID(pSolver, OptionID);
    302         if (OptionNr == -1) {
    303                 return 0;
    304         }
    305         return pSolver->OptionTable[OptionNr].changed;
    306 }
    307 
    308 
    309 int coinGetIntOption(PSOLVER pSolver, int OptionID)
    310 {
    311         int OptionNr;
    312 
    313         OptionNr = coinLocateOptionID(pSolver, OptionID);
    314         if (OptionNr == -1) {
    315                 return 0;
    316         }
    317         return (int)pSolver->OptionTable[OptionNr].CurrentValue;
    318 }
    319 
    320 int coinSetIntOption(PSOLVER pSolver, int OptionID, int IntValue)
    321 {
    322         int OptionNr;
    323 
    324         OptionNr = coinLocateOptionID(pSolver, OptionID);
    325         if (OptionNr == -1) {
    326                 return -1;
    327         }
    328         pSolver->OptionTable[OptionNr].CurrentValue = IntValue;
    329         pSolver->OptionTable[OptionNr].changed = 1;
    330         return 0;
    331 }
    332 
    333 
    334 double coinGetRealOption(PSOLVER pSolver, int OptionID)
    335 {
    336         int OptionNr;
    337 
    338         OptionNr = coinLocateOptionID(pSolver, OptionID);
    339         if (OptionNr == -1) {
    340                 return 0.0;
    341         }
    342         return pSolver->OptionTable[OptionNr].CurrentValue;
    343 }
    344 
    345 
    346 int coinSetRealOption(PSOLVER pSolver, int OptionID, double RealValue)
    347 {
    348         int OptionNr;
    349 
    350         OptionNr = coinLocateOptionID(pSolver, OptionID);
    351         if (OptionNr == -1) {
    352                 return -1;
    353         }
    354         pSolver->OptionTable[OptionNr].CurrentValue = RealValue;
    355         pSolver->OptionTable[OptionNr].changed = 1;
    356         return 0;
    357 }
    358 
Note: See TracChangeset for help on using the changeset viewer.