#include <math.h>
#include <libc-extension.hh>
-#include "dimension-cache.hh"
+
#include "debug.hh"
#include "spanner.hh"
#include "paper-column.hh"
if (spanned_drul_[LEFT])
{
- iv[LEFT] = spanned_drul_[LEFT]->column_l ()->rank_i ();
+ iv[LEFT] = Paper_column::rank_i (spanned_drul_[LEFT]->column_l ());
}
if (spanned_drul_[RIGHT])
{
- iv[RIGHT] = spanned_drul_[RIGHT]->column_l ()->rank_i ();
+ iv[RIGHT] = Paper_column::rank_i (spanned_drul_[RIGHT]->column_l ());
}
return iv;
}
int
Spanner::compare (Spanner * const &p1, Spanner * const &p2)
{
- return p1->line_l ()->rank_i_ - p2->line_l ()->rank_i_;
+ return p1->line_l ()->rank_i_ - p2->line_l ()->rank_i_;
}
bool
return broken_into_l_arr_.size();
}
-Array<Rod>
-Spanner::get_rods () const
-{
- Array<Rod> r;
- return r;
-}
-
-Array<Spring>
-Spanner::get_springs () const
-{
- Array<Spring> s;
- return s;
-}
-
-void
-Spanner::do_space_processing ()
-{
- Array<Rod> rs (get_rods ());
- for (int i=0; i < rs.size (); i++)
- {
- rs[i].add_to_cols ();
- }
-
- Array<Spring> ss (get_springs ());
- for (int i=0; i < ss.size (); i++)
- {
- if (isinf (ss[i].distance_f_))
- programming_error ("weird spring");
- else
- ss[i].add_to_cols ();
- }
-}
/*
If this is a broken spanner, return the amount the left end is to be
return 0.0;
}
-void
+SCM
Spanner::do_derived_mark ()
{
+ /*
+ We'd be fucked if this is called before spanned_drul_[] is inited. */
+ if (status_i_ == ORPHAN)
+ return SCM_EOL;
+
Direction d = LEFT;
do
if (spanned_drul_[d])
- scm_gc_mark (spanned_drul_[d]->self_scm_);
+ scm_gc_mark (spanned_drul_[d]->self_scm ());
while (flip (&d) != LEFT);
+
+ for (int i= broken_into_l_arr_.size () ; i--;)
+ scm_gc_mark (broken_into_l_arr_[i]->self_scm ());
+
+ return SCM_EOL;
}
void