#!perl -w # this script generates cever_deps.h from cever_deps.cpp use strict; my @funcs; while (<>) { if (/^(.*?)\s*\b(\w+)_forver\b\((.*)\)/) { my ($resulttype, $name, $paramdecl)= ($1,$2,$3); my @paramdecls= split /,\s*/, $paramdecl; my @paramnames= map { /(\w+)\s*$/ } @paramdecls; my $commentedout=0; if ($resulttype=~/\/\/\s*(.*)/) { $commentedout=1; $resulttype= $1; } push @funcs, { commentedout=>$commentedout, result=>$resulttype, name=>$name, paramdecl=>join(", ", @paramdecls), paramnames=>join(", ", @paramnames), }; } } print <<__EOF__; #ifndef __KERNELINFO_H__ #include "procthreadstructs.h" #include "kernelmisc.h" #if 0 __EOF__ for my $cever(qw(300 420 500)) { print "#elif _WIN32_WCE==$cever\n"; printf("%s#define %s_forver %s%s\n", $_->{commentedout}?"//":"", $_->{name}, $_->{name}, $cever) for @funcs; } print <<__EOF__; #endif // macro to declare the various versions, and the version independent version #define XVERSION_DECLARE(name, result, paramdecl, paramlist) \\ result name##300 paramdecl; \\ result name##420 paramdecl; \\ result name##500 paramdecl; \\ inline result name paramdecl \\ { \\ switch (GetWinceVersion()) { \\ case 3: return name##300 paramlist; \\ case 4: return name##420 paramlist; \\ case 5: return name##500 paramlist; \\ default: return name##300 paramlist; \\ } \\ } __EOF__ printf("%sXVERSION_DECLARE(%s, %s, (%s), (%s))\n", $_->{commentedout}?"//":"", $_->{name}, $_->{result}, $_->{paramdecl}, $_->{paramnames}) for @funcs; print <<__EOF__; //------------------------------------- #define __KERNELINFO_H__ #endif __EOF__