]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/regex/mkh
1.
[wxWidgets.git] / src / regex / mkh
... / ...
CommitLineData
1#! /bin/sh
2# mkh - pull headers out of C source
3PATH=/bin:/usr/bin ; export PATH
4
5# egrep pattern to pick out marked lines
6egrep='^ =([ ]|$)'
7
8# Sed program to process marked lines into lines for the header file.
9# The markers have already been removed. Two things are done here: removal
10# of backslashed newlines, and some fudging of comments. The first is done
11# because -o needs to have prototypes on one line to strip them down.
12# Getting comments into the output is tricky; we turn C++-style // comments
13# into /* */ comments, after altering any existing */'s to avoid trouble.
14peel=' /\\$/N
15 /\\\n[ ]*/s///g
16 /\/\//s;\*/;* /;g
17 /\/\//s;//\(.*\);/*\1 */;'
18
19for a
20do
21 case "$a" in
22 -o) # old (pre-function-prototype) compiler
23 # add code to comment out argument lists
24 peel="$peel
25 "'/^\([^#\/][^\/]*[a-zA-Z0-9_)]\)(\(.*\))/s;;\1(/*\2*/);'
26 shift
27 ;;
28 -b) # funny Berkeley __P macro
29 peel="$peel
30 "'/^\([^#\/][^\/]*[a-zA-Z0-9_)]\)(\(.*\))/s;;\1 __P((\2));'
31 shift
32 ;;
33 -s) # compiler doesn't like `static foo();'
34 # add code to get rid of the `static'
35 peel="$peel
36 "'/^static[ ][^\/]*[a-zA-Z0-9_)](.*)/s;static.;;'
37 shift
38 ;;
39 -p) # private declarations
40 egrep='^ ==([ ]|$)'
41 shift
42 ;;
43 -i) # wrap in #ifndef, argument is name
44 ifndef="$2"
45 shift ; shift
46 ;;
47 *) break
48 ;;
49 esac
50done
51
52if test " $ifndef" != " "
53then
54 echo "#ifndef $ifndef"
55 echo "#define $ifndef /* never again */"
56fi
57echo "/* ========= begin header generated by $0 ========= */"
58echo '#ifdef __cplusplus'
59echo 'extern "C" {'
60echo '#endif'
61for f
62do
63 echo
64 echo "/* === $f === */"
65 egrep "$egrep" $f | sed 's/^ ==*[ ]//;s/^ ==*$//' | sed "$peel"
66 echo
67done
68echo '#ifdef __cplusplus'
69echo '}'
70echo '#endif'
71echo "/* ========= end header generated by $0 ========= */"
72if test " $ifndef" != " "
73then
74 echo "#endif"
75fi
76exit 0