public void set(int id, boolean val) { if (val) { set(id, 1); } else { // Because #ifdef usage is very common in shaders, unset the define // instead of setting it to 0 for booleans. unset(id); } }
public void set(int id, VarType type, Object value) { if (value != null) { switch (type) { case Int: set(id, (Integer) value); break; case Float: set(id, (Float) value); break; case Boolean: set(id, ((Boolean) value)); break; default: set(id, 1); break; } } else { unset(id); } }
@Test public void testSourceBooleanDefine() { DefineList dl = new DefineList(NUM_DEFINES); dl.set(BOOL_VAR, true); assert dl.hashCode() == 1; assert generateSource(dl).equals("#define BOOL_VAR 1\n"); dl.set(BOOL_VAR, false); assert dl.hashCode() == 0; assert generateSource(dl).equals(""); dl.set(BOOL_VAR, true); assert dl.hashCode() == 1; assert generateSource(dl).equals("#define BOOL_VAR 1\n"); dl.unset(BOOL_VAR); assert dl.hashCode() == 0; assert generateSource(dl).equals(""); }
@Test public void testSourceIntDefine() { DefineList dl = new DefineList(NUM_DEFINES); int hashCodeWithInt = 1 << INT_VAR; dl.set(INT_VAR, 123); assert dl.hashCode() == hashCodeWithInt; assert generateSource(dl).equals("#define INT_VAR 123\n"); dl.set(INT_VAR, 0); assert dl.hashCode() == hashCodeWithInt; assert generateSource(dl).equals("#define INT_VAR 0\n"); dl.set(INT_VAR, -99); assert dl.hashCode() == hashCodeWithInt; assert generateSource(dl).equals("#define INT_VAR -99\n"); dl.set(INT_VAR, Integer.MAX_VALUE); assert dl.hashCode() == hashCodeWithInt; assert generateSource(dl).equals("#define INT_VAR 2147483647\n"); dl.unset(INT_VAR); assert dl.hashCode() == 0; assert generateSource(dl).equals(""); }
@Test public void testGenerateSource() { DefineList dl = new DefineList(NUM_DEFINES); assertEquals("", generateSource(dl)); dl.set(BOOL_VAR, true); assertEquals("#define BOOL_VAR 1\n", generateSource(dl)); dl.set(INT_VAR, 123); assertEquals("#define BOOL_VAR 1\n" + "#define INT_VAR 123\n", generateSource(dl)); dl.set(BOOL_VAR, false); assertEquals("#define INT_VAR 123\n", generateSource(dl)); dl.set(BOOL_VAR, true); // should have predictable ordering based on defineId assertEquals("#define BOOL_VAR 1\n" + "#define INT_VAR 123\n", generateSource(dl)); dl.unset(BOOL_VAR); assertEquals("#define INT_VAR 123\n", generateSource(dl)); }
public void set(int id, boolean val) { if (val) { set(id, 1); } else { // Because #ifdef usage is very common in shaders, unset the define // instead of setting it to 0 for booleans. unset(id); } }
public void set(int id, VarType type, Object value) { if (value != null) { switch (type) { case Int: set(id, (Integer) value); break; case Float: set(id, (Float) value); break; case Boolean: set(id, ((Boolean) value)); break; default: set(id, 1); break; } } else { unset(id); } }