Program to convert .syn file to .h headers.
This commit is contained in:
72
src/mesa/shader/slang/library/syn_to_c.c
Normal file
72
src/mesa/shader/slang/library/syn_to_c.c
Normal file
@@ -0,0 +1,72 @@
|
||||
#include <stdio.h>
|
||||
|
||||
static int was_space = 0;
|
||||
static int first_char = 1;
|
||||
|
||||
static void put_char (int c)
|
||||
{
|
||||
if (c == '\n') {
|
||||
if (!first_char) {
|
||||
fputs ("\\n\"\n\"", stdout);
|
||||
first_char = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
first_char = 0;
|
||||
if (c == '\\')
|
||||
fputs ("\\\\", stdout);
|
||||
else if (c == '\"')
|
||||
fputs ("\\\"", stdout);
|
||||
else if (!was_space || !(c == ' ' || c == '\t'))
|
||||
fputc (c, stdout);
|
||||
was_space = (c == ' ' || c == '\t');
|
||||
}
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
int c;
|
||||
FILE *f;
|
||||
|
||||
if (argc == 1)
|
||||
return 1;
|
||||
f = fopen (argv[1], "r");
|
||||
if (f == NULL)
|
||||
return 1;
|
||||
|
||||
fputs ("\n", stdout);
|
||||
fputs ("/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */\n", stdout);
|
||||
fputs ("\n", stdout);
|
||||
fputs ("\"", stdout);
|
||||
c = getc (f);
|
||||
while (c != EOF) {
|
||||
if (c == '/') {
|
||||
int c2 = getc (f);
|
||||
if (c2 == '*') {
|
||||
was_space = 0;
|
||||
c = getc (f);
|
||||
for (;;) {
|
||||
if (c == '*') {
|
||||
c2 = getc (f);
|
||||
if (c2 == '/')
|
||||
break;
|
||||
}
|
||||
c = getc (f);
|
||||
}
|
||||
}
|
||||
else {
|
||||
put_char (c);
|
||||
put_char (c2);
|
||||
}
|
||||
}
|
||||
else {
|
||||
put_char (c);
|
||||
}
|
||||
c = getc (f);
|
||||
}
|
||||
fputs ("\"\n", stdout);
|
||||
|
||||
fclose (f);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user