#!/usr/bin/env python # # regenerate ioctl_table.h # import sys import os result = os.popen( 'find /usr/include -name "*.h" |xargs grep -h SIOC|grep 0x' ).readlines() try: tablehfile = file( sys.argv[1]+".h", "w" ) except: tablehfile = sys.stdout try: tablecfile = file( sys.argv[1]+".cpp", "w" ) except: tablecfile = sys.stdout print >>tablehfile,""" /* * debug value mapper - generated by regen.py - (C) Michael 'Mickey' Lauer */ #ifndef DEBUGMAPPER_H #define DEBUGMAPPER_H #include #include typedef QIntDict IntStringMap; class DebugMapper { public: DebugMapper(); ~DebugMapper(); const QString& map( int value ) const; private: IntStringMap _map; }; #endif """ print >>tablecfile,""" /* * debug value mapper - generated by regen.py - (C) Michael 'Mickey' Lauer */ #include #include "%s" DebugMapper::DebugMapper() { odebug << "DebugMapper::DebugMapper()" << oendl; """ % (tablehfile.name) for line in result: l = line.split() if not l[0].startswith( "#define" ) or not l[2].startswith( "0x" ): print >>sys.stderr, "can't parse line: %s" % l continue print >>tablecfile, " _map.insert( %s, new QString(\"%s\") );" % ( l[2], l[1] ) print >>tablecfile,""" }; DebugMapper::~DebugMapper() { odebug << "DebugMapper::~DebugMapper()" << oendl; } const QString& DebugMapper::map( int value ) const { QString* result = _map[ value ]; if ( !result ) { owarn << "DebugMapper::map() - value " << value << " is not found." << oendl; return QString::null; } else { return *result; } } """