6 CL_PROVIDE(cl_UP_no_ring)
9 #include "cln/univpoly.h"
15 #include "cln/abort.h"
19 nonreturning_function(static, uninitialized_ring, (void));
20 static void uninitialized_ring ()
22 fprint(std::cerr, "Uninitialized ring operation called\n");
26 nonreturning_function(static, uninitialized_error, (const _cl_UP&));
27 static void uninitialized_error (const _cl_UP& obj)
29 fprint(std::cerr, "Uninitialized ring element @0x");
30 fprinthexadecimal(std::cerr, (unsigned long)(void*)&obj);
31 fprint(std::cerr, ": 0x");
32 fprinthexadecimal(std::cerr, (unsigned long)obj.rep.word);
33 fprint(std::cerr, "\n");
37 #if ((defined(__sparc__) || defined(__sparc64__)) && !defined(__GNUC__))
38 // avoid Sun C++ 4.1 compiler bug
39 #define RETDUMMY return *(_cl_UP*)R
41 #define RETDUMMY return *(_cl_UP*)0
44 static const _cl_UP dummy_op0 (cl_heap_univpoly_ring* R)
47 uninitialized_ring(); RETDUMMY;
50 static const _cl_UP dummy_op1 (cl_heap_univpoly_ring* R, const _cl_UP& x)
53 uninitialized_error(x); RETDUMMY;
56 static const _cl_UP dummy_op2 (cl_heap_univpoly_ring* R, const _cl_UP& x, const _cl_UP& y)
59 uninitialized_error(x); uninitialized_error(y); RETDUMMY;
62 static void dummy_fprint (cl_heap_univpoly_ring* R, cl_ostream stream, const _cl_UP& x)
66 uninitialized_error(x);
68 static cl_boolean dummy_equal (cl_heap_univpoly_ring* R, const _cl_UP& x, const _cl_UP& y)
71 uninitialized_error(x); uninitialized_error(y); return cl_false;
74 #define dummy_zero dummy_op0
75 static cl_boolean dummy_zerop (cl_heap_univpoly_ring* R, const _cl_UP& x)
78 uninitialized_error(x); return cl_false;
80 #define dummy_plus dummy_op2
81 #define dummy_minus dummy_op2
82 #define dummy_uminus dummy_op1
84 #define dummy_one dummy_op0
85 static const _cl_UP dummy_canonhom (cl_heap_univpoly_ring* R, const cl_I& x)
88 (void)&x; // unused x;
89 uninitialized_ring(); RETDUMMY;
91 #define dummy_mul dummy_op2
92 #define dummy_square dummy_op1
93 static const _cl_UP dummy_expt_pos (cl_heap_univpoly_ring* R, const _cl_UP& x, const cl_I& y)
96 (void)&y; // unused y;
97 uninitialized_error(x); RETDUMMY;
100 static const _cl_UP dummy_scalmul (cl_heap_univpoly_ring* R, const cl_ring_element& x, const _cl_UP& y)
104 uninitialized_error(y); RETDUMMY;
107 static sintL dummy_degree (cl_heap_univpoly_ring* R, const _cl_UP& x)
110 uninitialized_error(x); return 0;
112 static const _cl_UP dummy_monomial (cl_heap_univpoly_ring* R, const cl_ring_element& x, uintL e)
117 uninitialized_ring(); RETDUMMY;
119 static const cl_ring_element dummy_coeff (cl_heap_univpoly_ring* R, const _cl_UP& x, uintL index)
123 uninitialized_error(x); return *(cl_ring_element*)0;
125 static const _cl_UP dummy_create (cl_heap_univpoly_ring* R, sintL deg)
129 uninitialized_ring(); RETDUMMY;
131 static void dummy_set_coeff (cl_heap_univpoly_ring* R, _cl_UP& x, uintL index, const cl_ring_element& y)
136 uninitialized_error(x);
138 static void dummy_finalize (cl_heap_univpoly_ring* R, _cl_UP& x)
141 uninitialized_error(x);
143 static const cl_ring_element dummy_eval (cl_heap_univpoly_ring* R, const _cl_UP& x, const cl_ring_element& y)
147 uninitialized_error(x); return *(cl_ring_element*)0;
150 static cl_univpoly_setops dummy_setops = {
154 static cl_univpoly_addops dummy_addops = {
161 static cl_univpoly_mulops dummy_mulops = {
168 static cl_univpoly_modulops dummy_modulops = {
171 static cl_univpoly_polyops dummy_polyops = {
181 class cl_heap_no_univpoly_ring : public cl_heap_univpoly_ring {
182 SUBCLASS_cl_heap_univpoly_ring()
185 cl_heap_no_univpoly_ring ()
186 : cl_heap_univpoly_ring (cl_no_ring,&dummy_setops,&dummy_addops,&dummy_mulops,&dummy_modulops,&dummy_polyops)
187 { type = &cl_class_no_univpoly_ring; }
189 ~cl_heap_no_univpoly_ring () {}
192 static void cl_no_univpoly_ring_destructor (cl_heap* pointer)
194 (*(cl_heap_no_univpoly_ring*)pointer).~cl_heap_no_univpoly_ring();
197 cl_class cl_class_no_univpoly_ring = {
198 cl_no_univpoly_ring_destructor,
202 const cl_univpoly_ring cl_no_univpoly_ring = cl_univpoly_ring (new cl_heap_no_univpoly_ring());
206 CL_PROVIDE_END(cl_UP_no_ring)