diff options
-rw-r--r-- | src/mesa/main/nvprogram.c | 37 | ||||
-rw-r--r-- | src/mesa/main/nvprogram.h | 6 |
2 files changed, 41 insertions, 2 deletions
diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c index b6960c0df8a..207d705a184 100644 --- a/src/mesa/main/nvprogram.c +++ b/src/mesa/main/nvprogram.c @@ -1,4 +1,4 @@ -/* $Id: nvprogram.c,v 1.3 2003/02/16 23:07:36 brianp Exp $ */ +/* $Id: nvprogram.c,v 1.4 2003/02/23 05:23:53 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -141,6 +141,41 @@ _mesa_set_program_error(GLcontext *ctx, GLint pos, const char *string) } +const char * +_mesa_find_line_column(const char *string, const char *pos, + GLint *line, GLint *col) +{ + const char *lineStart = string; + const char *p = string; + char *s; + int len; + + *line = 1; + + while (p != pos) { + if (*p == '\n') { + (*line)++; + lineStart = p + 1; + } + p++; + } + + *col = (pos - lineStart) + 1; + + /* return copy of this line */ + while (*p != 0 && *p != '\n') + p++; + len = p - lineStart; + s = (char *) _mesa_malloc(len + 1); + _mesa_memcpy(s, lineStart, len); + s[len] = 0; + + return s; +} + + + + /** * Delete a program and remove it from the hash table, ignoring the * reference count. diff --git a/src/mesa/main/nvprogram.h b/src/mesa/main/nvprogram.h index 5d31ebba3bf..c58b0edf5d9 100644 --- a/src/mesa/main/nvprogram.h +++ b/src/mesa/main/nvprogram.h @@ -1,4 +1,4 @@ -/* $Id: nvprogram.h,v 1.2 2003/02/16 23:07:36 brianp Exp $ */ +/* $Id: nvprogram.h,v 1.3 2003/02/23 05:23:54 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -55,6 +55,10 @@ _mesa_assign_program_registers(struct symbol_table *symbolTable); extern void _mesa_set_program_error(GLcontext *ctx, GLint pos, const char *string); +extern const char * +_mesa_find_line_column(const char *string, const char *pos, + GLint *line, GLint *col); + extern void _mesa_delete_program(GLcontext *ctx, GLuint id); |