summaryrefslogtreecommitdiff
path: root/src/parsetree.h
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-01-04 11:04:07 -0500
committerAdrian Thurston <thurston@complang.org>2015-01-04 11:04:07 -0500
commit7f6c8260b492b5bbc4213e22b98c8aa7a3a437ab (patch)
tree20aa51b787cdd6ea4788795a254081631b07f425 /src/parsetree.h
parentbce5c95fa055b7523349e1824d906b0debe4178e (diff)
downloadcolm-7f6c8260b492b5bbc4213e22b98c8aa7a3a437ab.tar.gz
cleanup in generics, using a single unique generic map
Diffstat (limited to 'src/parsetree.h')
-rw-r--r--src/parsetree.h185
1 files changed, 23 insertions, 162 deletions
diff --git a/src/parsetree.h b/src/parsetree.h
index f81fcc6b..e1b9b1c0 100644
--- a/src/parsetree.h
+++ b/src/parsetree.h
@@ -707,20 +707,16 @@ typedef Vector<Namespace*> NamespaceVect;
struct GenericType
: public DListEl<GenericType>
{
- GenericType( const String &name, long typeId, long id,
+ GenericType( long typeId, long id,
TypeRef *typeArg )
:
- name(name), typeId(typeId), id(id), /*langEl(0),*/
+ typeId(typeId), id(id),
typeArg(typeArg), keyTypeArg(0),
utArg(0), keyUT(0), objDef(0), elOffset(0)
{}
- const String &getKey() const
- { return name; };
-
void declare( Compiler *pd, Namespace *nspace );
- String name;
long typeId;
long id;
TypeRef *typeArg;
@@ -1885,176 +1881,41 @@ struct CmpUniqueRepeat
typedef AvlBasic< UniqueRepeat, CmpUniqueRepeat > UniqueRepeatMap;
/*
- * Unique Map Types
- */
-
-struct UniqueMap
- : public AvlTreeEl<UniqueMap>
-{
- UniqueMap( UniqueType *key, UniqueType *value ) :
- key(key), value(value), generic(0) {}
-
- UniqueType *key;
- UniqueType *value;
-
- GenericType *generic;
-};
-
-struct CmpUniqueMap
-{
- static int compare( const UniqueMap &ut1, const UniqueMap &ut2 );
-};
-
-typedef AvlBasic< UniqueMap, CmpUniqueMap > UniqueMapMap;
-
-/*
- * Unique List Types
+ * Unique Generics
*/
-struct UniqueList
- : public AvlTreeEl<UniqueList>
+struct UniqueGeneric
+ : public AvlTreeEl<UniqueGeneric>
{
- UniqueList( UniqueType *value ) :
- value(value), generic(0) {}
-
- UniqueType *value;
- GenericType *generic;
-};
-
-struct CmpUniqueList
-{
- static int compare( const UniqueList &ut1, const UniqueList &ut2 );
-};
-
-typedef AvlBasic< UniqueList, CmpUniqueList > UniqueListMap;
-
-/*
- * Unique Vector Types
- */
-
-struct UniqueVector
- : public AvlTreeEl<UniqueVector>
-{
- UniqueVector( UniqueType *value ) :
- value(value), generic(0) {}
-
- UniqueType *value;
- GenericType *generic;
-};
-
-struct CmpUniqueVector
-{
- static int compare( const UniqueVector &ut1, const UniqueVector &ut2 );
-};
-
-typedef AvlBasic< UniqueVector, CmpUniqueVector > UniqueVectorMap;
-
-/*
- * Unique Parser Types
- */
-
-struct UniqueParser
- : public AvlTreeEl<UniqueParser>
-{
- UniqueParser( UniqueType *parseType ) :
- parseType(parseType), generic(0) {}
-
- UniqueType *parseType;
- GenericType *generic;
-};
-
-struct CmpUniqueParser
-{
- static int compare( const UniqueParser &ut1, const UniqueParser &ut2 );
-};
-
-typedef AvlBasic< UniqueParser, CmpUniqueParser > UniqueParserMap;
-
-/*
- * Unique List2El Types
- */
-
-struct UniqueList2El
- : public AvlTreeEl<UniqueList2El>
-{
- UniqueList2El( UniqueType *value ) :
- value(value), generic(0) {}
-
- UniqueType *value;
- GenericType *generic;
-};
-
-struct CmpUniqueList2El
-{
- static int compare( const UniqueList2El &ut1, const UniqueList2El &ut2 );
-};
-
-typedef AvlBasic< UniqueList2El, CmpUniqueList2El > UniqueList2ElMap;
-
-/*
- * Unique List2 Types
- */
-
-struct UniqueList2
- : public AvlTreeEl<UniqueList2>
-{
- UniqueList2( UniqueType *value, int attrOff ) :
- value(value), attrOff(attrOff), generic(0) {}
-
- UniqueType *value;
- int attrOff;
- GenericType *generic;
-};
-
-struct CmpUniqueList2
-{
- static int compare( const UniqueList2 &ut1, const UniqueList2 &ut2 );
-};
-
-typedef AvlBasic< UniqueList2, CmpUniqueList2 > UniqueList2Map;
-
+ enum Type
+ {
+ List,
+ ListEl,
+ Map,
+ MapEl,
+ Parser
+ };
-/*
- * Unique Map2El Types
- */
+ UniqueGeneric( Type type, UniqueType *key, UniqueType *value ) :
+ type(type), key(key), value(value), generic(0) {}
-struct UniqueMap2El
- : public AvlTreeEl<UniqueMap2El>
-{
- UniqueMap2El( UniqueType *value ) :
- value(value), generic(0) {}
+ UniqueGeneric( Type type, UniqueType *value ) :
+ type(type), key(0), value(value), generic(0) {}
+ Type type;
+ UniqueType *key;
UniqueType *value;
GenericType *generic;
};
-struct CmpUniqueMap2El
+struct CmpUniqueGeneric
{
- static int compare( const UniqueMap2El &ut1, const UniqueMap2El &ut2 );
+ static int compare( const UniqueGeneric &ut1,
+ const UniqueGeneric &ut2 );
};
-typedef AvlBasic< UniqueMap2El, CmpUniqueMap2El > UniqueMap2ElMap;
-
-/*
- * Unique Map2 Types
- */
-
-struct UniqueMap2
- : public AvlTreeEl<UniqueMap2>
-{
- UniqueMap2( UniqueType *value ) :
- value(value), generic(0) {}
-
- UniqueType *value;
- GenericType *generic;
-};
-
-struct CmpUniqueMap2
-{
- static int compare( const UniqueMap2 &ut1, const UniqueMap2 &ut2 );
-};
+typedef AvlBasic< UniqueGeneric, CmpUniqueGeneric > UniqueGenericMap;
-typedef AvlBasic< UniqueMap2, CmpUniqueMap2 > UniqueMap2Map;
/*
*