diff trunk/src/dil/Symbol.d @ 567:ab9f5020cd02

Added 'is-methods' to class Symbol.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sat, 29 Dec 2007 14:44:09 +0100
parents c838ed7f2ac9
children c8861b452eb3
line wrap: on
line diff
--- a/trunk/src/dil/Symbol.d	Fri Dec 28 23:24:08 2007 +0100
+++ b/trunk/src/dil/Symbol.d	Sat Dec 29 14:44:09 2007 +0100
@@ -25,4 +25,18 @@
 class Symbol
 {
   SYM sid;
+
+  // A template macro for building isXYZ() methods.
+  private template is_(char[] kind)
+  {
+    const char[] is_ = `bool is`~kind~`(){ return sid == SYM.`~kind~`; }`;
+  }
+  mixin(is_!("Module"));
+  mixin(is_!("Class"));
+  mixin(is_!("Interface"));
+  mixin(is_!("Struct"));
+  mixin(is_!("Union"));
+  mixin(is_!("Variable"));
+  mixin(is_!("Function"));
+  mixin(is_!("Type"));
 }