Mercurial > projects > ldc
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