Macaulay2 Engine
Loading...
Searching...
No Matches

◆ rawGetParts()

engine_RawRingElementArray rawGetParts ( const M2_arrayint wts,
const RingElement * f )

Definition at line 672 of file ringelement.cpp.

677{
678 try
679 {
681 if (P == nullptr)
682 {
683 ERROR("expected a polynomial");
684 return nullptr;
685 }
686 long relems_len;
687 ring_elem *relems = P->get_parts(
688 M2_arrayint_to_stdvector<int>(wts), f->get_value(), relems_len);
689 engine_RawRingElementArray result =
690 getmemarraytype(engine_RawRingElementArray, relems_len);
691 result->len = static_cast<int>(relems_len);
692 for (int i = 0; i < result->len; i++)
693 result->array[i] = RingElement::make_raw(P, relems[i]);
694 freemem(relems);
695 return result;
696 } catch (const exc::engine_error& e)
697 {
698 ERROR(e.what());
699 return nullptr;
700 }
701}
virtual ring_elem * get_parts(const std::vector< int > &wts, const ring_elem f, long &result_len) const =0
Abstract base for the engine's polynomial-ring hierarchy.
Definition polyring.hpp:96
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
ring_elem get_value() const
Definition relem.hpp:79
static RingElement * make_raw(const Ring *R, ring_elem f)
Definition relem.cpp:20
const Ring * get_ring() const
Definition relem.hpp:81
void freemem(void *s)
Definition m2-mem.cpp:103
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemarraytype(S, len)
Definition m2-mem.h:142
std::vector< T > M2_arrayint_to_stdvector(M2_arrayint arr)
Definition util.hpp:96

References Ring::cast_to_PolynomialRing(), ERROR, freemem(), PolynomialRing::get_parts(), RingElement::get_ring(), RingElement::get_value(), getmemarraytype, M2_arrayint_to_stdvector(), RingElement::make_raw(), and result().