20 static const std::string set_t =
"set";
21 static const std::string add_t =
"add";
22 static const std::string sub_t =
"sub";
23 static const std::string rot_t =
"rot";
37 switch (data.size()) {
40 return apply(hydrophone, action, data[0]);
43 return apply(hydrophone, action,
JVector3D(data[0], data[1], data[2]));
58 friend inline std::istream&
operator>>(std::istream&
in, JModifier& modifier)
62 if (in >> modifier.id >> modifier.action) {
64 modifier.data.clear();
66 for (
double x; in >>
x; ) {
67 modifier.data.push_back(x);
70 in.clear(ios_base::eofbit);
84 friend inline std::ostream&
operator<<(std::ostream& out,
const JModifier& modifier)
88 out << modifier.action;
112 static bool apply(
JHydrophone& hydrophone,
const std::string& action,
const double value)
135 else if (action == add_t)
137 else if (action == sub_t)
171 int main(
int argc,
char **argv)
188 JParser<> zap(
"Auxiliary program to modify hydrophone configuration.");
190 zap[
'f'] =
make_field(inputFile,
"hydrophone input file");
195 zap[
'q'] =
make_field(squash,
"squash meta data");
200 catch(
const exception &error) {
201 FATAL(error.what() << endl);
207 data.load(inputFile.c_str());
209 catch(
const exception&) {}
212 data.comment.clear();
215 data.comment.add(
JMeta(argc, argv));
223 for (container_type::iterator
target = data.begin();
target != data.end(); ++
target) {
225 if (
target->getString() == i->id) {
227 DEBUG(
"Modifier" <<
' '
229 <<
"action" <<
' ' << i->action <<
JEEPZ() << i->data << endl);
232 ERROR(
"No valid action: " << *i << endl);
239 for (container_type::iterator
target = data.begin();
target != data.end(); ) {
240 if (
target->getString() == *i)
Utility class to parse command line options.
int main(int argc, char *argv[])
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
clean for KEY in pcal ccal tripod transmitter hydrophone
Type definition of hydrophone.
Data structure for hydrophone.
JVector3D & sub(const JVector3D &vector)
Subtract vector.
I/O formatting auxiliaries.
Data structure for vector in three dimensions.
Auxiliary wrapper for I/O of container with optional comment (see JComment).
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary data structure for streaming of STL containers.
General purpose messaging.
Auxiliary data structure for sequence of same character.
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input.
Utility class to parse command line options.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
JPosition3D & rotate(const JRotation3D &R)
Rotate.
JVector3D & add(const JVector3D &vector)
Add vector.
void setPosition(const JVector3D &pos)
Set position.
#define DEBUG(A)
Message macros.