-// cl_find_univpoly_ring().
+// find_univpoly_ring().
// General includes.
#include "cl_sysdep.h"
CL_PROVIDE(cl_UP_named)
// Specification.
-#include "cl_univpoly.h"
+#include "cln/univpoly.h"
// Implementation.
#include "cl_UP.h"
+namespace cln {
+
// Create a new univariate polynomial ring with a named variable.
static inline cl_heap_univpoly_ring* cl_make_univpoly_ring (const cl_ring& r, const cl_symbol& varname)
return UPR;
}
+} // namespace cln
// The table of univariate polynomial rings with named variable.
// A weak hash table (cl_ring,cl_symbol) -> cl_univpoly_ring.
#include "cl_rcpointer2_hashweak_rcpointer.h"
+namespace cln {
+
// An entry can be collected when the value (the ring) isn't referenced any more
// except from the hash table, and when the keys (the base ring and the name)
// are't referenced any more except from the hash table and the ring. Note that
// the ring contains exactly one reference to the base ring and exactly one
// reference to the name (on the property list).
-static cl_boolean maygc_htentry (const cl_htentry_from_rcpointer2_to_rcpointer& entry)
+static bool maygc_htentry (const cl_htentry_from_rcpointer2_to_rcpointer& entry)
{
if (!entry.key1.pointer_p() || (entry.key1.heappointer->refcount == 2))
if (!entry.key2.pointer_p() || (entry.key2.heappointer->refcount == 2))
if (!entry.val.pointer_p() || (entry.val.heappointer->refcount == 1))
- return cl_true;
- return cl_false;
+ return true;
+ return false;
}
static const cl_wht_from_rcpointer2_to_rcpointer univpoly_ring_table = cl_wht_from_rcpointer2_to_rcpointer(maygc_htentry);
}
-const cl_univpoly_ring cl_find_univpoly_ring (const cl_ring& r, const cl_symbol& varname)
+const cl_univpoly_ring find_univpoly_ring (const cl_ring& r, const cl_symbol& varname)
{
var cl_univpoly_ring* ring_in_table = get_univpoly_ring(r,varname);
if (!ring_in_table) {
store_univpoly_ring(R);
ring_in_table = get_univpoly_ring(r,varname);
if (!ring_in_table)
- cl_abort();
+ throw runtime_exception();
}
return *ring_in_table;
}
+} // namespace cln
+
CL_PROVIDE_END(cl_UP_named)