12 #include "factory/factory.h"
32 #define WARN_MSG "Singular will work properly, but much slower."
36 #define LINKAGE extern "C"
37 #define p_Procs_Kernel
39 #include "templates/p_Procs.inc"
48 #define MAX_PROCNAME_LEN 200
60 sprintf(
name,
"p_Procs_%s", module);
70 if (strcmp(module,
"FieldIndep") == 0)
72 else if (strcmp(module,
"FieldZp") == 0)
74 else if (strcmp(module,
"FieldQ") == 0)
76 else if (strcmp(module,
"FieldGeneral") == 0)
91 return cast_A_to_vptr(p_Copy__FieldGeneral_LengthGeneral_OrdGeneral);
93 return cast_A_to_vptr(p_Delete__FieldGeneral_LengthGeneral_OrdGeneral);
95 return cast_A_to_vptr(p_ShallowCopyDelete__FieldGeneral_LengthGeneral_OrdGeneral);
97 return cast_A_to_vptr(p_Add_q__FieldGeneral_LengthGeneral_OrdGeneral);
99 return cast_A_to_vptr(p_Neg__FieldGeneral_LengthGeneral_OrdGeneral);
101 return cast_A_to_vptr(p_Merge_q__FieldGeneral_LengthGeneral_OrdGeneral);
103 return cast_A_to_vptr(p_kBucketSetLm__FieldGeneral_LengthGeneral_OrdGeneral);
106 return cast_A_to_vptr(p_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral);
108 return cast_A_to_vptr(pp_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral);
110 return cast_A_to_vptr(pp_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral);
112 return cast_A_to_vptr(pp_Mult_mm_Noether__RingGeneral_LengthGeneral_OrdGeneral);
114 return cast_A_to_vptr(p_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral);
116 return cast_A_to_vptr(p_Minus_mm_Mult_qq__RingGeneral_LengthGeneral_OrdGeneral);
118 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelect__RingGeneral_LengthGeneral_OrdGeneral);
120 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelectMult__RingGeneral_LengthGeneral_OrdGeneral);
123 return cast_A_to_vptr(p_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral);
125 return cast_A_to_vptr(pp_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral);
127 return cast_A_to_vptr(pp_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral);
129 return cast_A_to_vptr(pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral);
131 return cast_A_to_vptr(p_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral);
133 return cast_A_to_vptr(p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral);
135 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelect__FieldGeneral_LengthGeneral_OrdGeneral);
137 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelectMult__FieldGeneral_LengthGeneral_OrdGeneral);
154 return "p_Copy__FieldGeneral_LengthGeneral_OrdGeneral";
156 return "p_Delete__FieldGeneral_LengthGeneral_OrdGeneral";
158 return "p_ShallowCopyDelete__FieldGeneral_LengthGeneral_OrdGeneral";
160 return "p_Add_q__FieldGeneral_LengthGeneral_OrdGeneral";
162 return "p_Neg__FieldGeneral_LengthGeneral_OrdGeneral";
164 return "p_Merge_q__FieldGeneral_LengthGeneral_OrdGeneral";
166 return "p_kBucketSetLm__FieldGeneral_LengthGeneral_OrdGeneral";
171 return "p_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral";
173 return "pp_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral";
175 return "pp_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral";
177 return "pp_Mult_mm_Noether__RingGeneral_LengthGeneral_OrdGeneral";
179 return "p_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral";
181 return "p_Minus_mm_Mult_qq__RingGeneral_LengthGeneral_OrdGeneral";
183 return "pp_Mult_Coeff_mm_DivSelect__RingGeneral_LengthGeneral_OrdGeneral";
185 return "pp_Mult_Coeff_mm_DivSelectMult__RingGeneral_LengthGeneral_OrdGeneral";
188 return "p_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral";
190 return "pp_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral";
192 return "pp_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral";
194 return "pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral";
196 return "p_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral";
198 return "p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral";
200 return "pp_Mult_Coeff_mm_DivSelect__FieldGeneral_LengthGeneral_OrdGeneral";
202 return "pp_Mult_Coeff_mm_DivSelectMult__FieldGeneral_LengthGeneral_OrdGeneral";
205 return "p_Unknown_Proc";
217 void* proc_ptr =
NULL;
219 sprintf(proc_name,
"%s__%s_%s_%s", proc_s,
226 if (proc_ptr ==
NULL)
230 if (proc_ptr ==
NULL)
242 #if (!defined(SING_NDEBUG)) && (!defined(OM_NDEBUG))
252 #define DoReallySetProc(what, field, length, ord) \
253 _p_procs->what = cast_vptr_to_A<what##_Proc_Ptr>( \
254 GetDynamicProc(#what, what##_Proc, field, length, ord))
257 #define DoSetProc(what, field, length, ord) \
261 _p_procs->what = cast_vptr_to_A<what##_Proc_Ptr>( \
262 GetDynamicProc(#what, what##_Proc, field, length, ord, 1)); \
264 DoReallySetProc(what, field, length, ord); \
268 #define DoSetProc DoReallySetProc