Skip to content

Commit 05f6484

Browse files
authored
Regenerate Java bindings with the latest Jextract (#79)
1 parent 4230f45 commit 05f6484

File tree

4 files changed

+82
-71
lines changed

4 files changed

+82
-71
lines changed

.idea/misc.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/generate.sh

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ HEADER_FILE=include/clarabel.h
2222

2323
# Define variables
2424
ARTIFACT_ID=com.ustermetrics."${PROJECT_NAME}"
25-
ARTIFACT_ID_DIR=$(echo "${ARTIFACT_ID}" | sed 's/\./\//g')
25+
ARTIFACT_ID_DIR=$(echo "${ARTIFACT_ID}" | sed "s/\./\//g")
2626

2727
TMP_DIR=$(dirname "$(mktemp -u)")
2828
REPO_DIR="${TMP_DIR}"/"${REPO##*/}"
@@ -39,33 +39,38 @@ if [[ "$OSTYPE" = "linux-gnu"* ]]; then
3939
elif [[ "$OSTYPE" = "msys"* ]]; then
4040
JEXTRACT=jextract.bat
4141
else
42-
echo "OS not supported"
42+
echo "Error: OS ${OSTYPE} not supported"
4343
exit 1
4444
fi
4545

4646
# Clone and checkout repo
47+
echo "Clone repository ${REPO} into ${REPO_DIR}"
4748
rm -rf "${REPO_DIR}"
48-
cd "${TMP_DIR}" || exit 1
49-
git clone "${REPO}" || exit 1
50-
cd "${REPO_DIR}" || exit 1
51-
git checkout "${VERSION}" || exit 1
49+
cd "${TMP_DIR}" || { echo "Error: Failed to change directory to ${TMP_DIR}"; exit 1; }
50+
git clone "${REPO}" || { echo "Error: Failed to clone repository ${REPO}"; exit 1; }
51+
cd "${REPO_DIR}" || { echo "Error: Failed to change directory to ${REPO_DIR}"; exit 1; }
52+
git checkout "${VERSION}" || { echo "Error: Failed to checkout version ${VERSION}"; exit 1; }
5253

5354
# Apply patches
5455
if [ -d "${PATCHES_DIR}" ]; then
5556
if ls "${PATCHES_DIR}"/*.patch 1> /dev/null 2>&1; then
56-
git apply "${PATCHES_DIR}"/*.patch
57+
PATCHES=$(basename -a "${PATCHES_DIR}"/*.patch | tr "\n" " ")
58+
echo "Apply patch(es) ${PATCHES}"
59+
git apply "${PATCHES_DIR}"/*.patch || { echo "Error: Failed to apply patch(es) ${PATCHES}"; exit 1; }
5760
fi
5861
fi
5962

6063
if [ "${DUMP_INCLUDES}" = "true" ]; then
6164

65+
echo "Dump symbols"
66+
6267
# Dump included symbols
6368
"${JEXTRACT}" \
6469
--define-macro FEATURE_FAER_SPARSE \
6570
--define-macro FEATURE_PARDISO_MKL \
6671
--define-macro FEATURE_PARDISO_ANY \
6772
--dump-includes "${INCLUDES_FILE}" \
68-
"${HEADER_FILE_FULL_PATH}" || exit 1
73+
"${HEADER_FILE_FULL_PATH}" || { echo "Error: Failed to dump symbols"; exit 1; }
6974

7075
# Select symbols
7176
grep "Clarabel" "${INCLUDES_FILE}" \
@@ -79,10 +84,14 @@ if [ "${DUMP_INCLUDES}" = "true" ]; then
7984
| grep -v "\-\-include\-function clarabel_DefaultSolver_f64_unset_termination_callback " \
8085
| grep -v "\-\-include\-typedef ClarabelCallbackFcn " \
8186
| grep -v "\-\-include\-typedef ClarabelCallbackFcn_f64 " \
82-
| grep -v "\-\-include\-typedef ClarabelSupportedConeT " >"${INCLUDES_FILE}".tmp && mv "${INCLUDES_FILE}".tmp "${INCLUDES_FILE}"
87+
| grep -v "\-\-include\-typedef ClarabelSupportedConeT " \
88+
| sed "s/Extracted from: .*Clarabel\.cpp/Extracted from: Clarabel.cpp/" \
89+
| sed "s/header: .*Clarabel\.cpp/header: Clarabel.cpp/" >"${INCLUDES_FILE}".tmp && mv "${INCLUDES_FILE}".tmp "${INCLUDES_FILE}"
8390

8491
else
8592

93+
echo "Generate bindings"
94+
8695
# Remove old bindings
8796
rm -rf "${JAVA_SRC_DIR}"/"${ARTIFACT_ID_DIR}"/bindings
8897

@@ -92,8 +101,9 @@ else
92101
--define-macro FEATURE_PARDISO_MKL \
93102
--define-macro FEATURE_PARDISO_ANY \
94103
--target-package "${ARTIFACT_ID}".bindings \
104+
--header-class-name Clarabel_h \
95105
--output "${JAVA_SRC_DIR}" \
96-
@"${BINDINGS_DIR}"/includes.txt "${HEADER_FILE_FULL_PATH}" || exit 1
106+
@"${BINDINGS_DIR}"/includes.txt "${HEADER_FILE_FULL_PATH}" || { echo "Error: Failed to generate bindings"; exit 1; }
97107

98108
fi
99109

bindings/includes.txt

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,59 @@
1-
#### Extracted from: Clarabel.cpp/include/c/ClarabelTypes.h
2-
--include-typedef ClarabelFloat # header: Clarabel.cpp/include/c/ClarabelTypes.h
3-
#### Extracted from: Clarabel.cpp/include/c/CscMatrix.h
4-
--include-struct ClarabelCscMatrix_f64 # header: Clarabel.cpp/include/c/CscMatrix.h
5-
--include-function clarabel_CscMatrix_f64_init # header: Clarabel.cpp/include/c/CscMatrix.h
6-
#### Extracted from: Clarabel.cpp/include/c/DefaultInfo.h
7-
--include-struct ClarabelDefaultInfo_f64 # header: Clarabel.cpp/include/c/DefaultInfo.h
8-
--include-struct ClarabelLinearSolverInfo # header: Clarabel.cpp/include/c/DefaultInfo.h
9-
#### Extracted from: Clarabel.cpp/include/c/DefaultSettings.h
10-
--include-struct ClarabelDefaultSettings_f64 # header: Clarabel.cpp/include/c/DefaultSettings.h
11-
--include-constant AUTO # header: Clarabel.cpp/include/c/DefaultSettings.h
12-
--include-constant FAER # header: Clarabel.cpp/include/c/DefaultSettings.h
13-
--include-constant PARDISO_MKL # header: Clarabel.cpp/include/c/DefaultSettings.h
14-
--include-constant QDLDL # header: Clarabel.cpp/include/c/DefaultSettings.h
15-
--include-function clarabel_DefaultSettings_f64_default # header: Clarabel.cpp/include/c/DefaultSettings.h
16-
#### Extracted from: Clarabel.cpp/include/c/DefaultSolution.h
17-
--include-struct ClarabelDefaultSolution_f64 # header: Clarabel.cpp/include/c/DefaultSolution.h
18-
--include-constant ClarabelAlmostDualInfeasible # header: Clarabel.cpp/include/c/DefaultSolution.h
19-
--include-constant ClarabelAlmostPrimalInfeasible # header: Clarabel.cpp/include/c/DefaultSolution.h
20-
--include-constant ClarabelAlmostSolved # header: Clarabel.cpp/include/c/DefaultSolution.h
21-
--include-constant ClarabelCallbackTerminated # header: Clarabel.cpp/include/c/DefaultSolution.h
22-
--include-constant ClarabelDualInfeasible # header: Clarabel.cpp/include/c/DefaultSolution.h
23-
--include-constant ClarabelInsufficientProgress # header: Clarabel.cpp/include/c/DefaultSolution.h
24-
--include-constant ClarabelMaxIterations # header: Clarabel.cpp/include/c/DefaultSolution.h
25-
--include-constant ClarabelMaxTime # header: Clarabel.cpp/include/c/DefaultSolution.h
26-
--include-constant ClarabelNumericalError # header: Clarabel.cpp/include/c/DefaultSolution.h
27-
--include-constant ClarabelPrimalInfeasible # header: Clarabel.cpp/include/c/DefaultSolution.h
28-
--include-constant ClarabelSolved # header: Clarabel.cpp/include/c/DefaultSolution.h
29-
--include-constant ClarabelUnsolved # header: Clarabel.cpp/include/c/DefaultSolution.h
30-
#### Extracted from: Clarabel.cpp/include/c/DefaultSolver.h
31-
--include-typedef ClarabelDefaultSolver_f64 # header: Clarabel.cpp/include/c/DefaultSolver.h
32-
--include-function clarabel_DefaultSolver_f64_free # header: Clarabel.cpp/include/c/DefaultSolver.h
33-
--include-function clarabel_DefaultSolver_f64_get_print_buffer # header: Clarabel.cpp/include/c/DefaultSolver.h
34-
--include-function clarabel_DefaultSolver_f64_info # header: Clarabel.cpp/include/c/DefaultSolver.h
35-
--include-function clarabel_DefaultSolver_f64_new # header: Clarabel.cpp/include/c/DefaultSolver.h
36-
--include-function clarabel_DefaultSolver_f64_print_to_buffer # header: Clarabel.cpp/include/c/DefaultSolver.h
37-
--include-function clarabel_DefaultSolver_f64_print_to_file # header: Clarabel.cpp/include/c/DefaultSolver.h
38-
--include-function clarabel_DefaultSolver_f64_print_to_stdout # header: Clarabel.cpp/include/c/DefaultSolver.h
39-
--include-function clarabel_DefaultSolver_f64_solution # header: Clarabel.cpp/include/c/DefaultSolver.h
40-
--include-function clarabel_DefaultSolver_f64_solve # header: Clarabel.cpp/include/c/DefaultSolver.h
41-
--include-function clarabel_DefaultSolver_f64_update_A # header: Clarabel.cpp/include/c/DefaultSolver.h
42-
--include-function clarabel_DefaultSolver_f64_update_A_csc # header: Clarabel.cpp/include/c/DefaultSolver.h
43-
--include-function clarabel_DefaultSolver_f64_update_A_partial # header: Clarabel.cpp/include/c/DefaultSolver.h
44-
--include-function clarabel_DefaultSolver_f64_update_P # header: Clarabel.cpp/include/c/DefaultSolver.h
45-
--include-function clarabel_DefaultSolver_f64_update_P_csc # header: Clarabel.cpp/include/c/DefaultSolver.h
46-
--include-function clarabel_DefaultSolver_f64_update_P_partial # header: Clarabel.cpp/include/c/DefaultSolver.h
47-
--include-function clarabel_DefaultSolver_f64_update_b # header: Clarabel.cpp/include/c/DefaultSolver.h
48-
--include-function clarabel_DefaultSolver_f64_update_b_partial # header: Clarabel.cpp/include/c/DefaultSolver.h
49-
--include-function clarabel_DefaultSolver_f64_update_q # header: Clarabel.cpp/include/c/DefaultSolver.h
50-
--include-function clarabel_DefaultSolver_f64_update_q_partial # header: Clarabel.cpp/include/c/DefaultSolver.h
51-
--include-function clarabel_free_print_buffer # header: Clarabel.cpp/include/c/DefaultSolver.h
52-
#### Extracted from: Clarabel.cpp/include/c/SupportedConeT.h
53-
--include-struct ClarabelSupportedConeT_f64 # header: Clarabel.cpp/include/c/SupportedConeT.h
54-
--include-constant ClarabelExponentialConeT_Tag # header: Clarabel.cpp/include/c/SupportedConeT.h
55-
--include-constant ClarabelGenPowerConeT_Tag # header: Clarabel.cpp/include/c/SupportedConeT.h
56-
--include-constant ClarabelNonnegativeConeT_Tag # header: Clarabel.cpp/include/c/SupportedConeT.h
57-
--include-constant ClarabelPowerConeT_Tag # header: Clarabel.cpp/include/c/SupportedConeT.h
58-
--include-constant ClarabelSecondOrderConeT_Tag # header: Clarabel.cpp/include/c/SupportedConeT.h
59-
--include-constant ClarabelZeroConeT_Tag # header: Clarabel.cpp/include/c/SupportedConeT.h
1+
#### Extracted from: Clarabel.cpp\include\c\ClarabelTypes.h
2+
--include-typedef ClarabelFloat # header: Clarabel.cpp\include\c\ClarabelTypes.h
3+
#### Extracted from: Clarabel.cpp\include\c\CscMatrix.h
4+
--include-function clarabel_CscMatrix_f64_init # header: Clarabel.cpp\include\c\CscMatrix.h
5+
--include-struct ClarabelCscMatrix_f64 # header: Clarabel.cpp\include\c\CscMatrix.h
6+
#### Extracted from: Clarabel.cpp\include\c\DefaultInfo.h
7+
--include-struct ClarabelDefaultInfo_f64 # header: Clarabel.cpp\include\c\DefaultInfo.h
8+
--include-struct ClarabelLinearSolverInfo # header: Clarabel.cpp\include\c\DefaultInfo.h
9+
#### Extracted from: Clarabel.cpp\include\c\DefaultSettings.h
10+
--include-function clarabel_DefaultSettings_f64_default # header: Clarabel.cpp\include\c\DefaultSettings.h
11+
--include-struct ClarabelDefaultSettings_f64 # header: Clarabel.cpp\include\c\DefaultSettings.h
12+
--include-constant AUTO # header: Clarabel.cpp\include\c\DefaultSettings.h
13+
--include-constant FAER # header: Clarabel.cpp\include\c\DefaultSettings.h
14+
--include-constant PARDISO_MKL # header: Clarabel.cpp\include\c\DefaultSettings.h
15+
--include-constant QDLDL # header: Clarabel.cpp\include\c\DefaultSettings.h
16+
#### Extracted from: Clarabel.cpp\include\c\DefaultSolution.h
17+
--include-struct ClarabelDefaultSolution_f64 # header: Clarabel.cpp\include\c\DefaultSolution.h
18+
--include-constant ClarabelAlmostDualInfeasible # header: Clarabel.cpp\include\c\DefaultSolution.h
19+
--include-constant ClarabelAlmostPrimalInfeasible # header: Clarabel.cpp\include\c\DefaultSolution.h
20+
--include-constant ClarabelAlmostSolved # header: Clarabel.cpp\include\c\DefaultSolution.h
21+
--include-constant ClarabelCallbackTerminated # header: Clarabel.cpp\include\c\DefaultSolution.h
22+
--include-constant ClarabelDualInfeasible # header: Clarabel.cpp\include\c\DefaultSolution.h
23+
--include-constant ClarabelInsufficientProgress # header: Clarabel.cpp\include\c\DefaultSolution.h
24+
--include-constant ClarabelMaxIterations # header: Clarabel.cpp\include\c\DefaultSolution.h
25+
--include-constant ClarabelMaxTime # header: Clarabel.cpp\include\c\DefaultSolution.h
26+
--include-constant ClarabelNumericalError # header: Clarabel.cpp\include\c\DefaultSolution.h
27+
--include-constant ClarabelPrimalInfeasible # header: Clarabel.cpp\include\c\DefaultSolution.h
28+
--include-constant ClarabelSolved # header: Clarabel.cpp\include\c\DefaultSolution.h
29+
--include-constant ClarabelUnsolved # header: Clarabel.cpp\include\c\DefaultSolution.h
30+
#### Extracted from: Clarabel.cpp\include\c\DefaultSolver.h
31+
--include-function clarabel_DefaultSolver_f64_free # header: Clarabel.cpp\include\c\DefaultSolver.h
32+
--include-function clarabel_DefaultSolver_f64_get_print_buffer # header: Clarabel.cpp\include\c\DefaultSolver.h
33+
--include-function clarabel_DefaultSolver_f64_info # header: Clarabel.cpp\include\c\DefaultSolver.h
34+
--include-function clarabel_DefaultSolver_f64_new # header: Clarabel.cpp\include\c\DefaultSolver.h
35+
--include-function clarabel_DefaultSolver_f64_print_to_buffer # header: Clarabel.cpp\include\c\DefaultSolver.h
36+
--include-function clarabel_DefaultSolver_f64_print_to_file # header: Clarabel.cpp\include\c\DefaultSolver.h
37+
--include-function clarabel_DefaultSolver_f64_print_to_stdout # header: Clarabel.cpp\include\c\DefaultSolver.h
38+
--include-function clarabel_DefaultSolver_f64_solution # header: Clarabel.cpp\include\c\DefaultSolver.h
39+
--include-function clarabel_DefaultSolver_f64_solve # header: Clarabel.cpp\include\c\DefaultSolver.h
40+
--include-function clarabel_DefaultSolver_f64_update_A # header: Clarabel.cpp\include\c\DefaultSolver.h
41+
--include-function clarabel_DefaultSolver_f64_update_A_csc # header: Clarabel.cpp\include\c\DefaultSolver.h
42+
--include-function clarabel_DefaultSolver_f64_update_A_partial # header: Clarabel.cpp\include\c\DefaultSolver.h
43+
--include-function clarabel_DefaultSolver_f64_update_P # header: Clarabel.cpp\include\c\DefaultSolver.h
44+
--include-function clarabel_DefaultSolver_f64_update_P_csc # header: Clarabel.cpp\include\c\DefaultSolver.h
45+
--include-function clarabel_DefaultSolver_f64_update_P_partial # header: Clarabel.cpp\include\c\DefaultSolver.h
46+
--include-function clarabel_DefaultSolver_f64_update_b # header: Clarabel.cpp\include\c\DefaultSolver.h
47+
--include-function clarabel_DefaultSolver_f64_update_b_partial # header: Clarabel.cpp\include\c\DefaultSolver.h
48+
--include-function clarabel_DefaultSolver_f64_update_q # header: Clarabel.cpp\include\c\DefaultSolver.h
49+
--include-function clarabel_DefaultSolver_f64_update_q_partial # header: Clarabel.cpp\include\c\DefaultSolver.h
50+
--include-function clarabel_free_print_buffer # header: Clarabel.cpp\include\c\DefaultSolver.h
51+
--include-typedef ClarabelDefaultSolver_f64 # header: Clarabel.cpp\include\c\DefaultSolver.h
52+
#### Extracted from: Clarabel.cpp\include\c\SupportedConeT.h
53+
--include-struct ClarabelSupportedConeT_f64 # header: Clarabel.cpp\include\c\SupportedConeT.h
54+
--include-constant ClarabelExponentialConeT_Tag # header: Clarabel.cpp\include\c\SupportedConeT.h
55+
--include-constant ClarabelGenPowerConeT_Tag # header: Clarabel.cpp\include\c\SupportedConeT.h
56+
--include-constant ClarabelNonnegativeConeT_Tag # header: Clarabel.cpp\include\c\SupportedConeT.h
57+
--include-constant ClarabelPowerConeT_Tag # header: Clarabel.cpp\include\c\SupportedConeT.h
58+
--include-constant ClarabelSecondOrderConeT_Tag # header: Clarabel.cpp\include\c\SupportedConeT.h
59+
--include-constant ClarabelZeroConeT_Tag # header: Clarabel.cpp\include\c\SupportedConeT.h

src/main/java/com/ustermetrics/clarabel4j/bindings/ClarabelDefaultSettings_f64.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1860,7 +1860,7 @@ public static void pardiso_iparm(MemorySegment struct, MemorySegment fieldValue)
18601860
* }
18611861
*/
18621862
public static int pardiso_iparm(MemorySegment struct, long index0) {
1863-
return (int)pardiso_iparm$ELEM_HANDLE.get(struct, 0L, index0);
1863+
return (int)pardiso_iparm$ELEM_HANDLE.get(struct, pardiso_iparm$OFFSET, index0);
18641864
}
18651865

18661866
/**
@@ -1870,7 +1870,7 @@ public static int pardiso_iparm(MemorySegment struct, long index0) {
18701870
* }
18711871
*/
18721872
public static void pardiso_iparm(MemorySegment struct, long index0, int fieldValue) {
1873-
pardiso_iparm$ELEM_HANDLE.set(struct, 0L, index0, fieldValue);
1873+
pardiso_iparm$ELEM_HANDLE.set(struct, pardiso_iparm$OFFSET, index0, fieldValue);
18741874
}
18751875

18761876
private static final OfBoolean pardiso_verbose$LAYOUT = (OfBoolean)$LAYOUT.select(groupElement("pardiso_verbose"));

0 commit comments

Comments
 (0)