12 #include <factory/factory.h> 33 #define WARN_MSG "Singular will work properly, but much slower." 37 #define LINKAGE extern "C" 38 #define p_Procs_Kernel 40 #include "templates/p_Procs.inc" 49 #define MAX_PROCNAME_LEN 200 61 sprintf(name,
"p_Procs_%s", module);
71 if (strcmp(module,
"FieldIndep") == 0)
73 else if (strcmp(module,
"FieldZp") == 0)
75 else if (strcmp(module,
"FieldQ") == 0)
77 else if (strcmp(module,
"FieldGeneral") == 0)
92 return cast_A_to_vptr(p_Copy__FieldGeneral_LengthGeneral_OrdGeneral);
94 return cast_A_to_vptr(p_Delete__FieldGeneral_LengthGeneral_OrdGeneral);
96 return cast_A_to_vptr(p_ShallowCopyDelete__FieldGeneral_LengthGeneral_OrdGeneral);
98 return cast_A_to_vptr(p_Add_q__FieldGeneral_LengthGeneral_OrdGeneral);
100 return cast_A_to_vptr(p_Neg__FieldGeneral_LengthGeneral_OrdGeneral);
102 return cast_A_to_vptr(p_Merge_q__FieldGeneral_LengthGeneral_OrdGeneral);
104 return cast_A_to_vptr(p_kBucketSetLm__FieldGeneral_LengthGeneral_OrdGeneral);
107 return cast_A_to_vptr(p_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral);
109 return cast_A_to_vptr(pp_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral);
111 return cast_A_to_vptr(pp_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral);
113 return cast_A_to_vptr(pp_Mult_mm_Noether__RingGeneral_LengthGeneral_OrdGeneral);
115 return cast_A_to_vptr(p_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral);
117 return cast_A_to_vptr(p_Minus_mm_Mult_qq__RingGeneral_LengthGeneral_OrdGeneral);
119 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelect__RingGeneral_LengthGeneral_OrdGeneral);
121 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelectMult__RingGeneral_LengthGeneral_OrdGeneral);
124 return cast_A_to_vptr(p_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral);
126 return cast_A_to_vptr(pp_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral);
128 return cast_A_to_vptr(pp_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral);
130 return cast_A_to_vptr(pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral);
132 return cast_A_to_vptr(p_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral);
134 return cast_A_to_vptr(p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral);
136 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelect__FieldGeneral_LengthGeneral_OrdGeneral);
138 return cast_A_to_vptr(pp_Mult_Coeff_mm_DivSelectMult__FieldGeneral_LengthGeneral_OrdGeneral);
155 return "p_Copy__FieldGeneral_LengthGeneral_OrdGeneral";
157 return "p_Delete__FieldGeneral_LengthGeneral_OrdGeneral";
159 return "p_ShallowCopyDelete__FieldGeneral_LengthGeneral_OrdGeneral";
161 return "p_Add_q__FieldGeneral_LengthGeneral_OrdGeneral";
163 return "p_Neg__FieldGeneral_LengthGeneral_OrdGeneral";
165 return "p_Merge_q__FieldGeneral_LengthGeneral_OrdGeneral";
167 return "p_kBucketSetLm__FieldGeneral_LengthGeneral_OrdGeneral";
172 return "p_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral";
174 return "pp_Mult_nn__RingGeneral_LengthGeneral_OrdGeneral";
176 return "pp_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral";
178 return "pp_Mult_mm_Noether__RingGeneral_LengthGeneral_OrdGeneral";
180 return "p_Mult_mm__RingGeneral_LengthGeneral_OrdGeneral";
182 return "p_Minus_mm_Mult_qq__RingGeneral_LengthGeneral_OrdGeneral";
184 return "pp_Mult_Coeff_mm_DivSelect__RingGeneral_LengthGeneral_OrdGeneral";
186 return "pp_Mult_Coeff_mm_DivSelectMult__RingGeneral_LengthGeneral_OrdGeneral";
189 return "p_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral";
191 return "pp_Mult_nn__FieldGeneral_LengthGeneral_OrdGeneral";
193 return "pp_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral";
195 return "pp_Mult_mm_Noether__FieldGeneral_LengthGeneral_OrdGeneral";
197 return "p_Mult_mm__FieldGeneral_LengthGeneral_OrdGeneral";
199 return "p_Minus_mm_Mult_qq__FieldGeneral_LengthGeneral_OrdGeneral";
201 return "pp_Mult_Coeff_mm_DivSelect__FieldGeneral_LengthGeneral_OrdGeneral";
203 return "pp_Mult_Coeff_mm_DivSelectMult__FieldGeneral_LengthGeneral_OrdGeneral";
206 return "p_Unknown_Proc";
218 void* proc_ptr =
NULL;
220 sprintf(proc_name,
"%s__%s_%s_%s", proc_s,
227 if (proc_ptr ==
NULL)
231 if (proc_ptr ==
NULL)
243 #if (!defined(SING_NDEBUG)) && (!defined(OM_NDEBUG)) 253 #define DoReallySetProc(what, field, length, ord) \ 254 _p_procs->what = cast_vptr_to_A<what##_Proc_Ptr>( \ 255 GetDynamicProc(#what, what##_Proc, field, length, ord)) 258 #define DoSetProc(what, field, length, ord) \ 262 _p_procs->what = cast_vptr_to_A<what##_Proc_Ptr>( \ 263 GetDynamicProc(#what, what##_Proc, field, length, ord, 1)); \ 265 DoReallySetProc(what, field, length, ord); \ 269 #define DoSetProc DoReallySetProc static void * p_ProcInitHandle(void **handle, const char *module)
unsigned char * proc[NUM_PROC]
static void * p_procs_handle_FieldIndep
void * dynl_open_binary_warn(const char *binary_name, const char *msg)
static void * p_procs_handle_FieldGeneral
static const char * p_OrdEnum_2_String(p_Ord ord)
static void * GetDynamicProc(const char *proc_s, p_Proc proc, p_Field field, p_Length length, p_Ord ord, int get_name=0)
void * dynl_sym(void *handle, const char *symbol)
void * dynl_sym_warn(void *handle, const char *proc, const char *msg)
static void * p_ProcGetHandle(p_Proc proc, p_Field field)
static void * GetGeneralProc(p_Proc proc)
static void * p_procs_handle_FieldZp
static const char * p_LengthEnum_2_String(p_Length length)
char name(const Variable &v)
static void * p_procs_handle_FieldQ
void * cast_A_to_vptr(A a)
const BOOLEAN p_procs_dynamic
static const char * p_ProcField_2_Module(p_Proc proc, p_Field field)
static const char * GetGeneralProcName(p_Proc proc)
#define DYNL_KERNEL_HANDLE
void omMarkAsStaticAddr(void *addr)
static const char * p_FieldEnum_2_String(p_Field field)