Now a declaration like 'struct Foo;' can be used to establish the name of a struct type, without providing a definition. One can pass pointers to such types around the system, but can't do much else with them (as in C/C++). Issue #125.
37 lines
565 B
Plaintext
37 lines
565 B
Plaintext
|
|
export uniform int width() { return programCount; }
|
|
|
|
struct Foo;
|
|
|
|
void bing(Foo * uniform);
|
|
|
|
struct Foo {
|
|
int i;
|
|
varying float f;
|
|
Foo * uniform next;
|
|
};
|
|
|
|
void bar(Foo * uniform f) {
|
|
bing(f);
|
|
}
|
|
|
|
|
|
export void f_f(uniform float RET[], uniform float aFOO[]) {
|
|
uniform Foo fa, fb;
|
|
fa.next = &fb;
|
|
fb.f = aFOO[programIndex];
|
|
fb.i = 100;
|
|
bar(&fa);
|
|
RET[programIndex] = fb.f;
|
|
}
|
|
|
|
|
|
void bing(Foo * uniform f) {
|
|
f = f->next;
|
|
f->f *= 2;
|
|
}
|
|
|
|
export void result(uniform float RET[]) {
|
|
RET[programIndex] = 2 + 2*programIndex;
|
|
}
|