-
Notifications
You must be signed in to change notification settings - Fork 5
/
affine.h
109 lines (92 loc) · 3.3 KB
/
affine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
This is affine.h
Coxeter version 3.0 Copyright (C) 2002 Fokko du Cloux
See file main.cpp for full copyright notice
*/
#ifndef AFFINE_H /* guarantee single inclusion */
#define AFFINE_H
#include "globals.h"
#include "coxgroup.h"
namespace affine {
using namespace coxeter;
//******** type declarations *************************************************
class AffineCoxGroup;
class AffineBigRankCoxGroup;
class GeneralABRCoxGroup;
class AffineMedRankCoxGroup;
class GeneralAMRCoxGroup;
class AffineSmallRankCoxGroup;
class GeneralASRCoxGroup;
//******** type definitions **************************************************
class AffineCoxGroup : public CoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(AffineCoxGroup));}
AffineCoxGroup(const Type& x, const Rank& l);
virtual ~AffineCoxGroup();
/* accessors */
CoxSize order() const; /* inlined */
};
class AffineBigRankCoxGroup : public AffineCoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(AffineBigRankCoxGroup));}
AffineBigRankCoxGroup(const Type& x, const Rank& l);
virtual ~AffineBigRankCoxGroup();
};
class GeneralABRCoxGroup:public AffineBigRankCoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(GeneralABRCoxGroup));}
GeneralABRCoxGroup(const Type& x, const Rank& l);
~GeneralABRCoxGroup();
};
class AffineMedRankCoxGroup : public AffineCoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(AffineMedRankCoxGroup));}
AffineMedRankCoxGroup(const Type& x, const Rank& l);
virtual ~AffineMedRankCoxGroup();
};
class GeneralAMRCoxGroup:public AffineMedRankCoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(GeneralAMRCoxGroup));}
GeneralAMRCoxGroup(const Type& x, const Rank& l);
~GeneralAMRCoxGroup();
};
class AffineSmallRankCoxGroup : public AffineMedRankCoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(AffineSmallRankCoxGroup));}
AffineSmallRankCoxGroup(const Type& x, const Rank& l);
virtual ~AffineSmallRankCoxGroup();
};
class GeneralASRCoxGroup:public AffineSmallRankCoxGroup {
public:
/* constructors and destructors */
void* operator new(size_t size) {return arena().alloc(size);}
void operator delete(void* ptr)
{return arena().free(ptr,sizeof(GeneralASRCoxGroup));}
GeneralASRCoxGroup(const Type& x, const Rank& l);
~GeneralASRCoxGroup();
};
//******* Inline implementations ******************************************
/**
Return the order of this Coxeter group, which is infinite.
*/
inline CoxSize AffineCoxGroup::order() const {return infinite_coxsize;}
}
#endif