Skip to content

Commit 321f097

Browse files
committed
add writing jets selections results to ptr
1 parent 940c464 commit 321f097

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

compile/test/jetreconstruction_test.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ void printClusterSequence(const jetreconstruction_ClusterSequence *sequence) {
4242
}
4343
}
4444

45+
void printJetsResult(const jetreconstruction_JetsResult *results) {
46+
assert(results != NULL);
47+
for (size_t i = 0; i < results->length; ++i) {
48+
printPseudoJet(results->data + i);
49+
}
50+
}
51+
4552
int main(int argc, char *argv[]) {
4653
init_julia(argc, argv);
4754
size_t len = 2;
@@ -60,6 +67,8 @@ int main(int argc, char *argv[]) {
6067
printClusterSequence(&cluster_seq);
6168
jetreconstruction_JetsResult result;
6269
jetreconstruction_exclusive_jets_njets(&cluster_seq, 2, &result);
70+
printJetsResult(&result);
71+
6372
jetreconstruction_JetsResult_free_members(&result);
6473
jetreconstruction_ClusterSequence_free_members(&cluster_seq);
6574
shutdown_julia(0);

src/C_JetReconstruction/C_JetReconstruction.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Wraps a C array into a Julia `Vector` for both bits and non-bits types.
2323
This function use 'unsafe' methods and has undefined behaviour
2424
if pointer isn't valid or length isn't correct.
2525
"""
26+
2627
function unsafe_wrap_c_array(ptr::Ptr{T}, array_length::Csize_t) where {T}
2728
if isbitstype(T)
2829
return unsafe_wrap(Vector{T}, ptr, array_length)
@@ -163,9 +164,9 @@ function jets_selection(selector, clustersequence::Ptr{C_ClusterSequence{T}},
163164
result::Ptr{C_JetsResult{U}}; kwargs...)::Cint where {T, U}
164165
c_clusterseq = unsafe_load(clustersequence)
165166
clusterseq = ClusterSequence{T}(c_clusterseq)
166-
jets_result = selector(clusterseq; kwargs...)
167+
jets_result = selector(clusterseq; T=U, kwargs...)
167168
println(jets_result)
168-
c_results = C_JetsResult{U}(C_NULL, 0) # TODO convert and write to result
169+
c_results = C_JetsResult{U}(make_c_array(jets_result)...)
169170
unsafe_store!(result, c_results)
170171
return 0
171172
end

0 commit comments

Comments
 (0)