+
+
+bool
+number_pair_p (SCM p)
+{
+ return gh_pair_p (p) && gh_number_p (gh_car (p)) && gh_number_p (gh_cdr (p));
+}
+
+bool
+axis_p (SCM a)
+{
+ return gh_number_p (a) && (gh_scm2int (a) == 0 || gh_scm2int (a) == 1);
+}
+
+SCM
+Molecule::ly_set_molecule_extent_x (SCM mol, SCM axis, SCM np)
+{
+ Molecule* m = unsmob_molecule (mol);
+ if (m && axis_p (axis) && number_pair_p (np))
+ {
+ Interval iv = ly_scm2interval (np);
+ m->dim_[Axis(gh_scm2int (axis))] = ly_scm2interval (np);
+ }
+ else
+ warning ("ly-set-molecule-extent!: invalid arguments");
+ return SCM_UNDEFINED;
+}
+
+SCM
+Molecule::ly_get_molecule_extent (SCM mol, SCM axis)