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_ring_element&));
25 static void uninitialized_error (const _cl_ring_element& 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(__GNUC__))
36 // avoid Sun C++ 4.1 compiler bug
37 #define RETDUMMY return *(_cl_ring_element*)R
39 #define RETDUMMY return *(_cl_ring_element*)0
42 static const _cl_ring_element dummy_op0 (cl_heap_ring* R)
45 uninitialized_ring(); RETDUMMY;
48 static const _cl_ring_element dummy_op1 (cl_heap_ring* R, const _cl_ring_element& x)
51 uninitialized_error(x); RETDUMMY;
54 static const _cl_ring_element dummy_op2 (cl_heap_ring* R, const _cl_ring_element& x, const _cl_ring_element& y)
57 uninitialized_error(x); uninitialized_error(y); RETDUMMY;
60 static void dummy_fprint (cl_heap_ring* R, cl_ostream stream, const _cl_ring_element& x)
64 uninitialized_error(x);
66 static cl_boolean dummy_equal (cl_heap_ring* R, const _cl_ring_element& x, const _cl_ring_element& 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_ring* R, const _cl_ring_element& 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_ring_element dummy_canonhom (cl_heap_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_ring_element dummy_expt_pos (cl_heap_ring* R, const _cl_ring_element& x, const cl_I& y)
94 (void)&y; // unused y;
95 uninitialized_error(x); RETDUMMY;
98 static cl_ring_setops dummy_setops = {
102 static cl_ring_addops dummy_addops = {
109 static cl_ring_mulops dummy_mulops = {
117 class cl_heap_no_ring : public cl_heap_ring {
118 SUBCLASS_cl_heap_ring()
122 : cl_heap_ring (&dummy_setops,&dummy_addops,&dummy_mulops)
123 { type = &cl_class_no_ring; }
125 ~cl_heap_no_ring () {}
128 static void cl_no_ring_destructor (cl_heap* pointer)
130 (*(cl_heap_no_ring*)pointer).~cl_heap_no_ring();
133 static void cl_no_ring_dprint (cl_heap* pointer)
136 fprint(cl_debugout, "(cl_ring) cl_no_ring");
139 cl_class cl_class_no_ring = {
140 cl_no_ring_destructor,
145 const cl_ring cl_no_ring = cl_ring (new cl_heap_no_ring());
147 CL_PROVIDE_END(cl_no_ring)