Skip to content

Commit c9944dd

Browse files
authored
Merge pull request #200 from epitavy/cpp-include-support
Cpp include support
2 parents 9e64402 + 5bf96b5 commit c9944dd

6 files changed

Lines changed: 35 additions & 9 deletions

File tree

configure.ac

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ AC_CONFIG_MACRO_DIR([m4])
1010

1111
AM_MAINTAINER_MODE
1212

13+
# Enable non standard exensions by defining macros such as _GNU_SOURCE
14+
AC_USE_SYSTEM_EXTENSIONS
15+
16+
1317
AM_PROG_AR
1418
LT_INIT
1519

src/msolve/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static inline void display_help(char *str){
117117
fprintf(stdout, " first (n - NF) elements generate already a degree reverse\n");
118118
fprintf(stdout, " lexicographical Gröbner basis.\n");
119119
fprintf(stdout, "-p PRE Precision of the real root isolation.\n");
120-
fprintf(stdout, " Default is 32.\n");
120+
fprintf(stdout, " Default is 128.\n");
121121
fprintf(stdout, "-P PAR Get also rational parametrization of solution set.\n");
122122
fprintf(stdout, " Default is 0. For a detailed description of the output\n");
123123
fprintf(stdout, " format please see the general output data format section\n");

src/msolve/msolve-data.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#ifndef MSOLVE_DATA_H
2222
#define MSOLVE_DATA_H
2323

24-
#define _GNU_SOURCE
2524
#include "../neogb/data.h"
2625
#include<flint/fmpz.h>
2726
#include<flint/fmpq.h>
@@ -36,6 +35,10 @@
3635
(a) % (b)
3736

3837

38+
#ifdef __cplusplus
39+
extern "C" {
40+
#endif
41+
3942
typedef struct
4043
{
4144
mpz_t numer;
@@ -360,4 +363,8 @@ typedef struct{
360363
files_gb *files;
361364
} msolveflags_struct;
362365
typedef msolveflags_struct msflags_t[1];
366+
#ifdef __cplusplus
367+
}
368+
#endif
369+
363370
#endif

src/msolve/msolve.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static inline void mpz_upoly_out_str(FILE *file, mpz_upoly_t pol) {
9595
fprintf(file, "]");
9696
}
9797

98-
static inline void mpz_param_init(mpz_param_t param) {
98+
void mpz_param_init(mpz_param_t param) {
9999
param->nvars = 0;
100100
param->nsols = 0;
101101
mpz_upoly_init(param->elim, 0);
@@ -104,7 +104,7 @@ static inline void mpz_param_init(mpz_param_t param) {
104104
param->cfs = NULL;
105105
}
106106

107-
static inline void mpz_param_clear(mpz_param_t param) {
107+
void mpz_param_clear(mpz_param_t param) {
108108
mpz_upoly_clear(param->elim);
109109
mpz_upoly_clear(param->denom);
110110
if (param->coords != NULL) {
@@ -292,7 +292,7 @@ static inline void display_fglm_mpq_matrix(FILE *file, mpq_matfglm_t mat) {
292292
fprintf(file, "\n");
293293
}
294294

295-
static inline data_gens_ff_t *allocate_data_gens() {
295+
data_gens_ff_t *allocate_data_gens() {
296296
data_gens_ff_t *gens = (data_gens_ff_t *)(malloc(sizeof(data_gens_ff_t)));
297297
gens->lens = NULL;
298298
gens->exps = NULL;
@@ -304,7 +304,7 @@ static inline data_gens_ff_t *allocate_data_gens() {
304304
return gens;
305305
}
306306

307-
static inline void free_data_gens(data_gens_ff_t *gens) {
307+
void free_data_gens(data_gens_ff_t *gens) {
308308
for (long i = 0; i < gens->nvars; i++) {
309309
free(gens->vnames[i]);
310310
}
@@ -5012,8 +5012,8 @@ void msolve_julia(
50125012
/* gens->vnames = var_names; */
50135013
gens->vnames = (char **)malloc((unsigned long)nr_vars * sizeof(char *));
50145014
for (i = 0; i < nr_vars; ++i) {
5015-
gens->vnames[i] = calloc((unsigned long)strlen(var_names[i]), sizeof(char));
5016-
memcpy(gens->vnames[i], var_names[i], (unsigned long)strlen(var_names[i]) * sizeof(char));
5015+
gens->vnames[i] = calloc(strlen(var_names[i]) + 1, sizeof(char));
5016+
memcpy(gens->vnames[i], var_names[i], (strlen(var_names[i]) + 1) * sizeof(char));
50175017
}
50185018
/* gens->lens = lens; */
50195019
gens->lens = (int32_t *)malloc((unsigned long)nr_gens * sizeof(int32_t));

src/msolve/msolve.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323

2424
#include "msolve-data.h"
2525

26+
#ifdef __cplusplus
27+
extern "C" {
28+
#endif
29+
2630
int msolve_trace_qq(
2731
mpz_param_t *mpz_paramp,
2832
param_t **nmod_param,
@@ -218,4 +222,16 @@ int64_t export_groebner_qq(
218222
const int32_t truncate_lifting,
219223
const int32_t info_level
220224
);
225+
226+
// Utility functions to init and deinit data structures
227+
void real_point_clear(real_point_t pt);
228+
void mpz_param_init(mpz_param_t param);
229+
void mpz_param_clear(mpz_param_t param);
230+
data_gens_ff_t* allocate_data_gens();
231+
void free_data_gens(data_gens_ff_t* gens);
232+
233+
#ifdef __cplusplus
234+
}
235+
#endif
236+
221237
#endif

src/neogb/data.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#ifndef GB_DATA_H
2323
#define GB_DATA_H
2424

25-
#define _GNU_SOURCE
2625
#include <stdint.h>
2726
#include <stdlib.h>
2827
#include <stdio.h>

0 commit comments

Comments
 (0)