Macaulay2 Engine
Loading...
Searching...
No Matches
int-bag.hpp
Go to the documentation of this file.
1// (c) 1994 Michael E. Stillman
2#ifndef _int_bag_hh_
3#define _int_bag_hh_
4
39
40#include "newdelete.hpp"
41
42class int_bag : public our_new_delete
43{
44 union
45 {
46 int b_elem;
47 void* b_ptr;
48 } val;
49 gc_vector<int> mon; // varpower representation
50
51 public:
52 int_bag() : mon() { memset(&val, 0, sizeof(val)); }
53 int_bag(int b) : mon() { val.b_elem = b; }
54 int_bag(void* b) : mon() { val.b_ptr = b; }
55 int_bag(int b, const gc_vector<int>& m) : mon(m) { val.b_elem = b; }
56 int_bag(void* b, const gc_vector<int>& m) : mon(m) { val.b_ptr = b; }
57 int_bag(const int_bag& gcb) : val(gcb.val), mon(gcb.mon) {}
58 int_bag(const int_bag* gcb) : val(gcb->val), mon(gcb->mon) {}
59
60 gc_vector<int>& monom() { return mon; }
61 const gc_vector<int>& monom() const { return mon; }
62
63 gc_vector<int>& vector() { return mon; }
64 const gc_vector<int>& vector() const { return mon; }
65
66 int basis_elem() const { return val.b_elem; }
67 void* basis_ptr() const { return val.b_ptr; }
68};
69
70typedef int_bag Bag;
71
72#endif
73
74// Local Variables:
75// compile-command: "make -C $M2BUILDDIR/Macaulay2/e "
76// indent-tabs-mode: nil
77// End:
int basis_elem() const
Definition int-bag.hpp:66
int_bag(int b)
Definition int-bag.hpp:53
gc_vector< int > mon
Definition int-bag.hpp:49
int_bag()
Definition int-bag.hpp:52
const gc_vector< int > & monom() const
Definition int-bag.hpp:61
int_bag(const int_bag *gcb)
Definition int-bag.hpp:58
int_bag(int b, const gc_vector< int > &m)
Definition int-bag.hpp:55
int_bag(const int_bag &gcb)
Definition int-bag.hpp:57
union int_bag::@252132010021231170012321177004360101354225000032 val
int_bag(void *b, const gc_vector< int > &m)
Definition int-bag.hpp:56
gc_vector< int > & vector()
Definition int-bag.hpp:63
void * basis_ptr() const
Definition int-bag.hpp:67
gc_vector< int > & monom()
Definition int-bag.hpp:60
const gc_vector< int > & vector() const
Definition int-bag.hpp:64
int_bag(void *b)
Definition int-bag.hpp:54
int b_elem
Definition int-bag.hpp:46
void * b_ptr
Definition int-bag.hpp:47
int_bag Bag
Definition int-bag.hpp:70
typename std::vector< T, gc_allocator< T > > gc_vector
a version of the STL vector, which allocates its backing memory with gc.
Definition newdelete.hpp:76
our_new_delete — per-class opt-in routing of new / delete through bdwgc.