added _mesa_find_line_column()
authorBrian Paul <brian.paul@tungstengraphics.com>
Sun, 23 Feb 2003 05:23:53 +0000 (05:23 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sun, 23 Feb 2003 05:23:53 +0000 (05:23 +0000)
src/mesa/main/nvprogram.c
src/mesa/main/nvprogram.h

index b6960c0df8abfdcbf232a7e0321816856ea8d01d..207d705a18428ea2bfb5e75cbd7015a13f261363 100644 (file)
@@ -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.
index 5d31ebba3bf9b9705b9b38fe9ede654b7476464d..c58b0edf5d9a189b306866165fccebb262ed2d53 100644 (file)
@@ -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);