Fuse.Problem
include
problemShared.hpp
Go to the documentation of this file.
1
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2
/* */
3
/* Copyright (c) 2017 - Matteo Ragni, University of Trento */
4
/* */
5
/* Permission is hereby granted, free of charge, to any person */
6
/* obtaining a copy of this software and associated documentation */
7
/* files (the "Software"), to deal in the Software without */
8
/* restriction, including without limitation the rights to use, */
9
/* copy, modify, merge, publish, distribute, sublicense, and/or sell */
10
/* copies of the Software, and to permit persons to whom the */
11
/* Software is furnished to do so, subject to the following */
12
/* conditions: */
13
/* */
14
/* The above copyright notice and this permission notice shall be */
15
/* included in all copies or substantial portions of the Software. */
16
/* */
17
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
18
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES */
19
/* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND */
20
/* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT */
21
/* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, */
22
/* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING */
23
/* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR */
24
/* OTHER DEALINGS IN THE SOFTWARE. */
25
/* */
26
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27
38
#ifndef _FUSE_PROBLEM_DEFINE_HPP_
39
#define _FUSE_PROBLEM_DEFINE_HPP_
40
41
#include <vector>
42
#include <cmath>
43
#include <cstddef>
44
45
#ifndef PROBLEM_PRECISION
46
51
#define PROBLEM_PRECISION double
52
#endif
53
57
typedef
void(*
Function
)(
void
*,
void
*,
void
*);
63
#define X() (*xPtr)
64
#define Y() (*yPtr)
65
#define P() (*pPtr)
66
72
#define FUNCTION_DEFINE(name, content) \
73
extern "C" void name(void* _y, void *_x, void *_p) { \
74
std::vector<PROBLEM_PRECISION> *yPtr = reinterpret_cast< std::vector<PROBLEM_PRECISION>* >(_y); \
75
std::vector<PROBLEM_PRECISION> *pPtr = reinterpret_cast< std::vector<PROBLEM_PRECISION>* >(_p); \
76
std::vector<PROBLEM_PRECISION> *xPtr = reinterpret_cast< std::vector<PROBLEM_PRECISION>* >(_x); \
77
content; \
78
}
79
87
#define FUNCTION_EXPORT(size_f, size_x, size_p, ...) \
88
extern "C" { \
89
size_t FunctionSizeF() { return size_f; }; \
90
size_t FunctionSizeX() { return size_x; }; \
91
size_t FunctionSizeP() { return size_p; }; \
92
Function FunctionArray[] = { __VA_ARGS__ }; \
93
}
94
95
#endif
/* _FUSE_PROBLEM_DEFINE_HPP_ */
Function
void(* Function)(void *, void *, void *)
Definition:
problemShared.hpp:57
Generated by
1.8.13