main.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <qdom.h>
00024 #include <qfile.h>
00025 #include <qtextstream.h>
00026 #include <qstring.h>
00027
00028 #include <string.h>
00029 #include <stdlib.h>
00030 #include <stdio.h>
00031 #include <unistd.h>
00032 #include "main.h"
00033
00034
00035
00036 void usage()
00037 {
00038 fprintf( stderr, "Usage: dcopidl2cpp [ --no-skel | --no-stub ] [--c++-suffix <suffix>] file\n" );
00039 }
00040
00041 int main( int argc, char** argv )
00042 {
00043
00044 if ( *qVersion() == '1' ) {
00045 fprintf( stderr, "dcopidl2cpp appears to be linked to Qt 1 instead of Qt 2 ! Aborting.\n" );
00046 exit(1);
00047 }
00048 int argpos = 1;
00049 bool generate_skel = TRUE;
00050 bool generate_stub = TRUE;
00051
00052 QString suffix = "cpp";
00053
00054 while (argc > 2) {
00055
00056 if ( strcmp( argv[argpos], "--no-skel" ) == 0 )
00057 {
00058 generate_skel = FALSE;
00059 for (int i = argpos; i < argc - 1; i++) argv[i] = argv[i+1];
00060 argc--;
00061 }
00062 else if ( strcmp( argv[argpos], "--no-stub" ) == 0 )
00063 {
00064 generate_stub = FALSE;
00065 for (int i = argpos; i < argc - 1; i++) argv[i] = argv[i+1];
00066 argc--;
00067 }
00068 else if ( strcmp( argv[argpos], "--no-signals" ) == 0 )
00069 {
00070
00071
00072 for (int i = argpos; i < argc - 1; i++) argv[i] = argv[i+1];
00073 argc--;
00074 }
00075 else if ( strcmp( argv[argpos], "--c++-suffix" ) == 0)
00076 {
00077 if (argc - 1 < argpos) {
00078 usage();
00079 exit(1);
00080 }
00081 suffix = argv[argpos+1];
00082 for (int i = argpos; i < argc - 2; i++) argv[i] = argv[i+2];
00083 argc -= 2;
00084 } else {
00085 usage();
00086 exit(1);
00087
00088 }
00089 }
00090
00091 QFile in( QFile::decodeName(argv[argpos]) );
00092 if ( !in.open( IO_ReadOnly ) )
00093 qFatal("Could not read %s", argv[argpos] );
00094
00095 QDomDocument doc;
00096 doc.setContent( &in );
00097
00098 QDomElement de = doc.documentElement();
00099 Q_ASSERT( de.tagName() == "DCOP-IDL" );
00100
00101 QString base( argv[argpos] );
00102 QString idl = base;
00103
00104 int pos = base.findRev( '.' );
00105 if ( pos != -1 )
00106 base = base.left( pos );
00107
00108 pos = idl.findRev('/');
00109 if ( pos != -1 )
00110 idl = idl.mid( pos+1 );
00111
00112 if ( generate_skel )
00113 generateSkel( idl, base + "_skel." + suffix, de );
00114
00115 if ( generate_stub ) {
00116 QString header = base;
00117 generateStub( idl, header + "_stub.h", de );
00118 pos = header.findRev('/');
00119 if ( pos != -1 )
00120 header = header.mid( pos+1 );
00121 generateStubImpl( idl, header + "_stub.h", base+".h", base + "_stub." + suffix, de);
00122 }
00123
00124 return 0;
00125 }
This file is part of the documentation for kdelibs Version 3.1.0.