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);
+  }
+}