-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into pr/ci-fixes
- Loading branch information
Showing
8 changed files
with
163 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,3 +2,5 @@ | |
|
||
cargo clean | ||
rm -rf vendor/build | ||
rm libwrapper.a | ||
rm wrapper.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
-I./vendor | ||
-xc++ | ||
--std=c++11 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,47 @@ | ||
use chuffed_rs::bindings::createVar; | ||
use chuffed_rs::bindings::IntVar; | ||
pub fn main() { | ||
let mut var = std::mem::MaybeUninit::<IntVar>::uninit(); | ||
use chuffed_rs::bindings::{ | ||
get_idx, new_dummy_problem, p_addVars, p_setcallback, vec, ConLevel_CL_DEF, IntVar, | ||
VarBranch_VAR_INORDER, VarBranch_VAR_MIN_MIN, | ||
}; | ||
use chuffed_rs::wrappers::{all_different_wrapper, branch_wrapper, create_vars}; | ||
|
||
unsafe fn post_constraints(_n: i32) -> *mut vec<*mut IntVar> { | ||
// Create constant | ||
let n: i32 = _n; | ||
// Create some variables | ||
let x: *mut vec<*mut IntVar> = create_vars(n, 0, n, false); | ||
|
||
// Post some constraints | ||
all_different_wrapper(x, ConLevel_CL_DEF); | ||
|
||
// Post some branchings | ||
branch_wrapper(x as _, VarBranch_VAR_INORDER, VarBranch_VAR_MIN_MIN); | ||
|
||
x | ||
} | ||
|
||
// Custom printing function for this problem | ||
#[no_mangle] | ||
pub unsafe extern "C" fn callback(x: *mut vec<*mut IntVar>) { | ||
print!("First output is: {:?}", get_idx(x, 0)); | ||
} | ||
|
||
fn main() { | ||
let args: Vec<String> = std::env::args().collect(); | ||
|
||
if args.len() != 2 { | ||
println!("Invalid number of arguments"); | ||
return; | ||
} | ||
|
||
let n: i32 = args[1].parse().expect("Invalid input"); | ||
|
||
unsafe { | ||
createVar(&mut var.as_mut_ptr(), 0, 5, false); | ||
let x = post_constraints(n); | ||
// make new dummy problem | ||
let p = new_dummy_problem(); | ||
// Call problem.addvars() | ||
p_addVars(p, x); | ||
// Call problem.setcallback() | ||
p_setcallback(p, Some(callback)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#include "./wrapper.h" | ||
|
||
DummyProblem *new_dummy_problem() { return new DummyProblem(); } | ||
void p_addVars(DummyProblem *p, vec<IntVar *> *_searchVars) { | ||
p->addVars(_searchVars); | ||
} | ||
void p_setcallback(DummyProblem *p, void (*_callback)(vec<IntVar *> *)) { | ||
p->setcallback(_callback); | ||
} | ||
IntVar* get_idx(vec<IntVar *> *x, int i) { return *x[i]; } | ||
|
||
vec<IntVar*>* make_vec_intvar() { | ||
return new vec<IntVar*>(); | ||
} | ||
|
||
void destroy_vec_intvar(vec<IntVar*>* v) { | ||
delete v; | ||
} | ||
|
||
void branch_IntVar(vec<IntVar *> *x, VarBranch var_branch, | ||
ValBranch val_branch) { | ||
branch(*x, var_branch, val_branch); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,26 @@ | ||
#include "chuffed/branching/branching.h" | ||
#include "chuffed/core/engine.h" | ||
#include "chuffed/core/propagator.h" | ||
#include "chuffed/vars/modelling.h" | ||
|
||
class DummyProblem { | ||
public: | ||
vec<IntVar *> *searchVars; | ||
// callback | ||
void (*callback)(vec<IntVar *> *); | ||
|
||
void print() { callback(searchVars); } | ||
void setcallback(void (*_callback)(vec<IntVar *> *)) { callback = _callback; } | ||
void addVars(vec<IntVar *> *_searchVars) { searchVars = _searchVars; } | ||
}; | ||
|
||
DummyProblem *new_dummy_problem(); | ||
void p_addVars(DummyProblem *p, vec<IntVar *> *_searchVars); | ||
void p_setcallback(DummyProblem *p, void (*_callback)(vec<IntVar *> *)); | ||
IntVar* get_idx(vec<IntVar *> *x, int i); | ||
|
||
vec<IntVar*>* make_vec_intvar(); | ||
void destroy_vec_intvar(vec<IntVar*>* v); | ||
|
||
void branch_IntVar(vec<IntVar *> *x, VarBranch var_branch, | ||
ValBranch val_branch); |