lsst.meas.extensions.psfex
g33ac35c1f1+c98174edf1
Toggle main menu visibility
Loading...
Searching...
No Matches
src
prefsImpl.cc
Go to the documentation of this file.
1
// -*- lsst-C++ -*-
2
#include "lsst/meas/extensions/psfex/prefs.hh"
3
#include "
lsst/daf/base.h
"
4
5
namespace
lsst
{
namespace
meas
{
namespace
extensions
{
namespace
psfex
{
6
7
Prefs::Prefs(std::string
const
& filename, lsst::daf::base::PropertySet
const
* values
8
) : _command_line(0) {
9
char
*cfilename =
const_cast<
char
*
>
(filename.
c_str
());
// const_cast as PSFEX isn't careful about const
10
int
const
narg = values->
nameCount
();
11
if
(narg == 0) {
12
readprefs(cfilename, 0x0, 0x0, narg);
13
}
else
{
14
std::vector<char *>
argkey(narg);
15
std::vector<char *>
argval(narg);
16
std::vector<std::string>
const
names = values->
paramNames
();
17
// Next, decalre a vector to store string values. These strings must
18
// live long enough such that pointers to them (returned by c_str) stay
19
// valid until the readprefs function can read their values. Once this
20
// happens, the srings and pointers are no longer needed, and will be
21
// cleaned up when the vector goes out of scope
22
std::vector<std::string>
paramvalues(narg);
23
24
for
(
int
i = 0; i != narg; ++i) {
25
std::string
const
& name = names[i];
26
argkey[i] =
const_cast<
char
*
>
(name.
c_str
());
27
paramvalues[i] = values->
getAsString
(name);
28
argval[i] =
const_cast<
char
*
>
(paramvalues[i].c_str());
29
}
30
31
readprefs(cfilename, &argkey[0], &argval[0], narg);
32
}
33
34
for
(
int
i = 0; i != prefs.ncontext_name; ++i) {
35
_context_names.push_back(prefs.context_name[i]);
36
}
37
for
(
int
i = 0; i != prefs.ncontext_group; ++i) {
38
_context_groups.push_back(prefs.context_group[i]);
39
}
40
for
(
int
i = 0; i != prefs.ngroup_deg; ++i) {
41
_group_degs.push_back(prefs.group_deg[i]);
42
}
43
}
44
45
Prefs::~Prefs()
46
{
47
delete
[] _command_line;
48
}
49
50
void
51
Prefs::setCommandLine(
std::vector<std::string>
const
& argv)
52
{
53
prefs.ncommand_line = argv.
size
();
54
_command_line =
new
char
const
*[prefs.ncommand_line + 1];
55
int
i;
56
for
(i = 0; i != prefs.ncommand_line; ++i) {
57
_command_line[i] = argv[i].c_str();
58
}
59
_command_line[i] = 0;
60
prefs.command_line =
const_cast<
char
**
>
(_command_line);
61
}
62
63
void
64
Prefs::addCatalog(
std::string
const
& filename) {
65
if
(prefs.ncat >= MAXFILE) {
66
throw
LSST_EXCEPT
(
lsst::pex::exceptions::LengthError
,
"Too many input catalogues"
);
67
}
68
_catalogs.push_back(filename);
69
prefs.incat_name[prefs.ncat++] =
const_cast<
char
*
>
((_catalogs.end() - 1)->c_str());
70
}
71
72
}}}}
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
base.h
std::string
std::string::c_str
T c_str(T... args)
lsst::daf::base::PropertySet::getAsString
std::string getAsString(std::string const &name) const
lsst::daf::base::PropertySet::nameCount
size_t nameCount(bool topLevelOnly=true) const
lsst::daf::base::PropertySet::paramNames
std::vector< std::string > paramNames(bool topLevelOnly=true) const
lsst::pex::exceptions::LengthError
lsst::meas::extensions::psfex
Definition
PsfexPsf.h:32
lsst::meas::extensions
Definition
PsfexPsf.h:32
lsst::meas
lsst
std::vector::size
T size(T... args)
std::vector
Generated on
for lsst.meas.extensions.psfex by
1.17.0