130 template<
class IntegerType = boost::u
int64_t>
138 :
GroupType(Anonymous, realDegree_, true), m_order(order_) { }
142 o <<
"anonymous(" <<
m_realDegree <<
", " << m_order <<
")";
160 o << m_name <<
"_" << m_typeDegree;
164 const char*
name()
const {
return m_name; }
169 unsigned int m_typeDegree;
176 NamedGroupType(
const char* name_,
unsigned int typeDegree_,
unsigned int realDegree_)
177 :
GroupType(Named, realDegree_, typeDegree_ == realDegree_), m_name(name_), m_typeDegree(typeDegree_) { }
181 return namedType->m_typeDegree == this->m_typeDegree && std::strcmp(namedType->m_name, this->m_name) == 0;
229 :
GroupType(WreathSymmetric, realDegree_, realDegree_ == degreeG_ * degreeH_), m_degreeG(degreeG_), m_degreeH(degreeH_) { }
232 o <<
"S_" << m_degreeG <<
" wr S_" << m_degreeH;
235 unsigned int degreeG()
const {
return m_degreeG; }
236 unsigned int degreeH()
const {
return m_degreeH; }
238 unsigned int m_degreeG;
239 unsigned int m_degreeH;
243 return wreathType->m_degreeG == m_degreeG && wreathType->m_degreeH == m_degreeH;
258 m_components[0] = GroupTypePtr(type1);
259 m_components[1] = GroupTypePtr(type2);
263 for (
unsigned int i = 0; i < m_components.size(); ++i) {
266 m_components[i]->writeToStream(o);
271 typedef boost::shared_ptr<const GroupType> GroupTypePtr;
272 std::vector<GroupTypePtr> m_components;
276 if (m_components.size() != directType->m_components.size())
278 std::vector<GroupTypePtr>::const_iterator itMe = m_components.begin();
279 std::vector<GroupTypePtr>::const_iterator itOther = directType->m_components.begin();
280 while (itMe != m_components.end()) {
281 if ( ! (*itMe)->equals((*itOther).get()) )