| #ifndef SLANG_LABEL_H |
| #define SLANG_LABEL_H 1 |
| |
| #include "main/imports.h" |
| #include "main/mtypes.h" |
| #include "shader/prog_instruction.h" |
| |
| |
| struct slang_label_ |
| { |
| char *Name; |
| GLint Location; |
| /** |
| * List of instruction references (numbered starting at zero) which need |
| * their BranchTarget field filled in with the location eventually |
| * assigned to the label. |
| */ |
| GLuint NumReferences; |
| GLuint *References; /** Array [NumReferences] */ |
| }; |
| |
| typedef struct slang_label_ slang_label; |
| |
| |
| extern slang_label * |
| _slang_label_new(const char *name); |
| |
| extern slang_label * |
| _slang_label_new_unique(const char *name); |
| |
| extern void |
| _slang_label_delete(slang_label *l); |
| |
| extern void |
| _slang_label_add_reference(slang_label *l, GLuint inst); |
| |
| extern GLint |
| _slang_label_get_location(const slang_label *l); |
| |
| extern void |
| _slang_label_set_location(slang_label *l, GLint location, |
| struct gl_program *prog); |
| |
| |
| #endif /* SLANG_LABEL_H */ |