[go: up one dir, main page]

File: xml2cpp.pl

package info (click to toggle)
coin3 3.1.3-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 48,344 kB
  • ctags: 70,042
  • sloc: cpp: 314,328; ansic: 15,927; sh: 13,635; makefile: 8,780; perl: 2,149; lex: 1,302; lisp: 1,247; yacc: 184; xml: 175; sed: 68
file content (43 lines) | stat: -rwxr-xr-x 1,021 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env perl

if (scalar(@ARGV) != 3) {
    print STDOUT "Usage: $0 <input.xml> <output.cpp> <buffername>\n";
    exit -1;
}

open(XML, "+<", "$ARGV[0]") || die "$0: error opening xml input: $_\n";
open(OUT, "> $ARGV[1]") || die "$0: error opening output for writing: $_\n";

$perline = 12;

$counter = 0;
printf(OUT "static const unsigned char " . $ARGV[2] . "[] = {\n");
$text = "";

while ( !eof(XML) ) {
    $char = getc(XML);
    if (($counter % $perline) == 0) {
        printf(OUT "  ");
    }
    printf(OUT "0x%02x,", ord($char));
    if ($char =~ m/\p{IsPrint}/ && $char !~ m/[\n\r]/) {
      $text = $text . $char;
    } else {
      $text = $text . "?";
    }
    if ((($counter % $perline) == ($perline - 1)) || ($char =~ m/[\n]/)) {
        printf(OUT " // '" . $text . "'\n");
        $text = "";
        $counter = $perline - 1;
    }
    $counter++;
}
if (($counter % $perline) == 0) {
    printf(OUT "  ");
}
printf(OUT "0x00 // '" . $text . "'\n");
printf(OUT "};\n");


close(OUT);
close(XML);