#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
enum {
IDX_MIN = 0,
IDX_MAX,
};
static int s_range[][2] = {
{ -10, -5 },
{ -5, 2 },
{ 2, 7 },
{ 7, 15 },
{ 12, 20 }
};
static const int kDefaultMin = 0;
static const int kDefaultMax = 10;
bool setMin(int setMin, int *dstMin, int *dstMax);
bool setMax(int setMax, int *dstMin, int *dstMax);
void test_group_run(void)
{
int amin, amax;
int num = sizeof(s_range)/sizeof(s_range[0]);
for(int idx=0; idx < num; idx++) {
amin = kDefaultMin;
amax = kDefaultMax;
// bool bf1 = setMin(s_range[idx][IDX_MIN], &amin, &amax);
bool bf2 = setMax(s_range[idx][IDX_MAX], &amin, &amax);
bool bf1 = setMin(s_range[idx][IDX_MIN], &amin, &amax);
printf("idx%d: (SetMin, SetMax)=(%d, %d)\n", idx
+1, bf1
, bf2
); }
}
int main(void) {
test_group_run();
return 0;
}
bool setMin(int setMin, int *dstMin, int *dstMax)
{
if (setMin > *dstMax) {
return false;
}
*dstMin = setMin;
return true;
}
bool setMax(int setMax, int *dstMin, int *dstMax)
{
if (setMax < *dstMin) {
return false;
}
*dstMax = setMax;
return true;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCmVudW0gewogICBJRFhfTUlOID0gMCwKICAgSURYX01BWCwKfTsKCnN0YXRpYyBpbnQgc19yYW5nZVtdWzJdID0gewogICAgeyAtMTAsIC01IH0sCiAgICB7ICAtNSwgIDIgfSwKICAgIHsgICAyLCAgNyB9LAogICAgeyAgIDcsIDE1IH0sCiAgICB7ICAxMiwgMjAgfQp9OwoKc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdE1pbiA9IDA7CnN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRNYXggPSAxMDsKCmJvb2wgc2V0TWluKGludCBzZXRNaW4sIGludCAqZHN0TWluLCBpbnQgKmRzdE1heCk7CmJvb2wgc2V0TWF4KGludCBzZXRNYXgsIGludCAqZHN0TWluLCBpbnQgKmRzdE1heCk7Cgp2b2lkIHRlc3RfZ3JvdXBfcnVuKHZvaWQpCnsKICAgIGludCBhbWluLCBhbWF4OwogICAgaW50IG51bSA9IHNpemVvZihzX3JhbmdlKS9zaXplb2Yoc19yYW5nZVswXSk7CiAgICAKICAgIGZvcihpbnQgaWR4PTA7IGlkeCA8IG51bTsgaWR4KyspIHsKICAgICAgICBhbWluID0ga0RlZmF1bHRNaW47CiAgICAgICAgYW1heCA9IGtEZWZhdWx0TWF4OwogICAgICAgIC8vIGJvb2wgYmYxID0gc2V0TWluKHNfcmFuZ2VbaWR4XVtJRFhfTUlOXSwgJmFtaW4sICZhbWF4KTsKICAgICAgICBib29sIGJmMiA9IHNldE1heChzX3JhbmdlW2lkeF1bSURYX01BWF0sICZhbWluLCAmYW1heCk7CiAgICAgICAgYm9vbCBiZjEgPSBzZXRNaW4oc19yYW5nZVtpZHhdW0lEWF9NSU5dLCAmYW1pbiwgJmFtYXgpOwogICAgICAgIHByaW50ZigiaWR4JWQ6IChTZXRNaW4sIFNldE1heCk9KCVkLCAlZClcbiIsIGlkeCsxLCBiZjEsIGJmMik7CiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIHRlc3RfZ3JvdXBfcnVuKCk7CiAgICByZXR1cm4gMDsKfQoKYm9vbCBzZXRNaW4oaW50IHNldE1pbiwgaW50ICpkc3RNaW4sIGludCAqZHN0TWF4KQp7CiAgICBpZiAoc2V0TWluID4gKmRzdE1heCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgICpkc3RNaW4gPSBzZXRNaW47CiAgICByZXR1cm4gdHJ1ZTsKfQpib29sIHNldE1heChpbnQgc2V0TWF4LCBpbnQgKmRzdE1pbiwgaW50ICpkc3RNYXgpCnsKICAgIGlmIChzZXRNYXggPCAqZHN0TWluKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgKmRzdE1heCA9IHNldE1heDsKICAgIHJldHVybiB0cnVlOwp9Cgo=