diff gen/utils.h @ 1228:79758fd2f48a

Added Doxygen file. Completely seperated type and symbol generation. Should fix a lot of bugs, but is not yet 100% complete.
author Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
date Wed, 15 Apr 2009 20:06:25 +0200
parents
children ec1d9dc1d32a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gen/utils.h	Wed Apr 15 20:06:25 2009 +0200
@@ -0,0 +1,46 @@
+#ifndef __LDC_GEN_UTILS_H__
+#define __LDC_GEN_UTILS_H__
+
+#include "root.h"
+
+/// Very simple templated iterator for DMD ArrayS.
+template<class C>
+struct ArrayIter
+{
+    Array& array;
+    size_t index;
+
+    ArrayIter(Array& arr, size_t idx = 0)
+    :   array(arr), index(idx)
+    { }
+
+    bool done()
+    {
+        return index >= array.dim;
+    }
+    bool more()
+    {
+        return index < array.dim;
+    }
+
+    C* get()
+    {
+        return static_cast<C*>(array.data[index]);
+    }
+    C* operator->()
+    {
+        return static_cast<C*>(array.data[index]);
+    }
+
+    void next()
+    {
+        ++index;
+    }
+};
+
+// some aliases
+typedef ArrayIter<Dsymbol> DsymbolIter;
+typedef ArrayIter<FuncDeclaration> FuncDeclarationIter;
+typedef ArrayIter<VarDeclaration> VarDeclarationIter;
+
+#endif