ruby-minisat 2.2.0.1 → 2.2.0.3
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.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +37 -0
- data/Gemfile +5 -0
- data/Rakefile +12 -0
- data/ext/minisat/minisat-wrap.cpp +4 -0
- data/ext/minisat/minisat.c +64 -42
- data/ext/minisat/minisat.h +1 -0
- data/minisat/minisat/core/Solver.cc +3 -3
- data/minisat/minisat/mtl/Vec.h +1 -1
- data/minisat/minisat/utils/Options.h +4 -4
- data/ruby-minisat.gemspec +2 -3
- data/test/test_minisat.rb +2 -2
- metadata +5 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34056195496ee40822633a89100c76924d2996a03c530f509837a929ca858695
|
4
|
+
data.tar.gz: 33f663f96330f53227c5eacbda20eb4c90d95cfb1ddb8049b01ee4820e7d566a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4828f7b39efd95eb28956fca07ec6e650dbc941ef8d3526b5e0841f021c3eb486947dc9d8cf01c0e7e2ab155983b0dd36aadf5329b7b7bdfbcbdc02d7716898
|
7
|
+
data.tar.gz: 55f0c175f2798efa0773ddae57440537be275ee56eb42f6881b29a96cf9ddc226763b37915588449cf5704c70727d2cc8ca19db803e883ef9063537d782b1691
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
workflow_dispatch:
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
ruby-versions:
|
10
|
+
uses: ruby/actions/.github/workflows/ruby_versions.yml@master
|
11
|
+
with:
|
12
|
+
engine: cruby-truffleruby
|
13
|
+
min_version: 3.3
|
14
|
+
|
15
|
+
build:
|
16
|
+
needs: ruby-versions
|
17
|
+
name: build (${{ matrix.ruby }})
|
18
|
+
strategy:
|
19
|
+
fail-fast: false
|
20
|
+
matrix:
|
21
|
+
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
|
22
|
+
include:
|
23
|
+
- ruby: "3.3"
|
24
|
+
rubyopt: "--enable-frozen-string-literal"
|
25
|
+
runs-on: ubuntu-latest
|
26
|
+
steps:
|
27
|
+
- uses: actions/checkout@v4
|
28
|
+
- name: Set up Ruby
|
29
|
+
uses: ruby/setup-ruby@v1
|
30
|
+
with:
|
31
|
+
ruby-version: ${{ matrix.ruby }}
|
32
|
+
- name: Bundle install
|
33
|
+
run: |
|
34
|
+
bundle install
|
35
|
+
- name: Run the test suite
|
36
|
+
run: |
|
37
|
+
bundle exec rake TESTOPT=-v RUBYOPT="${{ matrix.rubyopt }}"
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1 +1,13 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require "rake/extensiontask"
|
3
|
+
require "rake/testtask"
|
4
|
+
|
5
|
+
Rake::ExtensionTask.new("minisat")
|
6
|
+
|
7
|
+
Rake::TestTask.new(:test => :compile) do |t|
|
8
|
+
t.libs << "test"
|
9
|
+
t.libs << "lib"
|
10
|
+
t.test_files = FileList["test/**/test_*.rb"]
|
11
|
+
end
|
12
|
+
|
13
|
+
task :default => :test
|
@@ -58,6 +58,10 @@ extern "C" void wrap_solver_free(wrap_solver slv) {
|
|
58
58
|
delete (Solver*) slv;
|
59
59
|
}
|
60
60
|
|
61
|
+
extern "C" size_t wrap_solver_memsize(wrap_solver slv) {
|
62
|
+
return sizeof(Solver);
|
63
|
+
}
|
64
|
+
|
61
65
|
extern "C" int wrap_solver_new_var(wrap_solver slv) {
|
62
66
|
return ((Solver*) slv)->newVar();
|
63
67
|
}
|
data/ext/minisat/minisat.c
CHANGED
@@ -39,6 +39,8 @@ THE SOFTWARE.
|
|
39
39
|
|
40
40
|
VALUE rb_mMiniSat, rb_cSolver, rb_cVariable, rb_cLiteral;
|
41
41
|
|
42
|
+
static const rb_data_type_t minisat_solver_data_type;
|
43
|
+
|
42
44
|
#define SATISFIED 0 /* satisfied */
|
43
45
|
#define NOT_SOLVED_YET 1 /* not solved yet */
|
44
46
|
#define UNSATISFIABLE 2 /* always unsatisfiable */
|
@@ -79,16 +81,29 @@ static void check_model_available(int result, int check_only_unsatisfied)
|
|
79
81
|
|
80
82
|
/***** variable **************************************************************/
|
81
83
|
|
82
|
-
static void value_free(
|
84
|
+
static void value_free(void *ptr)
|
83
85
|
{
|
86
|
+
cvariable *cvar = (cvariable *)ptr;
|
84
87
|
free(cvar);
|
85
88
|
}
|
86
89
|
|
87
|
-
static void value_mark(
|
90
|
+
static void value_mark(void *ptr)
|
88
91
|
{
|
92
|
+
cvariable *cval = (cvariable *)ptr;
|
89
93
|
rb_gc_mark(cval->solver);
|
90
94
|
}
|
91
95
|
|
96
|
+
static size_t value_memsize(const void *ptr)
|
97
|
+
{
|
98
|
+
return sizeof(cvariable);
|
99
|
+
}
|
100
|
+
|
101
|
+
static const rb_data_type_t minisat_value_data_type = {
|
102
|
+
"minisat_value",
|
103
|
+
{ value_mark, value_free, value_memsize, },
|
104
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
105
|
+
};
|
106
|
+
|
92
107
|
/*
|
93
108
|
* call-seq:
|
94
109
|
* +variable -> Literal
|
@@ -101,11 +116,10 @@ static VALUE variable_pos(VALUE rvar)
|
|
101
116
|
cvariable *cvar, *clit;
|
102
117
|
VALUE rlit;
|
103
118
|
|
104
|
-
|
105
|
-
rlit =
|
119
|
+
TypedData_Get_Struct(rvar, cvariable, &minisat_value_data_type, cvar);
|
120
|
+
rlit = TypedData_Make_Struct(rb_cLiteral, cvariable, &minisat_value_data_type, clit);
|
106
121
|
clit->value = wrap_lit_pos_var(cvar->value);
|
107
122
|
clit->solver = cvar->solver;
|
108
|
-
if(OBJ_TAINTED(rvar)) OBJ_TAINT(rlit);
|
109
123
|
|
110
124
|
return rlit;
|
111
125
|
}
|
@@ -122,11 +136,10 @@ static VALUE variable_neg(VALUE rvar)
|
|
122
136
|
cvariable *cvar, *clit;
|
123
137
|
VALUE rlit;
|
124
138
|
|
125
|
-
|
126
|
-
rlit =
|
139
|
+
TypedData_Get_Struct(rvar, cvariable, &minisat_value_data_type, cvar);
|
140
|
+
rlit = TypedData_Make_Struct(rb_cLiteral, cvariable, &minisat_value_data_type, clit);
|
127
141
|
clit->value = wrap_lit_neg_var(cvar->value);
|
128
142
|
clit->solver = cvar->solver;
|
129
|
-
if(OBJ_TAINTED(rvar)) OBJ_TAINT(rlit);
|
130
143
|
|
131
144
|
return rlit;
|
132
145
|
}
|
@@ -144,8 +157,8 @@ static VALUE variable_value(VALUE rvar)
|
|
144
157
|
cvariable *cvar;
|
145
158
|
csolver *cslv;
|
146
159
|
|
147
|
-
|
148
|
-
|
160
|
+
TypedData_Get_Struct(rvar, cvariable, &minisat_value_data_type, cvar);
|
161
|
+
TypedData_Get_Struct(cvar->solver, csolver, &minisat_solver_data_type, cslv);
|
149
162
|
check_model_available(cslv->result, 0);
|
150
163
|
switch(wrap_solver_ref_var(cslv->solver, cvar->value)) {
|
151
164
|
case 0: return Qfalse;
|
@@ -163,13 +176,12 @@ static void convert_lits(int *lits, int argc, VALUE *argv, VALUE rslv)
|
|
163
176
|
|
164
177
|
for(i = 0; i < argc; i++) {
|
165
178
|
rval = argv[i];
|
166
|
-
if(
|
167
|
-
|| RDATA(rval)->dfree != (RUBY_DATA_FUNC)value_free) {
|
179
|
+
if(!rb_typeddata_is_kind_of(rval, &minisat_value_data_type)) {
|
168
180
|
rb_raise(rb_eTypeError,
|
169
181
|
"wrong argument type %s (expected Variable or Literal)",
|
170
182
|
rb_obj_classname(rval));
|
171
183
|
}
|
172
|
-
|
184
|
+
TypedData_Get_Struct(rval, cvariable, &minisat_value_data_type,cval);
|
173
185
|
if(cval->solver != rslv) {
|
174
186
|
rb_raise(rb_eArgError,
|
175
187
|
"Variable or Literal of different solver");
|
@@ -182,18 +194,31 @@ static void convert_lits(int *lits, int argc, VALUE *argv, VALUE rslv)
|
|
182
194
|
|
183
195
|
/***** solver ****************************************************************/
|
184
196
|
|
185
|
-
static void solver_free(
|
197
|
+
static void solver_free(void *ptr)
|
186
198
|
{
|
199
|
+
csolver *cslv = (csolver *)ptr;
|
187
200
|
wrap_solver_free(cslv->solver);
|
188
201
|
free(cslv);
|
189
202
|
}
|
190
203
|
|
204
|
+
static size_t solver_memsize(const void *ptr)
|
205
|
+
{
|
206
|
+
const csolver *cslv = (const csolver *)ptr;
|
207
|
+
return sizeof(csolver) + wrap_solver_memsize(cslv->solver);
|
208
|
+
}
|
209
|
+
|
210
|
+
static const rb_data_type_t minisat_solver_data_type = {
|
211
|
+
"minisat_solver",
|
212
|
+
{ NULL, solver_free, solver_memsize, },
|
213
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
214
|
+
};
|
215
|
+
|
191
216
|
static VALUE solver_alloc(VALUE klass)
|
192
217
|
{
|
193
218
|
csolver *cslv;
|
194
219
|
VALUE rslv;
|
195
220
|
|
196
|
-
rslv =
|
221
|
+
rslv = TypedData_Make_Struct(klass, csolver, &minisat_solver_data_type, cslv);
|
197
222
|
cslv->solver = wrap_solver_new();
|
198
223
|
cslv->result = NOT_SOLVED_YET;
|
199
224
|
|
@@ -214,14 +239,13 @@ static VALUE solver_new_var(VALUE rslv)
|
|
214
239
|
cvariable *cvar;
|
215
240
|
VALUE rvar;
|
216
241
|
|
217
|
-
|
242
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
218
243
|
check_model_available(cslv->result, 1);
|
219
244
|
rvar =
|
220
|
-
|
245
|
+
TypedData_Make_Struct(rb_cVariable, cvariable, &minisat_value_data_type, cvar);
|
221
246
|
cvar->value = wrap_solver_new_var(cslv->solver);
|
222
247
|
cvar->solver = rslv;
|
223
248
|
cslv->result = NOT_SOLVED_YET;
|
224
|
-
if(OBJ_TAINTED(rslv)) OBJ_TAINT(rvar);
|
225
249
|
|
226
250
|
return rvar;
|
227
251
|
}
|
@@ -243,9 +267,10 @@ static VALUE solver_add_clause(int argc, VALUE *argv, VALUE rslv)
|
|
243
267
|
{
|
244
268
|
csolver *cslv;
|
245
269
|
int *lits;
|
270
|
+
VALUE lits_val;
|
246
271
|
|
247
|
-
|
248
|
-
lits =
|
272
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
273
|
+
lits = (int *)RB_ALLOCV_N(int, lits_val, argc);
|
249
274
|
convert_lits(lits, argc, argv, rslv);
|
250
275
|
if(!wrap_solver_add_clause(cslv->solver, lits, argc)) {
|
251
276
|
cslv->result = UNSATISFIABLE;
|
@@ -255,6 +280,8 @@ static VALUE solver_add_clause(int argc, VALUE *argv, VALUE rslv)
|
|
255
280
|
cslv->clause_count++;
|
256
281
|
}
|
257
282
|
|
283
|
+
RB_GC_GUARD(lits_val);
|
284
|
+
|
258
285
|
return rslv;
|
259
286
|
}
|
260
287
|
|
@@ -271,8 +298,7 @@ static VALUE solver_add_clause(int argc, VALUE *argv, VALUE rslv)
|
|
271
298
|
*/
|
272
299
|
static VALUE solver_add_clause_2(VALUE rslv, VALUE rcls)
|
273
300
|
{
|
274
|
-
if(
|
275
|
-
&& RDATA(rcls)->dfree == (RUBY_DATA_FUNC)value_free) {
|
301
|
+
if(rb_typeddata_is_kind_of(rcls, &minisat_value_data_type)) {
|
276
302
|
return solver_add_clause(1, &rcls, rslv);
|
277
303
|
}
|
278
304
|
else {
|
@@ -294,14 +320,14 @@ static VALUE solver_ref_var(VALUE rslv, VALUE rvar)
|
|
294
320
|
csolver *cslv;
|
295
321
|
cvariable *cvar;
|
296
322
|
|
297
|
-
|
323
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
298
324
|
if(CLASS_OF(rvar) != rb_cVariable) {
|
299
325
|
rb_raise(rb_eTypeError,
|
300
326
|
"wrong argument type %s (expected Variable)",
|
301
327
|
rb_obj_classname(rvar));
|
302
328
|
}
|
303
329
|
check_model_available(cslv->result, 0);
|
304
|
-
|
330
|
+
TypedData_Get_Struct(rvar, cvariable, &minisat_value_data_type, cvar);
|
305
331
|
switch(wrap_solver_ref_var(cslv->solver, cvar->value)) {
|
306
332
|
case 0: return Qfalse;
|
307
333
|
case 1: return Qtrue;
|
@@ -322,9 +348,10 @@ static VALUE solver_solve(int argc, VALUE *argv, VALUE rslv)
|
|
322
348
|
{
|
323
349
|
csolver *cslv;
|
324
350
|
int *lits;
|
351
|
+
VALUE lits_val;
|
325
352
|
|
326
|
-
|
327
|
-
lits =
|
353
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
354
|
+
lits = (int *)RB_ALLOCV_N(int, lits_val, argc);
|
328
355
|
convert_lits(lits, argc, argv, rslv);
|
329
356
|
if(wrap_solver_solve(cslv->solver, lits, argc)) {
|
330
357
|
cslv->result = SATISFIED;
|
@@ -335,6 +362,7 @@ static VALUE solver_solve(int argc, VALUE *argv, VALUE rslv)
|
|
335
362
|
argc == 0 ? UNSATISFIABLE : UNSATISFIABLE_UNDER_ASSUMPTIONS;
|
336
363
|
return Qfalse;
|
337
364
|
}
|
365
|
+
RB_GC_GUARD(lits_val);
|
338
366
|
}
|
339
367
|
|
340
368
|
/*
|
@@ -350,7 +378,7 @@ static VALUE solver_simplify(VALUE rslv)
|
|
350
378
|
{
|
351
379
|
csolver *cslv;
|
352
380
|
|
353
|
-
|
381
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
354
382
|
|
355
383
|
check_model_available(cslv->result, 0);
|
356
384
|
if(!wrap_solver_simplify(cslv->solver)) {
|
@@ -384,7 +412,7 @@ static VALUE solver_var_size(VALUE rslv)
|
|
384
412
|
{
|
385
413
|
csolver *cslv;
|
386
414
|
|
387
|
-
|
415
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
388
416
|
|
389
417
|
return LONG2NUM(wrap_solver_var_size(cslv->solver));
|
390
418
|
}
|
@@ -400,7 +428,7 @@ static VALUE solver_clause_size(VALUE rslv)
|
|
400
428
|
{
|
401
429
|
csolver *cslv;
|
402
430
|
|
403
|
-
|
431
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
404
432
|
|
405
433
|
return LONG2NUM(cslv->clause_count);
|
406
434
|
}
|
@@ -419,12 +447,9 @@ static VALUE solver_to_s(VALUE rslv)
|
|
419
447
|
{
|
420
448
|
const char *cname = rb_obj_classname(rslv);
|
421
449
|
const char *msg = NULL;
|
422
|
-
char *buf;
|
423
450
|
csolver *cslv;
|
424
|
-
VALUE str;
|
425
|
-
size_t len;
|
426
451
|
|
427
|
-
|
452
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
428
453
|
switch(cslv->result) {
|
429
454
|
case NOT_SOLVED_YET:
|
430
455
|
msg = "not solved yet";
|
@@ -439,13 +464,8 @@ static VALUE solver_to_s(VALUE rslv)
|
|
439
464
|
msg = "unsatisfiable under assumptions";
|
440
465
|
break;
|
441
466
|
}
|
442
|
-
len = strlen(cname) + strlen(msg) + 6 + 16;
|
443
|
-
buf = ALLOCA_N(char, len);
|
444
|
-
snprintf(buf, len + 1, "#<%s:%p %s>", cname, (void*)rslv, msg);
|
445
|
-
str = rb_str_new2(buf);
|
446
|
-
if(OBJ_TAINTED(rslv)) OBJ_TAINT(str);
|
447
467
|
|
448
|
-
return
|
468
|
+
return rb_sprintf("#<%s:%p %s", cname, (void*)rslv, msg);
|
449
469
|
}
|
450
470
|
|
451
471
|
/*
|
@@ -459,7 +479,7 @@ static VALUE solver_solved_p(VALUE rslv)
|
|
459
479
|
{
|
460
480
|
csolver *cslv;
|
461
481
|
|
462
|
-
|
482
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
463
483
|
|
464
484
|
return (cslv->result != NOT_SOLVED_YET ? Qtrue : Qfalse);
|
465
485
|
}
|
@@ -475,13 +495,13 @@ static VALUE solver_satisfied_p(VALUE rslv)
|
|
475
495
|
{
|
476
496
|
csolver *cslv;
|
477
497
|
|
478
|
-
|
498
|
+
TypedData_Get_Struct(rslv, csolver, &minisat_solver_data_type, cslv);
|
479
499
|
|
480
500
|
return (cslv->result == SATISFIED ? Qtrue : Qfalse);
|
481
501
|
}
|
482
502
|
|
483
503
|
|
484
|
-
void Init_minisat()
|
504
|
+
void Init_minisat(void)
|
485
505
|
{
|
486
506
|
rb_mMiniSat = rb_define_module("MiniSat");
|
487
507
|
|
@@ -502,10 +522,12 @@ void Init_minisat()
|
|
502
522
|
|
503
523
|
rb_cVariable = rb_define_class_under(rb_mMiniSat, "Variable", rb_cObject);
|
504
524
|
rb_undef_method(CLASS_OF(rb_cVariable), "new");
|
525
|
+
rb_undef_alloc_func(rb_cVariable);
|
505
526
|
rb_define_method(rb_cVariable, "+@", variable_pos, 0);
|
506
527
|
rb_define_method(rb_cVariable, "-@", variable_neg, 0);
|
507
528
|
rb_define_method(rb_cVariable, "value", variable_value, 0);
|
508
529
|
|
509
530
|
rb_cLiteral = rb_define_class_under(rb_mMiniSat, "Literal", rb_cObject);
|
510
531
|
rb_undef_method(CLASS_OF(rb_cLiteral), "new");
|
532
|
+
rb_undef_alloc_func(rb_cLiteral);
|
511
533
|
}
|
data/ext/minisat/minisat.h
CHANGED
@@ -40,6 +40,7 @@ extern int wrap_lit_neg_var(int v);
|
|
40
40
|
|
41
41
|
extern wrap_solver wrap_solver_new();
|
42
42
|
extern void wrap_solver_free(wrap_solver slv);
|
43
|
+
extern size_t wrap_solver_memsize(wrap_solver slv);
|
43
44
|
extern int wrap_solver_new_var(wrap_solver slv);
|
44
45
|
extern int wrap_solver_add_clause(wrap_solver slv, int *lits, int len);
|
45
46
|
extern int wrap_solver_ref_var(wrap_solver slv, int var);
|
@@ -209,7 +209,7 @@ void Solver::cancelUntil(int level) {
|
|
209
209
|
for (int c = trail.size()-1; c >= trail_lim[level]; c--){
|
210
210
|
Var x = var(trail[c]);
|
211
211
|
assigns [x] = l_Undef;
|
212
|
-
if (phase_saving > 1 || (phase_saving == 1) && c > trail_lim.last())
|
212
|
+
if ((phase_saving > 1 || (phase_saving == 1)) && (c > trail_lim.last()))
|
213
213
|
polarity[x] = sign(trail[c]);
|
214
214
|
insertVarOrder(x); }
|
215
215
|
qhead = trail_lim[level];
|
@@ -499,7 +499,7 @@ CRef Solver::propagate()
|
|
499
499
|
|
500
500
|
NextClause:;
|
501
501
|
}
|
502
|
-
ws.shrink(i - j);
|
502
|
+
ws.shrink(int(i - j));
|
503
503
|
}
|
504
504
|
propagations += num_props;
|
505
505
|
simpDB_props -= num_props;
|
@@ -657,7 +657,7 @@ lbool Solver::search(int nof_conflicts)
|
|
657
657
|
|
658
658
|
}else{
|
659
659
|
// NO CONFLICT
|
660
|
-
if (nof_conflicts >= 0 && conflictC >= nof_conflicts || !withinBudget()){
|
660
|
+
if ((nof_conflicts >= 0) && (conflictC >= nof_conflicts || !withinBudget())) {
|
661
661
|
// Reached bound on number of conflicts:
|
662
662
|
progress_estimate = progressEstimate();
|
663
663
|
cancelUntil(0);
|
data/minisat/minisat/mtl/Vec.h
CHANGED
@@ -96,7 +96,7 @@ template<class T>
|
|
96
96
|
void vec<T>::capacity(int min_cap) {
|
97
97
|
if (cap >= min_cap) return;
|
98
98
|
int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1); // NOTE: grow by approximately 3/2
|
99
|
-
if (add > INT_MAX - cap || ((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM)
|
99
|
+
if ((add > INT_MAX - cap || ((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL)) && (errno == ENOMEM))
|
100
100
|
throw OutOfMemoryException();
|
101
101
|
}
|
102
102
|
|
@@ -60,7 +60,7 @@ class Option
|
|
60
60
|
struct OptionLt {
|
61
61
|
bool operator()(const Option* x, const Option* y) {
|
62
62
|
int test1 = strcmp(x->category, y->category);
|
63
|
-
return test1 < 0 || test1 == 0 && strcmp(x->type_name, y->type_name) < 0;
|
63
|
+
return (test1 < 0 || test1 == 0) && (strcmp(x->type_name, y->type_name) < 0);
|
64
64
|
}
|
65
65
|
};
|
66
66
|
|
@@ -282,15 +282,15 @@ class Int64Option : public Option
|
|
282
282
|
if (range.begin == INT64_MIN)
|
283
283
|
fprintf(stderr, "imin");
|
284
284
|
else
|
285
|
-
fprintf(stderr, "%4"PRIi64, range.begin);
|
285
|
+
fprintf(stderr, "%4" PRIi64, range.begin);
|
286
286
|
|
287
287
|
fprintf(stderr, " .. ");
|
288
288
|
if (range.end == INT64_MAX)
|
289
289
|
fprintf(stderr, "imax");
|
290
290
|
else
|
291
|
-
fprintf(stderr, "%4"PRIi64, range.end);
|
291
|
+
fprintf(stderr, "%4" PRIi64, range.end);
|
292
292
|
|
293
|
-
fprintf(stderr, "] (default: %"PRIi64")\n", value);
|
293
|
+
fprintf(stderr, "] (default: %" PRIi64")\n", value);
|
294
294
|
if (verbose){
|
295
295
|
fprintf(stderr, "\n %s\n", description);
|
296
296
|
fprintf(stderr, "\n");
|
data/ruby-minisat.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
Gem::Specification.new do |spec|
|
3
3
|
spec.name = "ruby-minisat"
|
4
|
-
spec.version = "2.2.0.
|
4
|
+
spec.version = "2.2.0.3"
|
5
5
|
spec.authors = ["Yusuke Endoh"]
|
6
6
|
spec.email = ["mame@ruby-lang.org"]
|
7
7
|
spec.description = %q{ruby binding for MiniSat, an open-source SAT solver}
|
@@ -16,6 +16,5 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.require_paths = ["ext/minisat/"]
|
17
17
|
spec.rdoc_options = %w[--exclude .*\.o --exclude minisat.so]
|
18
18
|
|
19
|
-
spec.add_development_dependency "
|
20
|
-
spec.add_development_dependency "rake"
|
19
|
+
spec.add_development_dependency "rake-compiler"
|
21
20
|
end
|
data/test/test_minisat.rb
CHANGED
@@ -104,9 +104,9 @@ class TestMiniSat < Test::Unit::TestCase
|
|
104
104
|
|
105
105
|
def test_var_size
|
106
106
|
assert_equal(0, @solver.var_size)
|
107
|
-
|
107
|
+
_var1 = @solver.new_var
|
108
108
|
assert_equal(1, @solver.var_size)
|
109
|
-
|
109
|
+
_var2 = @solver.new_var
|
110
110
|
assert_equal(2, @solver.var_size)
|
111
111
|
end
|
112
112
|
|
metadata
CHANGED
@@ -1,31 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-minisat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.0.
|
4
|
+
version: 2.2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yusuke Endoh
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.3'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.3'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
13
|
+
name: rake-compiler
|
29
14
|
requirement: !ruby/object:Gem::Requirement
|
30
15
|
requirements:
|
31
16
|
- - ">="
|
@@ -46,6 +31,7 @@ extensions:
|
|
46
31
|
- ext/minisat/extconf.rb
|
47
32
|
extra_rdoc_files: []
|
48
33
|
files:
|
34
|
+
- ".github/workflows/main.yml"
|
49
35
|
- ".gitignore"
|
50
36
|
- Gemfile
|
51
37
|
- LICENSE
|
@@ -105,7 +91,6 @@ homepage: http://github.com/mame/ruby-minisat
|
|
105
91
|
licenses:
|
106
92
|
- MIT
|
107
93
|
metadata: {}
|
108
|
-
post_install_message:
|
109
94
|
rdoc_options:
|
110
95
|
- "--exclude"
|
111
96
|
- ".*\\.o"
|
@@ -124,8 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
requirements: []
|
127
|
-
rubygems_version: 3.0.
|
128
|
-
signing_key:
|
112
|
+
rubygems_version: 3.8.0.dev
|
129
113
|
specification_version: 4
|
130
114
|
summary: ruby binding for MiniSat, an open-source SAT solver
|
131
115
|
test_files:
|