My Project  debian-1:4.1.2-p1+ds-2
p_Copy__T.cc
Go to the documentation of this file.
1 /****************************************
2 * Computer Algebra System SINGULAR *
3 ****************************************/
4 /***************************************************************
5  * File: p_Copy__Template.cc
6  * Purpose: template for p_Copy__T
7  * Author: obachman (Olaf Bachmann)
8  * Created: 8/00
9  *******************************************************************/
10 
11 LINKAGE poly p_Copy__T(poly s_p, const ring r)
12 {
13  // let's not do tests here -- but instead allow
14  // to be sloppy
15  spolyrec dp;
16  poly d_p = &dp;
17  omBin bin = r->PolyBin;
18  poly h;
19 
20  DECLARE_LENGTH(const unsigned long length = r->ExpL_Size);
21 
22  while (s_p != NULL)
23  {
24  p_AllocBin(pNext(d_p), bin, r);
25  pIter(d_p);
26  number n_p=pGetCoeff(s_p);
27  if (n_p!=NULL) n_p=n_Copy(n_p,r->cf);
28  pSetCoeff0(d_p, n_p);
29  // it is better to iter here,
30  // for MemCopy advances goes from low to high addresses
31  h = s_p;
32  s_p = pNext(s_p);
33  p_MemCopy__T(d_p->exp, h->exp, length);
34  }
35  pNext(d_p) = NULL;
36 
37  return dp.next;
38 }
39 
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
Definition: coeffs.h:451
static BOOLEAN length(leftv result, leftv arg)
Definition: interval.cc:263
STATIC_VAR Poly * h
Definition: janet.cc:971
#define LINKAGE
Definition: mod2.h:141
poly next
Definition: monomials.h:24
#define pIter(p)
Definition: monomials.h:37
#define pNext(p)
Definition: monomials.h:36
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
Definition: monomials.h:44
#define pSetCoeff0(p, n)
Definition: monomials.h:59
#define p_AllocBin(p, bin, r)
Definition: monomials.h:248
#define NULL
Definition: omList.c:12
omBin_t * omBin
Definition: omStructs.h:12
LINKAGE poly p_Copy__T(poly s_p, const ring r)
Definition: p_Copy__T.cc:11