1
0
mirror of https://github.com/pConst/basic_verilog.git synced 2025-01-28 07:02:55 +08:00
Konstantin Pavlov (pt) 40533743d7 Added altera cookbook
2015-12-15 22:44:58 +03:00

139 lines
3.7 KiB
C++

// Copyright 2008 Altera Corporation. All rights reserved.
// Altera products are protected under numerous U.S. and foreign patents,
// maskwork rights, copyrights and other intellectual property laws.
//
// This reference design file, and your use thereof, is subject to and governed
// by the terms and conditions of the applicable Altera Reference Design
// License Agreement (either as signed by you or found at www.altera.com). By
// using this reference design file, you indicate your acceptance of such terms
// and conditions between you and Altera Corporation. In the event that you do
// not agree with such terms and conditions, you may not use the reference
// design file and please promptly destroy any copies you have made.
//
// This reference design file is being provided on an "as-is" basis and as an
// accommodation and therefore all warranties, representations or guarantees of
// any kind (whether express, implied or statutory) including, without
// limitation, warranties of merchantability, non-infringement, or fitness for
// a particular purpose, are specifically disclaimed. By making this reference
// design file available, Altera expressly does not recommend, suggest or
// require that this reference design file be used in combination with any
// other product not provided by Altera.
/////////////////////////////////////////////////////////////////////////////
// baeckler - 11-28-2005
// Standalone utility to make it easier to replicate TXT files from coconut.
//
// $Log: /pvcs/newarch/coconut/txt_to_c.cp_ $
//
// Rev 1.1 15 May 2007 14:57:50 chkyeoh
// port to linux
// PN, Tue May 15 10:57:48 2007
//
// Rev 1.0 29 Nov 2005 11:21:24 baeckler
// Init rev
//
// SJ, Mon Nov 28 15:20:51 2005
//
#include <stdio.h>
#include <string.h>
bool drop_leading_pound = false;
bool drop_blank_lines = false;
int main (int argc, char *argv[])
{
FILE * f = NULL;
char buffer[4096];
char buffer2[4096];
int n=0,k=0;
int len = 0;
if (argc != 2 && argc != 3)
{
fprintf (stdout,"Convert text file to C dump file function\n");
fprintf (stdout,"Usage : %s (filename) (optional filter)\n",argv[0]);
fprintf (stdout," filter Q - QSFs\n");
return (0);
}
f = fopen (argv[1],"rt");
if (!f)
{
fprintf (stdout,"Unable to read %s",argv[1]);
return (0);
}
if (argc == 3 &&
(argv[2][0] == 'Q' || argv[2][0] == 'q'))
{
drop_leading_pound = true;
drop_blank_lines = true;
}
fprintf (stdout,"#include <stdio.h>\n\n");
fprintf (stdout,"int main (void)\n");
fprintf (stdout,"{\n");
fprintf (stdout," FILE * f = fopen (\"%s_new\",\"wt\");\n",argv[1]);
fprintf (stdout," if (!f) return 1;\n\n");
while (!feof(f))
{
if (fgets (buffer,sizeof(buffer),f))
{
// strip off CRLF
len = strlen(buffer);
while (len > 0 && (buffer[len-1] == 0xa || buffer[len-1] == 0xd))
{
buffer[len-1] = 0;
len--;
}
// if they say " they mean \"
// if they say \ they mean two of them
// if they say % they mean two of them
k=0;
for (n=0;n<len;n++)
{
if (buffer[n] == '"')
{
buffer2[k++]='\\';
}
else if (buffer[n] == '\\')
{
buffer2[k++]='\\';
}
else if (buffer[n] == '%')
{
buffer2[k++]='%';
}
buffer2[k++] = buffer[n];
}
buffer2[k++] = 0;
// spit out print instruction
if (drop_leading_pound &&
buffer2[0] == '#')
{
// skip this
}
else if (drop_blank_lines &&
buffer2[0] == 0)
{
// skip this
}
else
{
fprintf (stdout," fprintf (f,\"%s\\n\");\n",buffer2);
}
}
}
fprintf (stdout," fclose (f);\n");
fprintf (stdout," return (0);\n");
fprintf (stdout,"}\n");
fclose (f);
return (0);
}