source: git/libpolys/polys/templates/p_Procs.h @ 8179468

spielwiese
Last change on this file since 8179468 was 8179468, checked in by Oleksandr Motsak <motsak@…>, 11 years ago
Better forward declarations and includes for bucket-related stuff TODO: refine?
  • Property mode set to 100644
File size: 3.4 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4
5/***************************************************************
6 *  File:    pProcs.h
7 *  Purpose: declaration of primitive procs for polys
8 *  Author:  obachman (Olaf Bachmann)
9 *  Created: 8/00
10 *******************************************************************/
11#ifndef P_PROCS_H
12#define P_PROCS_H
13
14// #include <polys/monomials/ring.h>
15// #include <polys/structs.h>
16#include <omalloc/omalloc.h>
17
18struct spolyrec; typedef struct spolyrec polyrec; typedef polyrec* poly;
19struct ip_sring; typedef struct ip_sring* ring; typedef struct ip_sring const* const_ring;
20
21/*------------- p_Proc stuff ----------------------*/
22typedef poly (*p_Copy_Proc_Ptr)(poly p, const ring r);
23typedef void (*p_Delete_Proc_Ptr)(poly *p, const ring r);
24typedef poly (*p_ShallowCopyDelete_Proc_Ptr)(poly p, const ring r, omBin dest_bin);
25typedef poly (*p_Mult_nn_Proc_Ptr)(poly p, const number n, const ring r);
26typedef poly (*pp_Mult_nn_Proc_Ptr)(poly p, const number n, const ring r);
27typedef poly (*p_Mult_mm_Proc_Ptr)(poly p, const poly m, const ring r);
28typedef poly (*pp_Mult_mm_Proc_Ptr)(poly p, const poly m, const ring r);
29typedef poly (*pp_Mult_mm_Noether_Proc_Ptr)(poly p, const poly m,
30                                            const poly spNoether, int &ll,
31                                            const ring r);
32typedef poly (*p_Add_q_Proc_Ptr)(poly p, poly q, int & shorter, const ring r);
33typedef poly (*p_Minus_mm_Mult_qq_Proc_Ptr)(poly p, poly m, poly q,
34                                            int &shorter, const poly spNoether,
35                                            const ring r);
36typedef poly (*p_Neg_Proc_Ptr)(poly p, const ring r);
37typedef poly (*pp_Mult_Coeff_mm_DivSelect_Proc_Ptr)(poly p, const poly m,
38                                                    int &shorter,const ring r);
39typedef poly (*pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr)
40  (poly p,const poly m, const poly a, const poly b, int &shorter,const ring r);
41
42typedef poly (*p_Merge_q_Proc_Ptr)(poly p, poly q, const ring r);
43typedef void (*p_kBucketSetLm_Proc_Ptr)(kBucket_pt bucket);
44
45typedef struct p_Procs_s
46{
47  p_Copy_Proc_Ptr                       p_Copy;
48  p_Delete_Proc_Ptr                     p_Delete;
49  p_ShallowCopyDelete_Proc_Ptr          p_ShallowCopyDelete;
50  p_Mult_nn_Proc_Ptr                    p_Mult_nn;
51  pp_Mult_nn_Proc_Ptr                   pp_Mult_nn;
52  pp_Mult_mm_Proc_Ptr                   pp_Mult_mm;
53  pp_Mult_mm_Noether_Proc_Ptr           pp_Mult_mm_Noether;
54  p_Mult_mm_Proc_Ptr                    p_Mult_mm;
55  p_Add_q_Proc_Ptr                      p_Add_q;
56  p_Minus_mm_Mult_qq_Proc_Ptr           p_Minus_mm_Mult_qq;
57  p_Neg_Proc_Ptr                        p_Neg;
58  pp_Mult_Coeff_mm_DivSelect_Proc_Ptr   pp_Mult_Coeff_mm_DivSelect;
59  pp_Mult_Coeff_mm_DivSelectMult_Proc_Ptr   pp_Mult_Coeff_mm_DivSelectMult;
60  p_Merge_q_Proc_Ptr                    p_Merge_q;
61  p_kBucketSetLm_Proc_Ptr               p_kBucketSetLm;
62} pProcs_s;
63
64
65void p_ProcsSet(ring r, p_Procs_s* p_Procs);
66#ifdef RDEBUG
67void p_Debug_GetSpecNames(const ring r, const char* &field, const char* &length,
68                          const char* &ord);
69void p_Debug_GetProcNames(const ring r, p_Procs_s* p_Procs);
70#endif
71// if set, then dynamic p_procs are used, otherwise static
72extern const BOOLEAN p_procs_dynamic;
73
74#endif /* ! P_PROCS_H */
Note: See TracBrowser for help on using the repository browser.