Skip to content

Commit 38842d0

Browse files
author
Tyler Burdsall
authored
Merge pull request #8 from iamtheburd/allow-bigger-numbers
Allow bigger numbers
2 parents d12d6a2 + 3f73567 commit 38842d0

File tree

4 files changed

+27
-19
lines changed

4 files changed

+27
-19
lines changed

src/combigen.cpp

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,14 @@ int main(int argc, char* argv[])
2222
if (optarg)
2323
{
2424
istringstream iss (optarg);
25+
string s = optarg;
26+
if (s.at(0) == '-')
27+
{
28+
display_help();
29+
exit(-1);
30+
}
2531
iss >> args.entry_at;
32+
args.entry_at_provided = true;
2633
args_provided = true;
2734
}
2835
break;
@@ -158,7 +165,7 @@ static const void display_help(void)
158165
<< " -v Display version number" << "\n";
159166
}
160167

161-
static const void generate_all(const long &max_size, const generation_args &args)
168+
static const void generate_all(const unsigned long long &max_size, const generation_args &args)
162169
{
163170
if (!args.display_json)
164171
{
@@ -171,8 +178,8 @@ static const void generate_all(const long &max_size, const generation_args &args
171178
{
172179
cout << "[\n";
173180
}
174-
const long last = max_size - 1;
175-
for (long i = 0; i < max_size; ++i)
181+
const unsigned long long last = max_size - 1;
182+
for (unsigned long long i = 0; i < max_size; ++i)
176183
{
177184
vector<string> result = lazy_cartesian_product::entry_at(args.pc.combinations, i);
178185
output_result(result, args, true);
@@ -187,7 +194,7 @@ static const void generate_all(const long &max_size, const generation_args &args
187194
}
188195
}
189196

190-
static const void generate_random_samples(const vector<long> &range, const generation_args &args)
197+
static const void generate_random_samples(const vector<unsigned long long> &range, const generation_args &args)
191198
{
192199
if (!args.display_json)
193200
{
@@ -200,7 +207,7 @@ static const void generate_random_samples(const vector<long> &range, const gener
200207
{
201208
cout << "[\n";
202209
}
203-
for (const long &i: range)
210+
for (const unsigned long long &i: range)
204211
{
205212
vector<string> result = lazy_cartesian_product::entry_at(args.pc.combinations, i);
206213
output_result(result, args, true);
@@ -215,7 +222,7 @@ static const void generate_random_samples(const vector<long> &range, const gener
215222
}
216223
}
217224

218-
static const void generate_random_samples_performance_mode( const generation_args &args)
225+
static const void generate_random_samples_performance_mode(const generation_args &args)
219226
{
220227
const vector<vector<string>> results = lazy_cartesian_product::generate_samples(args.pc.combinations, args.sample_size);
221228

@@ -267,13 +274,13 @@ static const void output_result(const vector<string> &result, const generation_a
267274
}
268275
else
269276
{
270-
const long key_size = args.pc.keys.size();
277+
const unsigned long long key_size = args.pc.keys.size();
271278
if (!for_optimization)
272279
{
273280
cout << "[\n";
274281
}
275282
json entry;
276-
for (long j = 0; j < key_size; ++j)
283+
for (unsigned long long j = 0; j < key_size; ++j)
277284
{
278285
entry[args.pc.keys[j]] = result[j];
279286
}
@@ -287,23 +294,23 @@ static const void output_result(const vector<string> &result, const generation_a
287294

288295
static const void parse_args(const generation_args &args)
289296
{
290-
long max_size = lazy_cartesian_product::compute_max_size(args.pc.combinations);
297+
unsigned long long max_size = lazy_cartesian_product::compute_max_size(args.pc.combinations);
291298
if (args.generate_all_combinations)
292299
{
293300
generate_all(max_size, args);
294301
exit(0);
295302
}
296303
else
297304
{
298-
if (args.sample_size == 0 && args.entry_at > -1 && !args.generate_all_combinations)
305+
if (args.sample_size == 0 && args.entry_at_provided && !args.generate_all_combinations)
299306
{
300307
vector<string> result = lazy_cartesian_product::entry_at(args.pc.combinations, args.entry_at);
301308
output_result(result, args, false);
302309
exit(0);
303310
}
304-
else if (args.sample_size > 0)
311+
else if (args.sample_size >= 0)
305312
{
306-
const long n = args.sample_size;
313+
const unsigned long long n = args.sample_size;
307314
if (n > max_size)
308315
{
309316
cerr << "ERROR: Sample size cannot be greater than maximum possible combinations\n";
@@ -315,7 +322,7 @@ static const void parse_args(const generation_args &args)
315322
}
316323
else
317324
{
318-
vector<long> range = lazy_cartesian_product::generate_random_indices(n, max_size);
325+
vector<unsigned long long> range = lazy_cartesian_product::generate_random_indices(n, max_size);
319326
generate_random_samples(range, args);
320327
}
321328
exit(0);

src/combigen.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,19 @@ struct generation_args
5353
possible_combinations pc;
5454
string input;
5555
string delim = ",";
56-
long entry_at = -1;
57-
long sample_size = 0;
56+
unsigned long long entry_at = 0;
57+
unsigned long long sample_size = 0;
5858
bool generate_all_combinations = false;
5959
bool display_keys = false;
6060
bool display_json = false;
6161
bool perf_mode = false;
62+
bool entry_at_provided = false;
6263
};
6364

6465
static const void display_csv_keys(const vector<string> &keys, const string &delim);
6566
static const void display_help(void);
66-
static const void generate_all(const long &max_size, const generation_args &args);
67-
static const void generate_random_samples(const vector<long> &range, const generation_args &args);
67+
static const void generate_all(const unsigned long long &max_size, const generation_args &args);
68+
static const void generate_random_samples(const vector<unsigned long long> &range, const generation_args &args);
6869
static const void generate_random_samples_performance_mode(const generation_args &args);
6970
static const void output_result(const vector<string> &result, const generation_args &args, const bool &for_optimization);
7071
static const void parse_args(const generation_args &args);

src/lib/nlohmann/json

Submodule json updated 176 files

0 commit comments

Comments
 (0)