]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/lazy.qh
Small optimization
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / lazy.qh
1 #pragma once
2
3 #include "oo.qh"
4
5 CLASS(Lazy, Object)
6         ATTRIB(Lazy, m_get, entity());
7         CONSTRUCTOR(Lazy, entity() _compute)
8         {
9                 this.m_get = _compute;
10         }
11 ENDCLASS(Lazy)
12
13 #define LAZY(id) __lazy_##id
14 #define LAZY_NEW(id, compute) \
15         entity LAZY(id)() { \
16                 static bool done; \
17                 static entity it; \
18                 if (!done) { it = compute; done = true; } \
19                 return it; \
20         }