17 uninitialized_ring_exception::uninitialized_ring_exception ()
18 : runtime_exception("Uninitialized ring operation called.")
21 static inline const std::string
22 uninitialized_error_msg (const _cl_ring_element& obj)
24 std::ostringstream buf;
25 fprint(buf, "Uninitialized ring element @0x");
26 fprinthexadecimal(buf, (unsigned long)(void*)&obj);
28 fprinthexadecimal(buf, (unsigned long)obj.rep.word);
32 static inline const std::string
33 uninitialized_error_msg (const _cl_ring_element& obj_x, const _cl_ring_element& obj_y)
35 std::ostringstream buf;
36 fprint(buf, "Uninitialized ring elements @0x");
37 fprinthexadecimal(buf, (unsigned long)(void*)&obj_x);
39 fprinthexadecimal(buf, (unsigned long)obj_x.rep.word);
41 fprinthexadecimal(buf, (unsigned long)(void*)&obj_y);
43 fprinthexadecimal(buf, (unsigned long)obj_y.rep.word);
47 uninitialized_exception::uninitialized_exception (const _cl_ring_element& obj)
48 : runtime_exception(uninitialized_error_msg(obj))
51 uninitialized_exception::uninitialized_exception (const _cl_ring_element& obj_x, const _cl_ring_element& obj_y)
52 : runtime_exception(uninitialized_error_msg(obj_x, obj_y))
56 static const _cl_ring_element dummy_op0 (cl_heap_ring* R)
59 throw uninitialized_ring_exception();
62 static const _cl_ring_element dummy_op1 (cl_heap_ring* R, const _cl_ring_element& x)
65 throw uninitialized_exception(x);
68 static const _cl_ring_element dummy_op2 (cl_heap_ring* R, const _cl_ring_element& x, const _cl_ring_element& y)
71 throw uninitialized_exception(x, y);
74 static void dummy_fprint (cl_heap_ring* R, std::ostream& stream, const _cl_ring_element& x)
78 throw uninitialized_exception(x);
80 static bool dummy_equal (cl_heap_ring* R, const _cl_ring_element& x, const _cl_ring_element& y)
83 throw uninitialized_exception(x, y);
86 #define dummy_zero dummy_op0
87 static bool dummy_zerop (cl_heap_ring* R, const _cl_ring_element& x)
90 throw uninitialized_exception(x);
92 #define dummy_plus dummy_op2
93 #define dummy_minus dummy_op2
94 #define dummy_uminus dummy_op1
96 #define dummy_one dummy_op0
97 static const _cl_ring_element dummy_canonhom (cl_heap_ring* R, const cl_I& x)
100 (void)&x; // unused x;
101 throw uninitialized_ring_exception();
103 #define dummy_mul dummy_op2
104 #define dummy_square dummy_op1
105 static const _cl_ring_element dummy_expt_pos (cl_heap_ring* R, const _cl_ring_element& x, const cl_I& y)
108 (void)&y; // unused y;
109 throw uninitialized_exception(x);
112 static cl_ring_setops dummy_setops = {
116 static cl_ring_addops dummy_addops = {
123 static cl_ring_mulops dummy_mulops = {
131 class cl_heap_no_ring : public cl_heap_ring {
132 SUBCLASS_cl_heap_ring()
136 : cl_heap_ring (&dummy_setops,&dummy_addops,&dummy_mulops)
137 { type = &cl_class_no_ring; }
139 ~cl_heap_no_ring () {}
142 static void cl_no_ring_destructor (cl_heap* pointer)
144 (*(cl_heap_no_ring*)pointer).~cl_heap_no_ring();
147 static void cl_no_ring_dprint (cl_heap* pointer)
150 fprint(cl_debugout, "(cl_ring) cl_no_ring");
153 cl_class cl_class_no_ring;
155 static cl_heap_no_ring* cl_heap_no_ring_instance;
156 // const cl_ring cl_no_ring = cl_ring (new cl_heap_no_ring());
157 const cl_ring cl_no_ring = cl_no_ring;
160 int cl_no_ring_init_helper::count = 0;
162 cl_no_ring_init_helper::cl_no_ring_init_helper()
165 cl_class_no_ring.destruct = cl_no_ring_destructor;
166 cl_class_no_ring.flags = 0;
167 cl_class_no_ring.dprint = cl_no_ring_dprint;
169 cl_heap_no_ring_instance = new cl_heap_no_ring();
170 new((void*)&cl_no_ring) cl_ring(cl_heap_no_ring_instance);
174 cl_no_ring_init_helper::~cl_no_ring_init_helper()
177 delete cl_heap_no_ring_instance;