26 #ifndef __GyotoProperty_H_ 27 #define __GyotoProperty_H_ 36 namespace Metric {
class Generic; }
37 namespace Astrobj {
class Generic; }
38 namespace Spectrum {
class Generic; }
39 namespace Spectrometer {
class Generic; }
50 #define GYOTO_PROPERTY_ACCESSORS(class, type, member, method) \ 51 void class::method(type v) {member=v;} \ 52 type class::method() const {return member;} 65 #define GYOTO_PROPERTY_ACCESSORS_GEOMETRICAL(class, member, method, metric) \ 66 GYOTO_PROPERTY_ACCESSORS(class, double, member, method) \ 67 void class::method(double v, std::string const &u) { \ 68 member=Units::ToGeometrical(v, u, metric); \ 70 double class::method(std::string const &u) const { \ 71 return Units::FromGeometrical(member, u, metric); \ 78 #define GYOTO_PROPERTY_START(class) \ 79 Property const class::properties[] = { 92 #define GYOTO_PROPERTY_BOOL(class, name, namef, fname) \ 96 (Gyoto::Property::set_bool_t)&class :: fname, \ 97 (Gyoto::Property::get_bool_t)&class :: fname), 100 #define GYOTO_PROPERTY_DOUBLE(class, name, fname) \ 103 (Gyoto::Property::set_double_t)&class::fname, \ 104 (Gyoto::Property::get_double_t)&class::fname), 107 #define GYOTO_PROPERTY_LONG(class, name, fname) \ 110 (Gyoto::Property::set_long_t)&class::fname, \ 111 (Gyoto::Property::get_long_t)&class::fname), 114 #define GYOTO_PROPERTY_UNSIGNED_LONG(class, name, fname) \ 117 (Gyoto::Property::set_unsigned_long_t)&class::fname, \ 118 (Gyoto::Property::get_unsigned_long_t)&class::fname), 120 #if defined(GYOTO_SIZE__T_IS_UNSIGNED_LONG) 121 # define GYOTO_PROPERTY_SIZE_T GYOTO_PROPERTY_UNSIGNED_LONG 123 #define GYOTO_PROPERTY_SIZE_T(class, name, fname) \ 126 (Gyoto::Property::set_size_t_t)&class::fname, \ 127 (Gyoto::Property::get_size_t_t)&class::fname), 131 #define GYOTO_PROPERTY_DOUBLE_UNIT(class, name, fname) \ 134 (Gyoto::Property::set_double_t)&class::fname, \ 135 (Gyoto::Property::get_double_t)&class::fname, \ 136 (Gyoto::Property::set_double_unit_t)&class::fname, \ 137 (Gyoto::Property::get_double_unit_t)&class::fname), 140 #define GYOTO_PROPERTY_FILENAME(class, name, fname) \ 143 (Gyoto::Property::set_string_t)&class::fname, \ 144 (Gyoto::Property::get_string_t)&class::fname, \ 148 #define GYOTO_PROPERTY_STRING(class, name, fname) \ 151 (Gyoto::Property::set_string_t)&class::fname, \ 152 (Gyoto::Property::get_string_t)&class::fname, \ 156 #define GYOTO_PROPERTY_VECTOR_DOUBLE(class, name, fname) \ 159 (Gyoto::Property::set_vector_double_t)&class::fname, \ 160 (Gyoto::Property::get_vector_double_t)&class::fname), 163 #define GYOTO_PROPERTY_VECTOR_DOUBLE_UNIT(class, name, fname) \ 166 (Gyoto::Property::set_vector_double_t)&class::fname, \ 167 (Gyoto::Property::get_vector_double_t)&class::fname, \ 168 (Gyoto::Property::set_vector_double_unit_t)&class::fname, \ 169 (Gyoto::Property::get_vector_double_unit_t)&class::fname), 172 #define GYOTO_PROPERTY_VECTOR_UNSIGNED_LONG(class, name, fname) \ 175 (Gyoto::Property::set_vector_unsigned_long_t)&class::fname, \ 176 (Gyoto::Property::get_vector_unsigned_long_t)&class::fname), 179 #define GYOTO_PROPERTY_METRIC(class, name, fname) \ 182 (Gyoto::Property::set_metric_t)&class::fname, \ 183 (Gyoto::Property::get_metric_t)&class::fname), 186 #define GYOTO_PROPERTY_SCREEN(class, name, fname) \ 189 (Gyoto::Property::set_screen_t)&class::fname, \ 190 (Gyoto::Property::get_screen_t)&class::fname), 193 #define GYOTO_PROPERTY_ASTROBJ(class, name, fname) \ 196 (Gyoto::Property::set_astrobj_t)&class::fname, \ 197 (Gyoto::Property::get_astrobj_t)&class::fname), 200 #define GYOTO_PROPERTY_SPECTRUM(class, name, fname) \ 203 (Gyoto::Property::set_spectrum_t)&class::fname, \ 204 (Gyoto::Property::get_spectrum_t)&class::fname), 207 #define GYOTO_PROPERTY_SPECTROMETER(class, name, fname) \ 210 (Gyoto::Property::set_spectrometer_t)&class::fname, \ 211 (Gyoto::Property::get_spectrometer_t)&class::fname), 214 #define GYOTO_PROPERTY_END(class, next) \ 216 Gyoto::Property const * class::getProperties() const { \ 217 return class::properties; \ 329 #if !defined(GYOTO_SIZE__T_IS_UNSIGNED_LONG) 380 typedef void (
Object::* set_double_t)(
double val);
382 typedef double (
Object::* get_double_t)()
const;
384 typedef void (
Object::* set_double_unit_t)(
double val,
385 std::string
const &unit);
387 typedef double (
Object::* get_double_unit_t)(std::string
const &unit)
const;
389 typedef void (
Object::* set_long_t)(
long val);
391 typedef long (
Object::* get_long_t)()
const;
393 typedef void (
Object::* set_unsigned_long_t)(
unsigned long val);
395 typedef unsigned long (
Object::* get_unsigned_long_t)()
const;
396 #if !defined(GYOTO_SIZE__T_IS_UNSIGNED_LONG) 397 typedef void (
Object::* set_size_t_t)(
size_t val);
402 typedef void (
Object::* set_bool_t)(
bool val);
405 typedef bool (
Object::* get_bool_t)()
const;
407 typedef void (
Object::* set_string_t)(std::string
const&);
409 typedef std::string (
Object::* get_string_t)()
const;
411 typedef void (
Object::* set_fname_t)(std::string
const&);
413 typedef std::string (
Object::* get_fname_t)()
const;
415 typedef void (
Object::* set_vector_double_t)(std::vector<double>
const&);
419 typedef void (
Object::* set_vector_double_unit_t)(std::vector<double>
const&, std::string
const &);
423 typedef void (
Object::* set_vector_unsigned_long_t)(std::vector<unsigned long>
const&);
428 typedef void (
Object::* set_metric_t)
435 typedef void (
Object::* set_screen_t)
442 typedef void (
Object::* set_astrobj_t)
449 typedef void (
Object::* set_spectrum_t)
456 typedef void (
Object::* set_spectrometer_t)
467 set_double_t set_double;
469 set_unsigned_long_t set_unsigned_long;
470 #if !defined(GYOTO_SIZE__T_IS_UNSIGNED_LONG) 471 set_size_t_t set_size_t;
474 set_string_t set_string;
475 set_vector_double_t set_vdouble;
476 set_vector_unsigned_long_t set_vulong;
477 set_metric_t set_metric;
478 set_screen_t set_screen;
479 set_astrobj_t set_astrobj;
480 set_spectrum_t set_spectrum;
481 set_spectrometer_t set_spectrometer;
488 get_double_t get_double;
490 get_unsigned_long_t get_unsigned_long;
491 #if !defined(GYOTO_SIZE__T_IS_UNSIGNED_LONG) 492 get_size_t_t get_size_t;
495 get_string_t get_string;
496 get_vector_double_t get_vdouble;
497 get_vector_unsigned_long_t get_vulong;
498 get_metric_t get_metric;
499 get_screen_t get_screen;
500 get_astrobj_t get_astrobj;
501 get_spectrum_t get_spectrum;
502 get_spectrometer_t get_spectrometer;
509 set_double_unit_t set_double;
510 set_vector_double_unit_t set_vdouble;
514 get_double_unit_t get_double;
515 get_vector_double_unit_t get_vdouble;
540 operator bool()
const ;
551 get_long_t get_long);
555 set_unsigned_long_t set_unsigned_long,
556 get_unsigned_long_t get_unsigned_long);
558 #if !defined(GYOTO_SIZE__T_IS_UNSIGNED_LONG) 561 set_size_t_t set_size_t,
562 get_size_t_t get_size_t);
567 set_double_t set_double,
568 get_double_t get_double);
572 set_double_t set_double,
573 get_double_t get_double,
574 set_double_unit_t set_double_unit,
575 get_double_unit_t get_double_unit);
579 std::string name_false,
581 get_bool_t get_bool);
591 set_string_t set_string,
592 get_string_t get_string,
597 set_vector_double_t set_vdouble,
598 get_vector_double_t get_vdouble);
602 set_vector_double_t set_vdouble,
603 get_vector_double_t get_vdouble,
604 set_vector_double_unit_t set_vdouble_unit,
605 get_vector_double_unit_t get_vdouble_unit);
609 set_vector_unsigned_long_t set_vulong,
610 get_vector_unsigned_long_t get_vulong);
614 set_metric_t set_metric,
615 get_metric_t get_metric);
619 set_screen_t set_screen,
620 get_screen_t get_screen);
624 set_astrobj_t set_astrobj,
625 get_astrobj_t get_astrobj);
629 set_spectrum_t set_spectrum,
630 get_spectrum_t get_spectrum);
634 set_spectrometer_t set_spectrometer,
635 get_spectrometer_t get_spectrometer);
Union holding an accessor to set any type.
Definition: GyotoProperty.h:466
std::vector< unsigned long >(Object::* get_vector_unsigned_long_t)() const
Prototype for an accessor to get a std::vector<unsigned long>
Definition: GyotoProperty.h:425
Type is std::string and holds a file name.
Definition: GyotoProperty.h:346
Union holding an accessor to get any type.
Definition: GyotoProperty.h:487
std::string name_false
Name if false.
Definition: GyotoProperty.h:376
Type is long.
Definition: GyotoProperty.h:326
#define size_t
If not defined in <sys/types.h>.
Definition: GyotoConfig.h:366
Type is Gyoto::SmartPointer<Gyoto::Metric::Generic>
Definition: GyotoProperty.h:352
setter_t setter
Pointer to the setter method.
Definition: GyotoProperty.h:522
std::string name
Name of this instance.
Definition: GyotoProperty.h:371
Type is std::vector<unsigned long>
Definition: GyotoProperty.h:350
Type is double.
Definition: GyotoProperty.h:324
Compile-time configuration.
type_e
Possible type of a Property instance.
Definition: GyotoProperty.h:322
Property that can be set and got using standard methods.
Definition: GyotoProperty.h:313
std::vector< double >(Object::* get_vector_double_unit_t)(std::string const &) const
Prototype for an accessor to get a std::vector<double>, with unit.
Definition: GyotoProperty.h:421
setter_unit_t setter_unit
Pointer to the setter (with unit) method.
Definition: GyotoProperty.h:532
getter_unit_t getter_unit
Pointer to the getter (with unit) method.
Definition: GyotoProperty.h:537
Type is Gyoto::SmartPointer<Gyoto::Spectrum::Generic>
Definition: GyotoProperty.h:358
int type
Type of this instance.
Definition: GyotoProperty.h:378
Union holding an accessor to get double or vector<double> with unit.
Definition: GyotoProperty.h:513
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Union holding an accessor to set double or vector<double> with unit.
Definition: GyotoProperty.h:508
Type is Gyoto::SmartPointer<Gyoto::Spectrometer::Generic>
Definition: GyotoProperty.h:360
Pointers performing reference counting.
Definition: GyotoProperty.h:41
Type is std::vector<double>
Definition: GyotoProperty.h:348
Type is Gyoto::SmartPointer<Gyoto::Astrobj::Generic>
Definition: GyotoProperty.h:356
std::vector< double >(Object::* get_vector_double_t)() const
Prototype for an accessor to get a std::vector<double>
Definition: GyotoProperty.h:417
Type is std::string.
Definition: GyotoProperty.h:336
Object with properties.
Definition: GyotoObject.h:136
Type is Gyoto::SmartPointer<Gyoto::Screen::Generic>
Definition: GyotoProperty.h:354
getter_t getter
Pointer to the getter method.
Definition: GyotoProperty.h:527
Type is unsigned long (a.k.a. size_t)
Definition: GyotoProperty.h:328
Property const *const parent
If type is empty_t, link to another Property list.
Definition: GyotoProperty.h:543