The structure of ideals in a field is so simple that it is usually ignored completely: there are just two ideals being the zero ideal and the whole field. Nonetheless it is helpful to have an implementation of them.
There is only one publicly callable function here
where k is a CoCoA::ring which represents a field, and gens is a std::vector<CoCoA::RingElem> being a collection of generators (RingElem values belonging to k). It creates a CoCoA::ideal which represents the ideal of k generated by the elements of gens; gens may be empty.
For operations on ideals, please see
The implementation is slightly more complex than one might naively expect: the primary complication is simply the need to retain the list of generators as specified by the user.
myTidyGensValue is either empty or it contains a single copy of RingElem(k, 1) according as the ideal is zero or the whole field.
One would like to think that code so short and so simple couldn't possibly harbour any nasty surprises. Then again one might just be surprised...
I definitely do not like the name of the function GetPtr; perhaps import? What is the correct way to achieve the end I want to achieve?