Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
alta
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alta
alta
Commits
370355cc
Commit
370355cc
authored
Jan 25, 2013
by
Laurent Belcour
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing the dynamic loading thing
parent
a5ac60aa
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
88 additions
and
30 deletions
+88
-30
sources/core/args.h
sources/core/args.h
+3
-4
sources/plugins/rational_1d/rational_1d_fitter.cpp
sources/plugins/rational_1d/rational_1d_fitter.cpp
+5
-0
sources/plugins/rational_1d/rational_1d_fitter.h
sources/plugins/rational_1d/rational_1d_fitter.h
+3
-2
sources/plugins/rational_1d/rational_1d_fitter_eigen.h
sources/plugins/rational_1d/rational_1d_fitter_eigen.h
+1
-1
sources/plugins/rational_data/rational_data.pro
sources/plugins/rational_data/rational_data.pro
+5
-3
sources/plugins/rational_fitter_cgal/rational_1d_fitter_cgal.cpp
.../plugins/rational_fitter_cgal/rational_1d_fitter_cgal.cpp
+11
-4
sources/plugins/rational_fitter_cgal/rational_1d_fitter_cgal.h
...es/plugins/rational_fitter_cgal/rational_1d_fitter_cgal.h
+4
-1
sources/plugins/rational_fitter_cgal/rational_fitter_cgal.pro
...ces/plugins/rational_fitter_cgal/rational_fitter_cgal.pro
+8
-4
sources/plugins/rational_function/rational_function.pro
sources/plugins/rational_function/rational_function.pro
+6
-3
sources/tests/plugin_loader/main.cpp
sources/tests/plugin_loader/main.cpp
+40
-7
sources/tests/plugin_loader/plugin_loader.pro
sources/tests/plugin_loader/plugin_loader.pro
+2
-1
No files found.
sources/core/args.h
View file @
370355cc
...
@@ -62,11 +62,10 @@ class arguments
...
@@ -62,11 +62,10 @@ class arguments
}
;
}
;
float
get_float
(
const
std
::
string
&
key
,
float
default_value
=
0.0
f
)
const
float
get_float
(
const
std
::
string
&
key
,
float
default_value
=
0.0
f
)
const
{
{
std
::
string
value
=
_map
.
at
(
key
)
;
if
(
_map
.
count
(
key
)
>
0
)
if
(
value
.
empty
())
return
atof
(
_map
.
at
(
key
).
c_str
())
;
return
default_value
;
else
else
return
atof
(
value
.
c_str
())
;
return
default_value
;
}
;
}
;
int
get_int
(
const
std
::
string
&
key
,
int
default_value
=
0
)
const
int
get_int
(
const
std
::
string
&
key
,
int
default_value
=
0
)
const
{
{
...
...
sources/plugins/rational_1d/rational_1d_fitter.cpp
View file @
370355cc
...
@@ -170,6 +170,11 @@ bool rational_1d_data::get(int i, double& x, double& yl, double& yu) const
...
@@ -170,6 +170,11 @@ bool rational_1d_data::get(int i, double& x, double& yl, double& yu) const
return
true
;
return
true
;
}
}
const
std
::
vector
<
double
>&
rational_1d_data
::
get
(
int
i
)
const
{
return
_data
[
i
]
;
}
int
rational_1d_data
::
input_dimension
()
const
int
rational_1d_data
::
input_dimension
()
const
{
{
...
...
sources/plugins/rational_1d/rational_1d_fitter.h
View file @
370355cc
...
@@ -53,6 +53,7 @@ class rational_1d_data : public data
...
@@ -53,6 +53,7 @@ class rational_1d_data : public data
// Acces to data
// Acces to data
virtual
bool
get
(
int
i
,
double
&
x
,
double
&
yl
,
double
&
yu
)
const
;
virtual
bool
get
(
int
i
,
double
&
x
,
double
&
yl
,
double
&
yu
)
const
;
virtual
const
std
::
vector
<
double
>&
get
(
int
i
)
const
;
virtual
const
std
::
vector
<
double
>&
operator
[](
int
i
)
const
;
virtual
const
std
::
vector
<
double
>&
operator
[](
int
i
)
const
;
// Get data size
// Get data size
...
@@ -84,11 +85,11 @@ class rational_1d_fitter : public fitter
...
@@ -84,11 +85,11 @@ class rational_1d_fitter : public fitter
public:
// methods
public:
// methods
// Fitting a data object
// Fitting a data object
virtual
bool
fit_data
(
const
rational_1d_data
*
data
,
rational_1d
*&
fit
)
;
virtual
bool
fit_data
(
const
data
*
d
,
function
*&
f
)
;
// Fitting a data object using np elements in the numerator and nq
// Fitting a data object using np elements in the numerator and nq
// elements in the denominator
// elements in the denominator
virtual
bool
fit_data
(
const
rational_1d_data
*
data
,
int
np
,
int
nq
,
rational_1d
*&
fit
)
=
0
;
virtual
bool
fit_data
(
const
data
*
d
,
int
np
,
int
nq
,
function
*&
f
)
=
0
;
virtual
void
set_parameters
(
const
arguments
&
args
)
;
virtual
void
set_parameters
(
const
arguments
&
args
)
;
...
...
sources/plugins/rational_1d/rational_1d_fitter_eigen.h
View file @
370355cc
...
@@ -9,7 +9,7 @@ class rational_1d_fitter_eigen : public rational_1d_fitter
...
@@ -9,7 +9,7 @@ class rational_1d_fitter_eigen : public rational_1d_fitter
// Fitting a data object using np elements
// Fitting a data object using np elements
// in the numerator and nq elements in the
// in the numerator and nq elements in the
// denominator
// denominator
virtual
bool
fit_data
(
const
rational_1d_data
*
data
,
int
np
,
int
nq
,
rational_1d
*&
fit
)
;
virtual
bool
fit_data
(
const
data
*
d
,
int
np
,
int
nq
,
function
*&
f
)
;
private:
private:
}
;
}
;
sources/plugins/rational_data/rational_data.pro
View file @
370355cc
TEMPLATE
=
lib
TEMPLATE
=
lib
CONFIG
+=
plugin
CONFIG
*=
qt
\
plugin
DESTDIR
=
..
/
build
INCLUDEPATH
+=
..
/..
INCLUDEPATH
+=
..
/..
HEADERS
=
rational_data
.
h
HEADERS
=
rational_data
.
h
...
@@ -7,5 +10,4 @@ SOURCES = rational_data.cpp
...
@@ -7,5 +10,4 @@ SOURCES = rational_data.cpp
LIBS
+=
-
lboost_regex
LIBS
+=
-
lboost_regex
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
-
fPIC
sources/plugins/rational_fitter_cgal/rational_1d_fitter_cgal.cpp
View file @
370355cc
...
@@ -22,7 +22,14 @@ typedef CGAL::Quadratic_program<ET> Program ;
...
@@ -22,7 +22,14 @@ typedef CGAL::Quadratic_program<ET> Program ;
typedef
CGAL
::
Quadratic_program_solution
<
ET
>
Solution
;
typedef
CGAL
::
Quadratic_program_solution
<
ET
>
Solution
;
typedef
CGAL
::
Quadratic_program_options
Options
;
typedef
CGAL
::
Quadratic_program_options
Options
;
bool
rational_1d_fitter_cgal
::
fit_data
(
const
data
*
d
,
function
*&
fit
)
rational_fitter_cgal
::
rational_fitter_cgal
()
:
QObject
()
{
}
rational_fitter_cgal
::~
rational_fitter_cgal
()
{
}
bool
rational_fitter_cgal
::
fit_data
(
const
data
*
d
,
function
*&
fit
)
{
{
std
::
cout
<<
"<<INFO>> np in ["
<<
_min_np
<<
", "
<<
_max_np
<<
"] & nq in ["
<<
_min_nq
<<
", "
<<
_max_nq
<<
"]"
<<
std
::
endl
;
std
::
cout
<<
"<<INFO>> np in ["
<<
_min_np
<<
", "
<<
_max_np
<<
"] & nq in ["
<<
_min_nq
<<
", "
<<
_max_nq
<<
"]"
<<
std
::
endl
;
int
temp_np
=
_min_np
,
temp_nq
=
_min_nq
;
int
temp_np
=
_min_np
,
temp_nq
=
_min_nq
;
...
@@ -48,7 +55,7 @@ bool rational_1d_fitter_cgal::fit_data(const data* d, function*& fit)
...
@@ -48,7 +55,7 @@ bool rational_1d_fitter_cgal::fit_data(const data* d, function*& fit)
return
false
;
return
false
;
}
}
void
rational_
1d_
fitter_cgal
::
set_parameters
(
const
arguments
&
args
)
void
rational_fitter_cgal
::
set_parameters
(
const
arguments
&
args
)
{
{
_max_np
=
args
.
get_float
(
"np"
,
10
)
;
_max_np
=
args
.
get_float
(
"np"
,
10
)
;
_max_nq
=
args
.
get_float
(
"nq"
,
10
)
;
_max_nq
=
args
.
get_float
(
"nq"
,
10
)
;
...
@@ -57,7 +64,7 @@ void rational_1d_fitter_cgal::set_parameters(const arguments& args)
...
@@ -57,7 +64,7 @@ void rational_1d_fitter_cgal::set_parameters(const arguments& args)
}
}
bool
rational_
1d_
fitter_cgal
::
fit_data
(
const
data
*
d
,
int
np
,
int
nq
,
function
*&
rf
)
bool
rational_fitter_cgal
::
fit_data
(
const
data
*
d
,
int
np
,
int
nq
,
function
*&
rf
)
{
{
// by default, we have a nonnegative QP with Ax - b >= 0
// by default, we have a nonnegative QP with Ax - b >= 0
Program
qp
(
CGAL
::
LARGER
,
false
,
0
,
false
,
0
)
;
Program
qp
(
CGAL
::
LARGER
,
false
,
0
,
false
,
0
)
;
...
@@ -254,4 +261,4 @@ bool rational_1d_fitter_cgal::fit_data(const data* d, int np, int nq, function*&
...
@@ -254,4 +261,4 @@ bool rational_1d_fitter_cgal::fit_data(const data* d, int np, int nq, function*&
}
}
}
}
Q_EXPORT_PLUGIN2
(
rational_fitter_cgal
,
rational_1d
_fitter_cgal
)
Q_EXPORT_PLUGIN2
(
rational_fitter_cgal
,
rational
_fitter_cgal
)
sources/plugins/rational_fitter_cgal/rational_1d_fitter_cgal.h
View file @
370355cc
...
@@ -13,12 +13,15 @@
...
@@ -13,12 +13,15 @@
#include <core/fitter.h>
#include <core/fitter.h>
#include <core/args.h>
#include <core/args.h>
class
rational_
1d_
fitter_cgal
:
public
QObject
,
public
fitter
class
rational_fitter_cgal
:
public
QObject
,
public
fitter
{
{
Q_OBJECT
Q_OBJECT
Q_INTERFACES
(
fitter
)
Q_INTERFACES
(
fitter
)
public:
// methods
public:
// methods
rational_fitter_cgal
()
;
virtual
~
rational_fitter_cgal
()
;
// Fitting a data object
// Fitting a data object
virtual
bool
fit_data
(
const
data
*
d
,
function
*&
fit
)
;
virtual
bool
fit_data
(
const
data
*
d
,
function
*&
fit
)
;
...
...
sources/plugins/rational_fitter_cgal/rational_fitter_cgal.pro
View file @
370355cc
TEMPLATE
=
lib
TEMPLATE
=
lib
CONFIG
+=
plugin
CONFIG
*=
qt
\
plugin
\
debug
DESTDIR
=
..
/
build
INCLUDEPATH
+=
..
/
rational_function
..
/
rational_data
..
/..
/
home
/
belcour
/
Sources
/
Eigen
/
include
/
eigen3
INCLUDEPATH
+=
..
/
rational_function
..
/
rational_data
..
/..
/
home
/
belcour
/
Sources
/
Eigen
/
include
/
eigen3
HEADERS
=
rational_1d_fitter_cgal
.
h
HEADERS
=
rational_1d_fitter_cgal
.
h
SOURCES
=
rational_1d_fitter_cgal
.
cpp
SOURCES
=
rational_1d_fitter_cgal
.
cpp
LIBS
+=
-
lCGAL
-
lboost_regex
\
LIBS
+=
-
lCGAL
-
lboost_regex
\
-
L
..
/
rational_function
-
L
..
/
rational_data
\
-
L
..
/
build
\
-
lrational_function
-
lrational_data
-
lrational_function
-
lrational_data
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
-
fPIC
sources/plugins/rational_function/rational_function.pro
View file @
370355cc
TEMPLATE
=
lib
TEMPLATE
=
lib
CONFIG
+=
plugin
CONFIG
*=
qt
\
plugin
DESTDIR
=
..
/
build
INCLUDEPATH
+=
..
/..
INCLUDEPATH
+=
..
/..
HEADERS
=
rational_function
.
h
HEADERS
=
rational_function
.
h
SOURCES
=
rational_function
.
cpp
SOURCES
=
rational_function
.
cpp
LIBS
+=
-
lboost_regex
LIBS
+=
-
lboost_regex
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
-
fPIC
-
rdynamic
sources/tests/plugin_loader/main.cpp
View file @
370355cc
...
@@ -29,22 +29,30 @@ int main(int argc, char** argv)
...
@@ -29,22 +29,30 @@ int main(int argc, char** argv)
QPluginLoader
loader
(
pluginsDir
.
absoluteFilePath
(
fileName
));
QPluginLoader
loader
(
pluginsDir
.
absoluteFilePath
(
fileName
));
QObject
*
plugin
=
loader
.
instance
();
QObject
*
plugin
=
loader
.
instance
();
if
(
plugin
!=
nullptr
)
{
if
(
plugin
!=
nullptr
)
{
std
::
cout
<<
"Loading plugin "
<<
fileName
.
toStdString
()
<<
std
::
endl
;
#ifdef DEBUG
std
::
cout
<<
"<<DEBUG>> loading plugin "
<<
fileName
.
toStdString
()
<<
std
::
endl
;
#endif
if
(
dynamic_cast
<
function
*>
(
plugin
)
!=
nullptr
)
if
(
dynamic_cast
<
function
*>
(
plugin
)
!=
nullptr
)
{
{
std
::
cout
<<
" -> it is a function"
<<
std
::
endl
;
#ifdef DEBUG
std
::
cout
<<
"<<DEBUG>> -> it is a function"
<<
std
::
endl
;
#endif
functions
.
push_back
(
dynamic_cast
<
function
*>
(
plugin
))
;
functions
.
push_back
(
dynamic_cast
<
function
*>
(
plugin
))
;
}
}
else
if
(
dynamic_cast
<
data
*>
(
plugin
)
!=
nullptr
)
else
if
(
dynamic_cast
<
data
*>
(
plugin
)
!=
nullptr
)
{
{
std
::
cout
<<
" -> it is a data loader"
<<
std
::
endl
;
#ifdef DEBUG
std
::
cout
<<
"<<DEBUG>> -> it is a data loader"
<<
std
::
endl
;
#endif
datas
.
push_back
(
dynamic_cast
<
data
*>
(
plugin
))
;
datas
.
push_back
(
dynamic_cast
<
data
*>
(
plugin
))
;
}
}
else
if
(
dynamic_cast
<
fitter
*>
(
plugin
)
!=
nullptr
)
else
if
(
dynamic_cast
<
fitter
*>
(
plugin
)
!=
nullptr
)
{
{
std
::
cout
<<
" -> it is a fitter"
<<
std
::
endl
;
#ifdef DEBUG
std
::
cout
<<
"<<DEBUG>> -> it is a fitter"
<<
std
::
endl
;
#endif
fitters
.
push_back
(
dynamic_cast
<
fitter
*>
(
plugin
))
;
fitters
.
push_back
(
dynamic_cast
<
fitter
*>
(
plugin
))
;
}
}
...
@@ -52,6 +60,14 @@ int main(int argc, char** argv)
...
@@ -52,6 +60,14 @@ int main(int argc, char** argv)
}
}
arguments
args
(
argc
,
argv
)
;
arguments
args
(
argc
,
argv
)
;
if
(
!
args
.
is_defined
(
"input"
))
{
std
::
cerr
<<
"<<ERROR>> the input filename is not defined"
<<
std
::
endl
;
return
1
;
}
if
(
!
args
.
is_defined
(
"output"
))
{
std
::
cerr
<<
"<<ERROR>> the output filename is not defined"
<<
std
::
endl
;
return
1
;
}
if
(
fitters
.
size
()
>
0
&&
datas
.
size
()
>
0
&&
functions
.
size
()
>
0
)
if
(
fitters
.
size
()
>
0
&&
datas
.
size
()
>
0
&&
functions
.
size
()
>
0
)
{
{
...
@@ -59,12 +75,29 @@ int main(int argc, char** argv)
...
@@ -59,12 +75,29 @@ int main(int argc, char** argv)
function
*
f
=
functions
[
0
]
;
function
*
f
=
functions
[
0
]
;
data
*
d
=
datas
[
0
]
;
data
*
d
=
datas
[
0
]
;
if
(
args
.
is_defined
(
"min"
)
&&
args
.
is_defined
(
"max"
))
{
d
->
load
(
args
[
"input"
],
args
.
get_float
(
"min"
,
0.0
f
),
args
.
get_float
(
"max"
,
1.0
f
));
}
else
if
(
args
.
is_defined
(
"min"
)
&&
!
args
.
is_defined
(
"max"
))
{
d
->
load
(
args
[
"input"
],
args
.
get_float
(
"min"
,
0.0
f
),
std
::
numeric_limits
<
double
>::
max
());
}
else
if
(
args
.
is_defined
(
"min"
)
&&
!
args
.
is_defined
(
"max"
))
{
d
->
load
(
args
[
"input"
],
-
std
::
numeric_limits
<
double
>::
max
(),
args
.
get_float
(
"min"
,
0.0
f
));
}
else
{
d
->
load
(
args
[
"input"
]);
}
bool
is_fitted
=
fitters
[
0
]
->
fit_data
(
d
,
f
)
;
bool
is_fitted
=
fitters
[
0
]
->
fit_data
(
d
,
f
)
;
// Display the result
// Display the result
if
(
is_fitted
)
if
(
is_fitted
)
{
{
std
::
cout
<<
f
<<
std
::
endl
;
// std::cout << *
f << std::endl ;
//*
//*
std
::
ofstream
file
(
args
[
"output"
],
std
::
ios_base
::
trunc
);
std
::
ofstream
file
(
args
[
"output"
],
std
::
ios_base
::
trunc
);
...
...
sources/tests/plugin_loader/plugin_loader.pro
View file @
370355cc
...
@@ -5,6 +5,7 @@ INCLUDEPATH += ../../ ../../libs/rational_1d /home/belcour/Sources/Eigen/include
...
@@ -5,6 +5,7 @@ INCLUDEPATH += ../../ ../../libs/rational_1d /home/belcour/Sources/Eigen/include
SOURCES
+=
main
.
cpp
SOURCES
+=
main
.
cpp
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
QMAKE_CXXFLAGS
+=
-
std
=
c
++
11
-
frounding
-
math
-
fPIC
QMAKE_LFLAGS
+=
-
Wl
,
-
rpath
=
"."
LIBS
+=
-
lCGAL
-
lboost_regex
LIBS
+=
-
lCGAL
-
lboost_regex
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment