Mercurial > projects > dil
diff trunk/src/dil/Enums.d @ 775:e76c9fdb83a3
DDocEmitter emits declaration attributes now.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Mon, 18 Feb 2008 22:59:56 +0100 |
parents | b60450804b6e |
children | 3b34f6a95a27 |
line wrap: on
line diff
--- a/trunk/src/dil/Enums.d Mon Feb 18 20:03:44 2008 +0100 +++ b/trunk/src/dil/Enums.d Mon Feb 18 22:59:56 2008 +0100 @@ -4,6 +4,8 @@ +/ module dil.Enums; +import common; + enum StorageClass { None = 0, @@ -28,11 +30,11 @@ enum Protection { None, - Private = 1, - Protected = 1<<1, - Package = 1<<2, - Public = 1<<3, - Export = 1<<4 + Private/+ = 1+/, + Protected/+ = 1<<1+/, + Package/+ = 1<<2+/, + Public/+ = 1<<3+/, + Export/+ = 1<<4+/ } enum LinkageType @@ -45,3 +47,70 @@ Pascal, System } + +string toString(Protection prot) +{ + switch (prot) + { alias Protection P; + case P.None: return ""; + case P.Private: return "private"; + case P.Protected: return "protected"; + case P.Package: return "package"; + case P.Public: return "public"; + case P.Export: return "export"; + default: + assert(0); + } +} + +/// Returns the string of a storage class. Only one bit may be set. +string toString(StorageClass stc) +{ + switch (stc) + { alias StorageClass SC; + case SC.Abstract: return "abstract"; + case SC.Auto: return "auto"; + case SC.Const: return "const"; + case SC.Deprecated: return "deprecated"; + case SC.Extern: return "extern"; + case SC.Final: return "final"; + case SC.Invariant: return "invariant"; + case SC.Override: return "override"; + case SC.Scope: return "scope"; + case SC.Static: return "static"; + case SC.Synchronized: return "synchronized"; + case SC.In: return "in"; + case SC.Out: return "out"; + case SC.Ref: return "ref"; + case SC.Lazy: return "lazy"; + case SC.Variadic: return "variadic"; + default: + assert(0); + } +} + +/// Returns the string . Any number of bits may be set. +string[] toStrings(StorageClass stc) +{ + string[] result; + for (auto i = StorageClass.max; i; i >>= 1) + if (stc & i) + result ~= toString(i); + return result; +} + +string toString(LinkageType ltype) +{ + switch (ltype) + { alias LinkageType LT; + case LT.None: return ""; + case LT.C: return "C"; + case LT.Cpp: return "Cpp"; + case LT.D: return "D"; + case LT.Windows: return "Windows"; + case LT.Pascal: return "Pascal"; + case LT.System: return "System"; + default: + assert(0); + } +}