1 #include "new_diffractometer.h"
3 struct hkl_diffractometer
* create_empty_diffractometer(void)
5 diff
= malloc(sizeof(struct hkl_diffractometer
));
7 die("Can not create an empty diffractometer Oops");
12 struct hkl_diffractometer
* create_diffractometer(diff_type type
, ...)
14 struct hkl_diffractometer
* diff
= NULL
;
18 diff
= create_empty_diffractometer();
21 case DIFF_TYPE_2C
: init_2C_diffractometer(diff
);
23 case DIFF_TYPE_E4CV
: init_E4CV_diffractometer(diff
);
25 case DIFF_TYPE_E6C
: init_E6C_diffractometer(diff
);
29 alpha
= va_arg(ap
, double);
31 init_K4CV_diffractometer(diff
, alpha
);
35 alpha
= va_arg(ap
, double);
37 init_K6C_diffractometer(diff
, alpha
);
40 die("Not a known diffractometer");
45 static void free_diffractometer(struct hkl_diffractometer
* diff
)
47 free_geometry(diff
->geometry
);
50 struct hkl_diffractometer_config
* hkl_diffractometer_get_config(struct hkl_diffractometer
* diff
)
52 struct hkl_diffractometer_config
* config
;
54 config
= malloc(sizeof(struct hkl_diffractometer_config
));
56 die("Can not create a diffractometer config");
58 config
->geometry
= hkl_geometry_get_config(diff
->geometry
);
63 void hkl_diffractometer_set_config(struct hkl_diffractometer
* diff
, struct hkl_diffractometer_config
const * config
)
65 hkl_geometry_set_config(diff
->geometry
, config
->geometry
);
68 void free_diffractometer_config(struct hkl_diffractometer_config
* config
)
70 free_geometry_config(config
->geometry
);