int main(int argc, char *argv[]) { bool use_move = false; auto cnt = 1; if (argc == 2 && argv[1][0] == '+') { cnt = 1'000'000'001; } else if (argc == 3 && argv[1][0] == '+' && argv[2][0] == 'm') { use_move = true; std::cout << "++ use_move ++\n"; } //----------------------------------------------------- std::string x = "hello world"; std::string y = "goodbye the cruel one!"; std::cout << "x: " << x << "\n"; std::cout << "y: " << y << "\n"; while (cnt--) { if (use_move) swap_move(x, y); else swap_copy(x, y); } std::cout << "x: " << x << "\n"; std::cout << "y: " << y << "\n"; }
static int test_param_bignum(int n) { unsigned char buf[MAX_LEN], bnbuf[MAX_LEN], le[MAX_LEN]; const size_t len = raw_values[n].len; size_t bnsize; BIGNUM *b = NULL, *c = NULL; OSSL_PARAM param = OSSL_PARAM_DEFN("bn", OSSL_PARAM_UNSIGNED_INTEGER, NULL, 0, NULL); int ret = 0; param.data = bnbuf; param.data_size = len; param.return_size = &bnsize; copy_be_to_native(buf, raw_values[n].value, len); swap_copy(le, raw_values[n].value, len); if (!TEST_ptr(b = BN_bin2bn(raw_values[n].value, (int)len, NULL))) goto err; if (!TEST_true(OSSL_PARAM_set_BN(¶m, b)) || !TEST_mem_eq(bnbuf, bnsize, buf, bnsize)) goto err; param.data_size = *param.return_size; if (!TEST_true(OSSL_PARAM_get_BN(¶m, &c)) || !TEST_BN_eq(b, c)) goto err; ret = 1; err: BN_free(b); BN_free(c); return ret; }
static int test_param_size_t(int n) { size_t in, out; unsigned char buf[MAX_LEN], le[MAX_LEN], cmp[sizeof(size_t)]; const size_t len = raw_values[n].len >= sizeof(size_t) ? sizeof(size_t) : raw_values[n].len; OSSL_PARAM param = OSSL_PARAM_size_t("a", NULL); memset(buf, 0, sizeof(buf)); memset(le, 0, sizeof(le)); copy_be_to_native(buf, raw_values[n].value, len); swap_copy(le, raw_values[n].value, len); memcpy(&in, buf, sizeof(in)); param.data = &out; if (!TEST_true(OSSL_PARAM_set_size_t(¶m, in))) return 0; copy_to_le(cmp, &out, sizeof(out)); if (!TEST_mem_eq(cmp, len, le, len)) return 0; in = 0; param.data = buf; if (!TEST_true(OSSL_PARAM_get_size_t(¶m, &in))) return 0; copy_to_le(cmp, &in, sizeof(in)); if (!TEST_mem_eq(cmp, sizeof(in), le, sizeof(in))) return 0; param.data = &out; return test_param_type_extra(¶m, le, sizeof(size_t)); }
static void copy_be_to_native(unsigned char *out, const void *in, size_t len) { DECLARE_IS_ENDIAN; if (IS_LITTLE_ENDIAN) swap_copy(out, in, len); else memcpy(out, in, len); }