6 CL_PROVIDE(cl_UP_no_ring)
9 #include "cl_univpoly.h"
17 nonreturning_function(static, uninitialized_ring, (void));
18 static void uninitialized_ring ()
20 fprint(cl_stderr, "Uninitialized ring operation called\n");
24 nonreturning_function(static, uninitialized_error, (const _cl_UP&));
25 static void uninitialized_error (const _cl_UP& obj)
27 fprint(cl_stderr, "Uninitialized ring element @0x");
28 fprinthexadecimal(cl_stderr, (unsigned long)(void*)&obj);
29 fprint(cl_stderr, ": 0x");
30 fprinthexadecimal(cl_stderr, (unsigned long)obj.rep.word);
31 fprint(cl_stderr, "\n");
35 #if ((defined(__sparc__) || defined(__sparc64__)) && !defined(__GNUC__))
36 // avoid Sun C++ 4.1 compiler bug
37 #define RETDUMMY return *(_cl_UP*)R
39 #define RETDUMMY return *(_cl_UP*)0
42 static const _cl_UP dummy_op0 (cl_heap_univpoly_ring* R)
45 uninitialized_ring(); RETDUMMY;
48 static const _cl_UP dummy_op1 (cl_heap_univpoly_ring* R, const _cl_UP& x)
51 uninitialized_error(x); RETDUMMY;
54 static const _cl_UP dummy_op2 (cl_heap_univpoly_ring* R, const _cl_UP& x, const _cl_UP& y)
57 uninitialized_error(x); uninitialized_error(y); RETDUMMY;
60 static void dummy_fprint (cl_heap_univpoly_ring* R, cl_ostream stream, const _cl_UP& x)
64 uninitialized_error(x);
66 static cl_boolean dummy_equal (cl_heap_univpoly_ring* R, const _cl_UP& x, const _cl_UP& y)
69 uninitialized_error(x); uninitialized_error(y); return cl_false;
72 #define dummy_zero dummy_op0
73 static cl_boolean dummy_zerop (cl_heap_univpoly_ring* R, const _cl_UP& x)
76 uninitialized_error(x); return cl_false;
78 #define dummy_plus dummy_op2
79 #define dummy_minus dummy_op2
80 #define dummy_uminus dummy_op1
82 #define dummy_one dummy_op0
83 static const _cl_UP dummy_canonhom (cl_heap_univpoly_ring* R, const cl_I& x)
86 (void)&x; // unused x;
87 uninitialized_ring(); RETDUMMY;
89 #define dummy_mul dummy_op2
90 #define dummy_square dummy_op1
91 static const _cl_UP dummy_expt_pos (cl_heap_univpoly_ring* R, const _cl_UP& x, const cl_I& y)
94 (void)&y; // unused y;
95 uninitialized_error(x); RETDUMMY;
98 static const _cl_UP dummy_scalmul (cl_heap_univpoly_ring* R, const cl_ring_element& x, const _cl_UP& y)
102 uninitialized_error(y); RETDUMMY;
105 static sintL dummy_degree (cl_heap_univpoly_ring* R, const _cl_UP& x)
108 uninitialized_error(x); return 0;
110 static const _cl_UP dummy_monomial (cl_heap_univpoly_ring* R, const cl_ring_element& x, uintL e)
115 uninitialized_ring(); RETDUMMY;
117 static const cl_ring_element dummy_coeff (cl_heap_univpoly_ring* R, const _cl_UP& x, uintL index)
121 uninitialized_error(x); return *(cl_ring_element*)0;
123 static const _cl_UP dummy_create (cl_heap_univpoly_ring* R, sintL deg)
127 uninitialized_ring(); RETDUMMY;
129 static void dummy_set_coeff (cl_heap_univpoly_ring* R, _cl_UP& x, uintL index, const cl_ring_element& y)
134 uninitialized_error(x);
136 static void dummy_finalize (cl_heap_univpoly_ring* R, _cl_UP& x)
139 uninitialized_error(x);
141 static const cl_ring_element dummy_eval (cl_heap_univpoly_ring* R, const _cl_UP& x, const cl_ring_element& y)
145 uninitialized_error(x); return *(cl_ring_element*)0;
148 static cl_univpoly_setops dummy_setops = {
152 static cl_univpoly_addops dummy_addops = {
159 static cl_univpoly_mulops dummy_mulops = {
166 static cl_univpoly_modulops dummy_modulops = {
169 static cl_univpoly_polyops dummy_polyops = {
179 class cl_heap_no_univpoly_ring : public cl_heap_univpoly_ring {
180 SUBCLASS_cl_heap_univpoly_ring()
183 cl_heap_no_univpoly_ring ()
184 : cl_heap_univpoly_ring (cl_no_ring,&dummy_setops,&dummy_addops,&dummy_mulops,&dummy_modulops,&dummy_polyops)
185 { type = &cl_class_no_univpoly_ring; }
187 ~cl_heap_no_univpoly_ring () {}
190 static void cl_no_univpoly_ring_destructor (cl_heap* pointer)
192 (*(cl_heap_no_univpoly_ring*)pointer).~cl_heap_no_univpoly_ring();
195 cl_class cl_class_no_univpoly_ring = {
196 cl_no_univpoly_ring_destructor,
200 const cl_univpoly_ring cl_no_univpoly_ring = cl_univpoly_ring (new cl_heap_no_univpoly_ring());
202 CL_PROVIDE_END(cl_UP_no_ring)