├── jmess ├── TODO.txt ├── src │ ├── build │ ├── jmess.pro │ ├── JMess.h │ ├── jmess_main.cpp │ └── JMess.cpp └── INSTALL.txt ├── m_doxygen ├── LICENSE ├── README.md └── jmess_doxygen /jmess/TODO.txt: -------------------------------------------------------------------------------- 1 | Probably add the option to disconnect from an XML file 2 | -------------------------------------------------------------------------------- /m_doxygen: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -r /user/j/jcaceres/Library/Web/jmess/* 4 | 5 | doxygen jmess_doxygen 6 | 7 | chmod -R o+rx /user/j/jcaceres/Library/Web/jmess 8 | 9 | -------------------------------------------------------------------------------- /jmess/src/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ## Created by Juan-Pablo Caceres 3 | 4 | # Check for Platform 5 | platform='unknown' 6 | unamestr=`uname` 7 | if [[ "$unamestr" == 'Linux' ]]; then 8 | echo "Building on Linux" 9 | platform='linux' 10 | elif [[ "$unamestr" == 'Darwin' ]]; then 11 | echo "Building on Mac OS X" 12 | platform='macosx' 13 | fi 14 | 15 | # Set qmake command name 16 | if [[ $platform == 'linux' ]]; then 17 | if hash qmake-qt5 2>/dev/null; then 18 | echo "Using qmake-qt5" 19 | QCMD=qmake-qt5 20 | elif hash qmake-qt4 2>/dev/null; then 21 | echo "Using qmake-qt4" 22 | QCMD=qmake-qt4 23 | elif hash qmake 2>/dev/null; then #in case qt was compiled by user 24 | echo "Using qmake" 25 | QCMD=qmake 26 | fi 27 | QSPEC=linux-g++ 28 | elif [[ $platform == 'macosx' ]]; then 29 | QCMD=qmake 30 | fi 31 | 32 | # Build 33 | $QCMD jmess.pro 34 | make clean 35 | $QCMD jmess.pro 36 | make release 37 | 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | JMess: A simple utility so save your jack-audio mess. 2 | 3 | Copyright (C) 2020 Juan-Pablo Caceres. 4 | 5 | Permission is hereby granted, free of charge, to any person 6 | obtaining a copy of this software and associated documentation 7 | files (the "Software"), to deal in the Software without 8 | restriction, including without limitation the rights to use, 9 | copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the 11 | Software is furnished to do so, subject to the following 12 | conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /jmess/src/jmess.pro: -------------------------------------------------------------------------------- 1 | #****************************** 2 | # Created by Juan-Pablo Caceres 3 | #****************************** 4 | 5 | CONFIG += qt thread debug_and_release build_all 6 | CONFIG(debug, debug|release) { 7 | TARGET = jmess_debug 8 | } else { 9 | TARGET = jmess 10 | } 11 | QT -= gui 12 | QT += xml 13 | 14 | !win32 { 15 | INCLUDEPATH+=/usr/local/include 16 | LIBS += -L/usr/local/lib -ljack -lm 17 | } 18 | 19 | macx { 20 | message(MAC OS X) 21 | CONFIG -= app_bundle 22 | CONFIG += x86 23 | DEFINES += __MAC_OSX__ 24 | } 25 | linux-g++ { 26 | message(Linux) 27 | LIBS += -lasound 28 | QMAKE_CXXFLAGS += -D__LINUX_ALSA__ #-D__LINUX_OSS__ #RtAudio Flags 29 | QMAKE_CXXFLAGS += -g -O2 30 | DEFINES += __LINUX__ 31 | } 32 | linux-g++-64 { 33 | message(Linux 64bit) 34 | LIBS += -lasound 35 | QMAKE_CXXFLAGS += -fPIC -D__LINUX_ALSA__ #-D__LINUX_OSS__ #RtAudio Flags 36 | QMAKE_CXXFLAGS += -g -O2 37 | DEFINES += __LINUX__ 38 | } 39 | 40 | DESTDIR = . 41 | QMAKE_CLEAN += -r ./jmess ./jmess_debug ./release ./debug 42 | target.path = /usr/bin 43 | INSTALLS += target 44 | 45 | 46 | # Input 47 | HEADERS += JMess.h 48 | SOURCES += JMess.cpp \ 49 | jmess_main.cpp 50 | 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JMess - A utility to save your audio connections (mess) # 2 | 3 | JMess can save an XML file with all the current [Jack Audio](http://jackaudio.org/) connections. This same file can be loaded to connect everything again. The XML file can also be edited. It also also has the option to disconnect all the clients. 4 | 5 | ## Download and Installation ## 6 | There is a Linux and a Mac OS X version of JMees. To install just download, uncompress, and follow the instrunctions on `INSTALL.txt`. 7 | 8 | ## Using JMess ## 9 | 10 | To save connections on Jack, use for example [QjackCtl](http://qjackctl.sourceforge.net/) to make the connections you need. To save them, just type in the command line: 11 | 12 | `jmess -s filename.xml` 13 | 14 | This will save your connections in a file filename.xml. This is an XML file that you can edit, if you want. 15 | 16 | To load your connections from a file, just type: 17 | 18 | `jmess -c filename.xml` 19 | 20 | Note that if you have connections running, the command above is going to connect what was saved on the filename.xml, keeping the connections that you have. If you want to get exactly what was saved on filename.xml, use the flag -d to disonnect all: 21 | 22 | `jmess -d -c filename.xml` 23 | 24 | If you just want to disconnect all from the command line: 25 | 26 | `jmess -d` 27 | 28 | For a complete list of options, just type: 29 | 30 | `jmess` 31 | -------------------------------------------------------------------------------- /jmess/INSTALL.txt: -------------------------------------------------------------------------------- 1 | jmess : Build Instructions for Linux and MacOS X 2 | 3 | jmess can save an XML file with all the current jack connections. This same file can 4 | be loaded to connect evrything again. The XML file can also be edited. 5 | It alse also has the option to disconnect all the clients. 6 | 7 | --- 8 | MacOS X (10.4 or higher) Installation: 9 | 10 | If you are installing on MacOS X, a binary is provided. You just need to have JackOSX installed on your machine 11 | http://www.jackosx.com/ 12 | 13 | TO install (using Terminal): go to bin/ directory and type: 14 | 15 | sudo cp jmess /usr/bin/ 16 | (enter your password when prompted) 17 | 18 | sudo chmod 755 /usr/bin/jmess 19 | (now you can run jmess from any directory using Terminal) 20 | 21 | --- 22 | Dependencies: 23 | 24 | You need to have installed the libraries in your system: 25 | qt4-devel 26 | jack-audio-connection-kit-devel 27 | 28 | If you are using yum (in Fedora Core 12 for example) you can just install 29 | them (as root) with: 30 | yum install qt4-devel jack-audio-connection-kit-devel 31 | 32 | 33 | If you want to build on MacOS X, you need JackOSX 34 | http://www.jackosx.com/ 35 | and Qt 4.2 or higher. A Binary installer is porvided at: 36 | http://www.trolltech.com/download?target=ftp://ftp.trolltech.com/qt/source/qt-mac-opensource-4.3.0.dmg 37 | 38 | 39 | --- 40 | Build: 41 | 42 | to build on Linux or Mac OS X, just go to the /src directory and type the following two command: 43 | 44 | ./build 45 | 46 | 47 | If evreything works fine, you will have the excecutable jmess ready to use. It is located at the ../bin directory. If you wish, you can install it in your system. Just type (as root): 48 | 49 | make install 50 | 51 | If you want to uninstall: 52 | 53 | make uninstall 54 | 55 | 56 | --- 57 | Usage: 58 | 59 | For a list a commands, just type: 60 | ./jmess 61 | 62 | If you want to save your current connections (connected with qjackctl for example) 63 | just type: 64 | 65 | ./jmess -s filename.xml 66 | 67 | All your connections are saved in filename.xml. 68 | 69 | If you want to load them: 70 | ./jmess -c filename.xml 71 | 72 | And if you first want to disconnect all and the load the saved connections: 73 | ./jmess -d -c filename.xml 74 | 75 | If you just want to disconnect all: 76 | ./jmess -d 77 | 78 | 79 | --- 80 | Juan-Pablo Caceres 81 | Please contact me with bugs, suggestions at: 82 | jcaceres [at] ccrma [dot] stanford [dot] edu 83 | 84 | -------------------------------------------------------------------------------- /jmess/src/JMess.h: -------------------------------------------------------------------------------- 1 | /* 2 | JMess: A simple utility so save your jack-audio mess. 3 | 4 | Copyright (C) 2007-2010 Juan-Pablo Caceres. 5 | 6 | Permission is hereby granted, free of charge, to any person 7 | obtaining a copy of this software and associated documentation 8 | files (the "Software"), to deal in the Software without 9 | restriction, including without limitation the rights to use, 10 | copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following 13 | conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | 29 | /* 30 | * JMess.h 31 | */ 32 | 33 | #ifndef __JMESS_H 34 | #define __JMESS_H 35 | 36 | #include 37 | #include 38 | #include 39 | 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | 48 | #include 49 | 50 | using namespace std; 51 | 52 | const int Indent = 2; 53 | 54 | //------------------------------------------------------------------------------- 55 | /*! \brief Class to save and load all jack client connections. 56 | * 57 | * Saves an XML file with all the current jack connections. This same file can 58 | * be loaded to connect evrything again. The XML file can also be edited. 59 | * 60 | * Has also an option to disconnect all the clients. 61 | */ 62 | //------------------------------------------------------------------------------- 63 | class JMess { 64 | 65 | public: 66 | JMess(); 67 | virtual ~JMess(); 68 | 69 | void disconnectAll(); 70 | void writeOutput(QString xmlOutFile); 71 | void connectPorts(QString xmlInFile); 72 | 73 | private: 74 | void setConnectedPorts(); 75 | int parseXML(QString xmlInFile); 76 | 77 | jack_client_t *mClient; //Class client 78 | jack_status_t mStatus; //Class client status 79 | 80 | //Vectors of Connected Ports and Ports to connects 81 | //This are a matrix (Nx2) of string like this: 82 | //OuputPort1 InputPort1 83 | // ... 84 | //OuputPortN InputPortN 85 | QVector > mConnectedPorts; 86 | QVector > mPortsToConnect; 87 | }; 88 | #endif 89 | -------------------------------------------------------------------------------- /jmess/src/jmess_main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | JMess: A simple utility so save your jack-audio mess. 3 | 4 | Copyright (C) 2007-2010 Juan-Pablo Caceres. 5 | 6 | Permission is hereby granted, free of charge, to any person 7 | obtaining a copy of this software and associated documentation 8 | files (the "Software"), to deal in the Software without 9 | restriction, including without limitation the rights to use, 10 | copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following 13 | conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | 29 | #include 30 | #include 31 | #include 32 | #include // for command line parsing 33 | 34 | #include "JMess.h" 35 | //#include "anyoption.h" 36 | 37 | using namespace std; 38 | 39 | void main_dialog( int argc, char* argv[] ); 40 | void printUsage(); 41 | string version = "1.0.3"; 42 | 43 | 44 | //******************************************************************************* 45 | int main(int argc, char** argv) 46 | { 47 | main_dialog( argc, argv ); 48 | return 0; 49 | } 50 | 51 | 52 | //******************************************************************************* 53 | void main_dialog( int argc, char* argv[] ) 54 | { 55 | 56 | // If no command arguments are given, print instructions 57 | if(argc == 1) { 58 | printUsage(); 59 | std::exit(0); 60 | } 61 | 62 | //Create JMess Object for the following flags 63 | JMess jmessClient; 64 | 65 | // Usage example at: 66 | // http://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Option-Example.html#Getopt-Long-Option-Example 67 | // options descriptor 68 | //---------------------------------------------------------------------------- 69 | static struct option longopts[] = { 70 | // These options don't set a flag. 71 | { "disconnectall", no_argument, NULL, 'd' }, 72 | { "connect", required_argument, NULL, 'c' }, 73 | { "save", required_argument, NULL, 's' }, 74 | { "DisconnectAll", no_argument, NULL, 'D' }, 75 | { "version", no_argument, NULL, 'v' }, // Version Number 76 | { "help", no_argument, NULL, 'h' }, // Print Help 77 | { NULL, 0, NULL, 0 } 78 | }; 79 | 80 | 81 | // Parse Command Line Arguments 82 | //---------------------------------------------------------------------------- 83 | /// \todo Specify mandatory arguments 84 | string answer = ""; 85 | int ch; 86 | while ( (ch = getopt_long(argc, argv, 87 | "dc:s:Dvh", longopts, NULL)) != -1 ) 88 | switch (ch) { 89 | case 'd': 90 | //------------------------------------------------------- 91 | //Confirm before disconnection 92 | while ((answer != "yes") && (answer != "no")) { 93 | cout << "Are you sure you want to disconnect all? (yes/no): "; 94 | cin >> answer; 95 | } 96 | if (answer == "yes") { 97 | jmessClient.disconnectAll(); 98 | } 99 | break; 100 | case 'c': 101 | //------------------------------------------------------- 102 | jmessClient.connectPorts(optarg); 103 | break; 104 | case 's': 105 | //------------------------------------------------------- 106 | jmessClient.writeOutput( optarg ); 107 | break; 108 | case 'D': 109 | //------------------------------------------------------- 110 | jmessClient.disconnectAll(); 111 | break; 112 | case 'v': 113 | //------------------------------------------------------- 114 | cout << "JMess VERSION: " << version << endl; 115 | cout << "Copyright (c) 2007-2015 Juan-Pablo Caceres." << endl; 116 | cout << "SoundWIRE group at CCRMA, Stanford University" << endl; 117 | cout << "" << endl; 118 | std::exit(0); 119 | break; 120 | case 'h': 121 | //------------------------------------------------------- 122 | printUsage(); 123 | break; 124 | } 125 | 126 | // Warn user if undefined options where entered 127 | //---------------------------------------------------------------------------- 128 | if (optind < argc) { 129 | cout << "------------------------------------------------------" << endl; 130 | cout << "WARINING: The following entered options have no effect" << endl; 131 | cout << " They will be ignored!" << endl; 132 | cout << " Type jmess to see options." << endl; 133 | for( ; optind < argc; optind++) { 134 | printf("argument: %s\n", argv[optind]); 135 | } 136 | cout << "------------------------------------------------------" << endl; 137 | } 138 | } 139 | 140 | 141 | //******************************************************************************* 142 | void printUsage() 143 | { 144 | cout << "" << endl; 145 | cout << "JMess: A simple utility so save your jack-audio mess." << endl; 146 | cout << "Copyright (C) 2007-2016 Juan-Pablo Caceres." << endl; 147 | cout << "VERSION: " << version << endl; 148 | cout << "" << endl; 149 | cout << "Usage: " << endl; 150 | cout << "--------------------------------------------" << endl; 151 | cout << " -h --help Prints this help" << endl; 152 | cout << " -c --connect inputfile.xml Load the connections specified at inputfile.xml" << endl; 153 | cout << " -s --save outputfile.xml Save current connections in output.xml" << endl; 154 | cout << " -d --disconnectall Disconnect all the connections" << endl; 155 | cout << " -D --DisconnectAll Disconnect all the connections without confirmation" << endl; 156 | cout << "" << endl; 157 | } 158 | -------------------------------------------------------------------------------- /jmess/src/JMess.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | JMess: A simple utility so save your jack-audio mess. 3 | 4 | Copyright (C) 2007-2010 Juan-Pablo Caceres. 5 | 6 | Permission is hereby granted, free of charge, to any person 7 | obtaining a copy of this software and associated documentation 8 | files (the "Software"), to deal in the Software without 9 | restriction, including without limitation the rights to use, 10 | copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following 13 | conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | 29 | /* 30 | * JMess.cpp 31 | */ 32 | 33 | #include "JMess.h" 34 | 35 | 36 | //------------------------------------------------------------------------------- 37 | /*! \brief Constructs a JMess object that has a jack client. 38 | * 39 | */ 40 | //------------------------------------------------------------------------------- 41 | JMess::JMess() 42 | { 43 | //Open a client connection to the JACK server. Starting a 44 | //new server only to list its ports seems pointless, so we 45 | //specify JackNoStartServer. 46 | mClient = jack_client_open ("lsp", JackNoStartServer, &mStatus); 47 | if (mClient == NULL) { 48 | if (mStatus & JackServerFailed) { 49 | cerr << "JACK server not running" << endl; 50 | } else { 51 | cerr << "jack_client_open() failed, " 52 | << "status = 0x%2.0x\n" << mStatus << endl; 53 | } 54 | exit(1); 55 | } 56 | } 57 | 58 | 59 | //------------------------------------------------------------------------------- 60 | /*! \brief Distructor closes the jmess jack audio client. 61 | * 62 | */ 63 | //------------------------------------------------------------------------------- 64 | JMess::~JMess() 65 | { 66 | if (jack_client_close(mClient)) 67 | cerr << "ERROR: Could not close the hidden jmess jack client." << endl; 68 | } 69 | 70 | 71 | //------------------------------------------------------------------------------- 72 | /*! \brief Write an XML file with the name specified at xmlOutFile. 73 | * 74 | */ 75 | //------------------------------------------------------------------------------- 76 | void JMess::writeOutput(QString xmlOutFile) 77 | { 78 | QDomDocument jmess_xml; QDomElement root; 79 | QDomElement connection; QDomElement output; 80 | QDomElement input; QDomText output_name; 81 | QDomText input_name; 82 | 83 | QVector OutputInput(2); 84 | 85 | this->setConnectedPorts(); 86 | 87 | root = jmess_xml.createElement("jmess"); 88 | for (QVector >::iterator it = mConnectedPorts.begin(); 89 | it != mConnectedPorts.end(); ++it) { 90 | OutputInput = *it; 91 | //cout << "Output ===> " < " <> answer; 115 | } 116 | } 117 | else { 118 | answer = "yes"; 119 | } 120 | 121 | if (answer == "yes") { 122 | if (!file.open(QIODevice::WriteOnly)) { 123 | cerr << "Cannot open file for writing: " 124 | << qPrintable(file.errorString()) << endl; 125 | exit(1); 126 | } 127 | 128 | QTextStream out(&file); 129 | jmess_xml.save(out, Indent); 130 | cout << qPrintable(xmlOutFile) << " written." << endl; 131 | } 132 | } 133 | 134 | 135 | //------------------------------------------------------------------------------- 136 | /*! \brief Set list of ouput ports that have connections. 137 | * 138 | */ 139 | //------------------------------------------------------------------------------- 140 | void JMess::setConnectedPorts() 141 | { 142 | mConnectedPorts.clear(); 143 | 144 | const char **ports, **connections; //vector of ports and connections 145 | QVector OutputInput(2); //helper variable 146 | 147 | //Get active output ports. 148 | ports = jack_get_ports (mClient, NULL, NULL, JackPortIsOutput); 149 | 150 | for (unsigned int out_i = 0; ports[out_i]; ++out_i) { 151 | if ((connections = jack_port_get_all_connections 152 | (mClient, jack_port_by_name(mClient, ports[out_i]))) != 0) { 153 | for (unsigned int in_i = 0; connections[in_i]; ++in_i) { 154 | OutputInput[0] = ports[out_i]; 155 | //cout << "Output ===> " < " << qPrintable(OutputInput[1]) << endl; 158 | mConnectedPorts.append(OutputInput); 159 | } 160 | } 161 | } 162 | 163 | free(ports); 164 | } 165 | 166 | 167 | //------------------------------------------------------------------------------- 168 | /*! \brief Disconnect all the clients. 169 | * 170 | */ 171 | //------------------------------------------------------------------------------- 172 | void JMess::disconnectAll() 173 | { 174 | QVector OutputInput(2); 175 | 176 | this->setConnectedPorts(); 177 | 178 | for (QVector >::iterator it = mConnectedPorts.begin(); 179 | it != mConnectedPorts.end(); ++it) { 180 | OutputInput = *it; 181 | 182 | if (jack_disconnect(mClient, OutputInput[0].toLatin1(), OutputInput[1].toLatin1())) { 183 | cerr << "WARNING: port: " << qPrintable(OutputInput[0]) 184 | << "and port: " << qPrintable(OutputInput[1]) 185 | << " could not be disconnected.\n"; 186 | } 187 | } 188 | 189 | } 190 | 191 | 192 | //------------------------------------------------------------------------------- 193 | /*! \brief Parse the XML input file. 194 | * 195 | * Returns 0 on success, or 1 if the file has an incorrect format or cannot 196 | * read the file. 197 | */ 198 | //------------------------------------------------------------------------------- 199 | int JMess::parseXML(QString xmlInFile) 200 | { 201 | mPortsToConnect.clear(); 202 | QString errorStr; 203 | int errorLine; 204 | int errorColumn; 205 | 206 | QFile file(xmlInFile); 207 | if (!file.open(QIODevice::ReadOnly)) { 208 | cerr << "Cannot open file for reading: " 209 | << qPrintable(file.errorString()) << endl; 210 | return 1; 211 | } 212 | 213 | QDomDocument doc; 214 | if (!doc.setContent(&file, true, &errorStr, &errorLine, 215 | &errorColumn)) { 216 | cerr << "===================================================\n" 217 | << "Error parsing XML input file:\n" 218 | << "Parse error at line " << errorLine 219 | << ", column " << errorColumn << "\n" 220 | << qPrintable(errorStr) << "\n" 221 | << "===================================================\n"; 222 | return 1; 223 | } 224 | 225 | QDomElement jmess = doc.documentElement(); 226 | if (jmess.tagName() != "jmess") { 227 | cerr << "Error: Root tag should be : " 228 | << qPrintable(jmess.tagName()) << endl; 229 | return 1; 230 | } 231 | 232 | 233 | QVector OutputInput(2); 234 | //First check for tag 235 | for(QDomNode n_cntn = jmess.firstChild(); 236 | !n_cntn.isNull(); n_cntn = n_cntn.nextSibling()) { 237 | QDomElement cntn = n_cntn.toElement(); 238 | if (cntn.tagName() == "connection") { 239 | //Now check for ouput & input tag 240 | for(QDomNode n_sck = cntn.firstChild(); 241 | !n_sck.isNull(); n_sck = n_sck.nextSibling()) { 242 | QDomElement sck = n_sck.toElement(); 243 | //cout << qPrintable(sck.tagName()) << endl; 244 | //cout << qPrintable(sck.text()) << endl; 245 | if (sck.tagName() == "output") { 246 | OutputInput[0] = sck.text(); 247 | } 248 | else if (sck.tagName() == "input") { 249 | OutputInput[1] = sck.text(); 250 | } 251 | } 252 | mPortsToConnect.append(OutputInput); 253 | } 254 | } 255 | 256 | return 0; 257 | 258 | } 259 | 260 | 261 | //------------------------------------------------------------------------------- 262 | /*! \brief Connect ports specified in input XML file xmlInFile 263 | * 264 | */ 265 | //------------------------------------------------------------------------------- 266 | void JMess::connectPorts(QString xmlInFile) 267 | { 268 | QVector OutputInput(2); 269 | 270 | if ( !(this->parseXML(xmlInFile)) ) { 271 | for (QVector >::iterator it = mPortsToConnect.begin(); 272 | it != mPortsToConnect.end(); ++it) { 273 | OutputInput = *it; 274 | 275 | if (jack_connect(mClient, OutputInput[0].toLatin1(), OutputInput[1].toLatin1())) { 276 | //Display a warining only if the error is not because the ports are already 277 | //connected, in case the program doesn't display anyting. 278 | if (EEXIST != 279 | jack_connect(mClient, OutputInput[0].toLatin1(), OutputInput[1].toLatin1())) { 280 | cerr << "WARNING: port: " << qPrintable(OutputInput[0]) 281 | << "and port: " << qPrintable(OutputInput[1]) 282 | << " could not be connected.\n"; 283 | } 284 | } 285 | } 286 | } 287 | 288 | } 289 | -------------------------------------------------------------------------------- /jmess_doxygen: -------------------------------------------------------------------------------- 1 | # Doxyfile 1.4.4 2 | 3 | # This file describes the settings to be used by the documentation system 4 | # doxygen (www.doxygen.org) for a project 5 | # 6 | # All text after a hash (#) is considered a comment and will be ignored 7 | # The format is: 8 | # TAG = value [value, ...] 9 | # For lists items can also be appended using: 10 | # TAG += value [value, ...] 11 | # Values that contain spaces should be placed between quotes (" ") 12 | 13 | #--------------------------------------------------------------------------- 14 | # Project related configuration options 15 | #--------------------------------------------------------------------------- 16 | 17 | # The PROJECT_NAME tag is a single word (or a sequence of words surrounded 18 | # by quotes) that should identify the project. 19 | 20 | PROJECT_NAME = JMess 21 | 22 | # The PROJECT_NUMBER tag can be used to enter a project or revision number. 23 | # This could be handy for archiving the generated documentation or 24 | # if some version control system is used. 25 | 26 | PROJECT_NUMBER = 27 | 28 | # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 29 | # base path where the generated documentation will be put. 30 | # If a relative path is entered, it will be relative to the location 31 | # where doxygen was started. If left blank the current directory will be used. 32 | 33 | OUTPUT_DIRECTORY = 34 | 35 | # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 36 | # 4096 sub-directories (in 2 levels) under the output directory of each output 37 | # format and will distribute the generated files over these directories. 38 | # Enabling this option can be useful when feeding doxygen a huge amount of 39 | # source files, where putting all generated files in the same directory would 40 | # otherwise cause performance problems for the file system. 41 | 42 | CREATE_SUBDIRS = NO 43 | 44 | # The OUTPUT_LANGUAGE tag is used to specify the language in which all 45 | # documentation generated by doxygen is written. Doxygen will use this 46 | # information to generate all constant output in the proper language. 47 | # The default language is English, other supported languages are: 48 | # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 49 | # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 50 | # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 51 | # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 52 | # Swedish, and Ukrainian. 53 | 54 | OUTPUT_LANGUAGE = English 55 | 56 | # This tag can be used to specify the encoding used in the generated output. 57 | # The encoding is not always determined by the language that is chosen, 58 | # but also whether or not the output is meant for Windows or non-Windows users. 59 | # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 60 | # forces the Windows encoding (this is the default for the Windows binary), 61 | # whereas setting the tag to NO uses a Unix-style encoding (the default for 62 | # all platforms other than Windows). 63 | 64 | USE_WINDOWS_ENCODING = NO 65 | 66 | # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 67 | # include brief member descriptions after the members that are listed in 68 | # the file and class documentation (similar to JavaDoc). 69 | # Set to NO to disable this. 70 | 71 | BRIEF_MEMBER_DESC = YES 72 | 73 | # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 74 | # the brief description of a member or function before the detailed description. 75 | # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 76 | # brief descriptions will be completely suppressed. 77 | 78 | REPEAT_BRIEF = YES 79 | 80 | # This tag implements a quasi-intelligent brief description abbreviator 81 | # that is used to form the text in various listings. Each string 82 | # in this list, if found as the leading text of the brief description, will be 83 | # stripped from the text and the result after processing the whole list, is 84 | # used as the annotated text. Otherwise, the brief description is used as-is. 85 | # If left blank, the following values are used ("$name" is automatically 86 | # replaced with the name of the entity): "The $name class" "The $name widget" 87 | # "The $name file" "is" "provides" "specifies" "contains" 88 | # "represents" "a" "an" "the" 89 | 90 | ABBREVIATE_BRIEF = 91 | 92 | # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 93 | # Doxygen will generate a detailed section even if there is only a brief 94 | # description. 95 | 96 | ALWAYS_DETAILED_SEC = NO 97 | 98 | # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 99 | # inherited members of a class in the documentation of that class as if those 100 | # members were ordinary class members. Constructors, destructors and assignment 101 | # operators of the base classes will not be shown. 102 | 103 | INLINE_INHERITED_MEMB = NO 104 | 105 | # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 106 | # path before files name in the file list and in the header files. If set 107 | # to NO the shortest path that makes the file name unique will be used. 108 | 109 | FULL_PATH_NAMES = YES 110 | 111 | # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 112 | # can be used to strip a user-defined part of the path. Stripping is 113 | # only done if one of the specified strings matches the left-hand part of 114 | # the path. The tag can be used to show relative paths in the file list. 115 | # If left blank the directory from which doxygen is run is used as the 116 | # path to strip. 117 | 118 | STRIP_FROM_PATH = 119 | 120 | # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 121 | # the path mentioned in the documentation of a class, which tells 122 | # the reader which header file to include in order to use a class. 123 | # If left blank only the name of the header file containing the class 124 | # definition is used. Otherwise one should specify the include paths that 125 | # are normally passed to the compiler using the -I flag. 126 | 127 | STRIP_FROM_INC_PATH = 128 | 129 | # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 130 | # (but less readable) file names. This can be useful is your file systems 131 | # doesn't support long names like on DOS, Mac, or CD-ROM. 132 | 133 | SHORT_NAMES = NO 134 | 135 | # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 136 | # will interpret the first line (until the first dot) of a JavaDoc-style 137 | # comment as the brief description. If set to NO, the JavaDoc 138 | # comments will behave just like the Qt-style comments (thus requiring an 139 | # explicit @brief command for a brief description. 140 | 141 | JAVADOC_AUTOBRIEF = NO 142 | 143 | # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 144 | # treat a multi-line C++ special comment block (i.e. a block of //! or /// 145 | # comments) as a brief description. This used to be the default behaviour. 146 | # The new default is to treat a multi-line C++ comment block as a detailed 147 | # description. Set this tag to YES if you prefer the old behaviour instead. 148 | 149 | MULTILINE_CPP_IS_BRIEF = NO 150 | 151 | # If the DETAILS_AT_TOP tag is set to YES then Doxygen 152 | # will output the detailed description near the top, like JavaDoc. 153 | # If set to NO, the detailed description appears after the member 154 | # documentation. 155 | 156 | DETAILS_AT_TOP = NO 157 | 158 | # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 159 | # member inherits the documentation from any documented member that it 160 | # re-implements. 161 | 162 | INHERIT_DOCS = YES 163 | 164 | # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 165 | # tag is set to YES, then doxygen will reuse the documentation of the first 166 | # member in the group (if any) for the other members of the group. By default 167 | # all members of a group must be documented explicitly. 168 | 169 | DISTRIBUTE_GROUP_DOC = NO 170 | 171 | # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 172 | # a new page for each member. If set to NO, the documentation of a member will 173 | # be part of the file/class/namespace that contains it. 174 | 175 | SEPARATE_MEMBER_PAGES = NO 176 | 177 | # The TAB_SIZE tag can be used to set the number of spaces in a tab. 178 | # Doxygen uses this value to replace tabs by spaces in code fragments. 179 | 180 | TAB_SIZE = 8 181 | 182 | # This tag can be used to specify a number of aliases that acts 183 | # as commands in the documentation. An alias has the form "name=value". 184 | # For example adding "sideeffect=\par Side Effects:\n" will allow you to 185 | # put the command \sideeffect (or @sideeffect) in the documentation, which 186 | # will result in a user-defined paragraph with heading "Side Effects:". 187 | # You can put \n's in the value part of an alias to insert newlines. 188 | 189 | ALIASES = 190 | 191 | # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 192 | # sources only. Doxygen will then generate output that is more tailored for C. 193 | # For instance, some of the names that are used will be different. The list 194 | # of all members will be omitted, etc. 195 | 196 | OPTIMIZE_OUTPUT_FOR_C = NO 197 | 198 | # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 199 | # only. Doxygen will then generate output that is more tailored for Java. 200 | # For instance, namespaces will be presented as packages, qualified scopes 201 | # will look different, etc. 202 | 203 | OPTIMIZE_OUTPUT_JAVA = NO 204 | 205 | # Set the SUBGROUPING tag to YES (the default) to allow class member groups of 206 | # the same type (for instance a group of public functions) to be put as a 207 | # subgroup of that type (e.g. under the Public Functions section). Set it to 208 | # NO to prevent subgrouping. Alternatively, this can be done per class using 209 | # the \nosubgrouping command. 210 | 211 | SUBGROUPING = YES 212 | 213 | #--------------------------------------------------------------------------- 214 | # Build related configuration options 215 | #--------------------------------------------------------------------------- 216 | 217 | # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 218 | # documentation are documented, even if no documentation was available. 219 | # Private class members and static file members will be hidden unless 220 | # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES 221 | 222 | EXTRACT_ALL = YES 223 | 224 | # If the EXTRACT_PRIVATE tag is set to YES all private members of a class 225 | # will be included in the documentation. 226 | 227 | EXTRACT_PRIVATE = YES 228 | 229 | # If the EXTRACT_STATIC tag is set to YES all static members of a file 230 | # will be included in the documentation. 231 | 232 | EXTRACT_STATIC = YES 233 | 234 | # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 235 | # defined locally in source files will be included in the documentation. 236 | # If set to NO only classes defined in header files are included. 237 | 238 | EXTRACT_LOCAL_CLASSES = YES 239 | 240 | # This flag is only useful for Objective-C code. When set to YES local 241 | # methods, which are defined in the implementation section but not in 242 | # the interface are included in the documentation. 243 | # If set to NO (the default) only methods in the interface are included. 244 | 245 | EXTRACT_LOCAL_METHODS = NO 246 | 247 | # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 248 | # undocumented members of documented classes, files or namespaces. 249 | # If set to NO (the default) these members will be included in the 250 | # various overviews, but no documentation section is generated. 251 | # This option has no effect if EXTRACT_ALL is enabled. 252 | 253 | HIDE_UNDOC_MEMBERS = NO 254 | 255 | # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 256 | # undocumented classes that are normally visible in the class hierarchy. 257 | # If set to NO (the default) these classes will be included in the various 258 | # overviews. This option has no effect if EXTRACT_ALL is enabled. 259 | 260 | HIDE_UNDOC_CLASSES = NO 261 | 262 | # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 263 | # friend (class|struct|union) declarations. 264 | # If set to NO (the default) these declarations will be included in the 265 | # documentation. 266 | 267 | HIDE_FRIEND_COMPOUNDS = NO 268 | 269 | # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 270 | # documentation blocks found inside the body of a function. 271 | # If set to NO (the default) these blocks will be appended to the 272 | # function's detailed documentation block. 273 | 274 | HIDE_IN_BODY_DOCS = NO 275 | 276 | # The INTERNAL_DOCS tag determines if documentation 277 | # that is typed after a \internal command is included. If the tag is set 278 | # to NO (the default) then the documentation will be excluded. 279 | # Set it to YES to include the internal documentation. 280 | 281 | INTERNAL_DOCS = NO 282 | 283 | # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 284 | # file names in lower-case letters. If set to YES upper-case letters are also 285 | # allowed. This is useful if you have classes or files whose names only differ 286 | # in case and if your file system supports case sensitive file names. Windows 287 | # and Mac users are advised to set this option to NO. 288 | 289 | CASE_SENSE_NAMES = YES 290 | 291 | # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 292 | # will show members with their full class and namespace scopes in the 293 | # documentation. If set to YES the scope will be hidden. 294 | 295 | HIDE_SCOPE_NAMES = NO 296 | 297 | # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 298 | # will put a list of the files that are included by a file in the documentation 299 | # of that file. 300 | 301 | SHOW_INCLUDE_FILES = YES 302 | 303 | # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 304 | # is inserted in the documentation for inline members. 305 | 306 | INLINE_INFO = YES 307 | 308 | # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 309 | # will sort the (detailed) documentation of file and class members 310 | # alphabetically by member name. If set to NO the members will appear in 311 | # declaration order. 312 | 313 | SORT_MEMBER_DOCS = YES 314 | 315 | # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 316 | # brief documentation of file, namespace and class members alphabetically 317 | # by member name. If set to NO (the default) the members will appear in 318 | # declaration order. 319 | 320 | SORT_BRIEF_DOCS = NO 321 | 322 | # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 323 | # sorted by fully-qualified names, including namespaces. If set to 324 | # NO (the default), the class list will be sorted only by class name, 325 | # not including the namespace part. 326 | # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 327 | # Note: This option applies only to the class list, not to the 328 | # alphabetical list. 329 | 330 | SORT_BY_SCOPE_NAME = NO 331 | 332 | # The GENERATE_TODOLIST tag can be used to enable (YES) or 333 | # disable (NO) the todo list. This list is created by putting \todo 334 | # commands in the documentation. 335 | 336 | GENERATE_TODOLIST = YES 337 | 338 | # The GENERATE_TESTLIST tag can be used to enable (YES) or 339 | # disable (NO) the test list. This list is created by putting \test 340 | # commands in the documentation. 341 | 342 | GENERATE_TESTLIST = YES 343 | 344 | # The GENERATE_BUGLIST tag can be used to enable (YES) or 345 | # disable (NO) the bug list. This list is created by putting \bug 346 | # commands in the documentation. 347 | 348 | GENERATE_BUGLIST = YES 349 | 350 | # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 351 | # disable (NO) the deprecated list. This list is created by putting 352 | # \deprecated commands in the documentation. 353 | 354 | GENERATE_DEPRECATEDLIST= YES 355 | 356 | # The ENABLED_SECTIONS tag can be used to enable conditional 357 | # documentation sections, marked by \if sectionname ... \endif. 358 | 359 | ENABLED_SECTIONS = 360 | 361 | # The MAX_INITIALIZER_LINES tag determines the maximum number of lines 362 | # the initial value of a variable or define consists of for it to appear in 363 | # the documentation. If the initializer consists of more lines than specified 364 | # here it will be hidden. Use a value of 0 to hide initializers completely. 365 | # The appearance of the initializer of individual variables and defines in the 366 | # documentation can be controlled using \showinitializer or \hideinitializer 367 | # command in the documentation regardless of this setting. 368 | 369 | MAX_INITIALIZER_LINES = 30 370 | 371 | # Set the SHOW_USED_FILES tag to NO to disable the list of files generated 372 | # at the bottom of the documentation of classes and structs. If set to YES the 373 | # list will mention the files that were used to generate the documentation. 374 | 375 | SHOW_USED_FILES = YES 376 | 377 | # If the sources in your project are distributed over multiple directories 378 | # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 379 | # in the documentation. The default is YES. 380 | 381 | SHOW_DIRECTORIES = YES 382 | 383 | # The FILE_VERSION_FILTER tag can be used to specify a program or script that 384 | # doxygen should invoke to get the current version for each file (typically from the 385 | # version control system). Doxygen will invoke the program by executing (via 386 | # popen()) the command , where is the value of 387 | # the FILE_VERSION_FILTER tag, and is the name of an input file 388 | # provided by doxygen. Whatever the progam writes to standard output 389 | # is used as the file version. See the manual for examples. 390 | 391 | FILE_VERSION_FILTER = 392 | 393 | #--------------------------------------------------------------------------- 394 | # configuration options related to warning and progress messages 395 | #--------------------------------------------------------------------------- 396 | 397 | # The QUIET tag can be used to turn on/off the messages that are generated 398 | # by doxygen. Possible values are YES and NO. If left blank NO is used. 399 | 400 | QUIET = NO 401 | 402 | # The WARNINGS tag can be used to turn on/off the warning messages that are 403 | # generated by doxygen. Possible values are YES and NO. If left blank 404 | # NO is used. 405 | 406 | WARNINGS = YES 407 | 408 | # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 409 | # for undocumented members. If EXTRACT_ALL is set to YES then this flag will 410 | # automatically be disabled. 411 | 412 | WARN_IF_UNDOCUMENTED = YES 413 | 414 | # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 415 | # potential errors in the documentation, such as not documenting some 416 | # parameters in a documented function, or documenting parameters that 417 | # don't exist or using markup commands wrongly. 418 | 419 | WARN_IF_DOC_ERROR = YES 420 | 421 | # This WARN_NO_PARAMDOC option can be abled to get warnings for 422 | # functions that are documented, but have no documentation for their parameters 423 | # or return value. If set to NO (the default) doxygen will only warn about 424 | # wrong or incomplete parameter documentation, but not about the absence of 425 | # documentation. 426 | 427 | WARN_NO_PARAMDOC = NO 428 | 429 | # The WARN_FORMAT tag determines the format of the warning messages that 430 | # doxygen can produce. The string should contain the $file, $line, and $text 431 | # tags, which will be replaced by the file and line number from which the 432 | # warning originated and the warning text. Optionally the format may contain 433 | # $version, which will be replaced by the version of the file (if it could 434 | # be obtained via FILE_VERSION_FILTER) 435 | 436 | WARN_FORMAT = "$file:$line: $text" 437 | 438 | # The WARN_LOGFILE tag can be used to specify a file to which warning 439 | # and error messages should be written. If left blank the output is written 440 | # to stderr. 441 | 442 | WARN_LOGFILE = 443 | 444 | #--------------------------------------------------------------------------- 445 | # configuration options related to the input files 446 | #--------------------------------------------------------------------------- 447 | 448 | # The INPUT tag can be used to specify the files and/or directories that contain 449 | # documented source files. You may enter file names like "myfile.cpp" or 450 | # directories like "/usr/src/myproject". Separate the files or directories 451 | # with spaces. 452 | 453 | INPUT = ./jmess/src 454 | 455 | # If the value of the INPUT tag contains directories, you can use the 456 | # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 457 | # and *.h) to filter out the source-files in the directories. If left 458 | # blank the following patterns are tested: 459 | # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 460 | # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm 461 | 462 | FILE_PATTERNS = *.cpp *.h 463 | 464 | # The RECURSIVE tag can be used to turn specify whether or not subdirectories 465 | # should be searched for input files as well. Possible values are YES and NO. 466 | # If left blank NO is used. 467 | 468 | RECURSIVE = YES 469 | 470 | # The EXCLUDE tag can be used to specify files and/or directories that should 471 | # excluded from the INPUT source files. This way you can easily exclude a 472 | # subdirectory from a directory tree whose root is specified with the INPUT tag. 473 | 474 | EXCLUDE = ./jmess/src/anyoption.h ./jmess/src/anyoption.cpp 475 | 476 | # The EXCLUDE_SYMLINKS tag can be used select whether or not files or 477 | # directories that are symbolic links (a Unix filesystem feature) are excluded 478 | # from the input. 479 | 480 | EXCLUDE_SYMLINKS = NO 481 | 482 | # If the value of the INPUT tag contains directories, you can use the 483 | # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 484 | # certain files from those directories. Note that the wildcards are matched 485 | # against the file with absolute path, so to exclude all test directories 486 | # for example use the pattern */test/* 487 | 488 | EXCLUDE_PATTERNS = 489 | 490 | # The EXAMPLE_PATH tag can be used to specify one or more files or 491 | # directories that contain example code fragments that are included (see 492 | # the \include command). 493 | 494 | EXAMPLE_PATH = 495 | 496 | # If the value of the EXAMPLE_PATH tag contains directories, you can use the 497 | # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 498 | # and *.h) to filter out the source-files in the directories. If left 499 | # blank all files are included. 500 | 501 | EXAMPLE_PATTERNS = 502 | 503 | # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 504 | # searched for input files to be used with the \include or \dontinclude 505 | # commands irrespective of the value of the RECURSIVE tag. 506 | # Possible values are YES and NO. If left blank NO is used. 507 | 508 | EXAMPLE_RECURSIVE = NO 509 | 510 | # The IMAGE_PATH tag can be used to specify one or more files or 511 | # directories that contain image that are included in the documentation (see 512 | # the \image command). 513 | 514 | IMAGE_PATH = 515 | 516 | # The INPUT_FILTER tag can be used to specify a program that doxygen should 517 | # invoke to filter for each input file. Doxygen will invoke the filter program 518 | # by executing (via popen()) the command , where 519 | # is the value of the INPUT_FILTER tag, and is the name of an 520 | # input file. Doxygen will then use the output that the filter program writes 521 | # to standard output. If FILTER_PATTERNS is specified, this tag will be 522 | # ignored. 523 | 524 | INPUT_FILTER = 525 | 526 | # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 527 | # basis. Doxygen will compare the file name with each pattern and apply the 528 | # filter if there is a match. The filters are a list of the form: 529 | # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 530 | # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 531 | # is applied to all files. 532 | 533 | FILTER_PATTERNS = 534 | 535 | # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 536 | # INPUT_FILTER) will be used to filter the input files when producing source 537 | # files to browse (i.e. when SOURCE_BROWSER is set to YES). 538 | 539 | FILTER_SOURCE_FILES = NO 540 | 541 | #--------------------------------------------------------------------------- 542 | # configuration options related to source browsing 543 | #--------------------------------------------------------------------------- 544 | 545 | # If the SOURCE_BROWSER tag is set to YES then a list of source files will 546 | # be generated. Documented entities will be cross-referenced with these sources. 547 | # Note: To get rid of all source code in the generated output, make sure also 548 | # VERBATIM_HEADERS is set to NO. 549 | 550 | SOURCE_BROWSER = YES 551 | 552 | # Setting the INLINE_SOURCES tag to YES will include the body 553 | # of functions and classes directly in the documentation. 554 | 555 | INLINE_SOURCES = NO 556 | 557 | # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 558 | # doxygen to hide any special comment blocks from generated source code 559 | # fragments. Normal C and C++ comments will always remain visible. 560 | 561 | STRIP_CODE_COMMENTS = YES 562 | 563 | # If the REFERENCED_BY_RELATION tag is set to YES (the default) 564 | # then for each documented function all documented 565 | # functions referencing it will be listed. 566 | 567 | REFERENCED_BY_RELATION = YES 568 | 569 | # If the REFERENCES_RELATION tag is set to YES (the default) 570 | # then for each documented function all documented entities 571 | # called/used by that function will be listed. 572 | 573 | REFERENCES_RELATION = YES 574 | 575 | # If the USE_HTAGS tag is set to YES then the references to source code 576 | # will point to the HTML generated by the htags(1) tool instead of doxygen 577 | # built-in source browser. The htags tool is part of GNU's global source 578 | # tagging system (see http://www.gnu.org/software/global/global.html). You 579 | # will need version 4.8.6 or higher. 580 | 581 | USE_HTAGS = NO 582 | 583 | # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 584 | # will generate a verbatim copy of the header file for each class for 585 | # which an include is specified. Set to NO to disable this. 586 | 587 | VERBATIM_HEADERS = YES 588 | 589 | #--------------------------------------------------------------------------- 590 | # configuration options related to the alphabetical class index 591 | #--------------------------------------------------------------------------- 592 | 593 | # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 594 | # of all compounds will be generated. Enable this if the project 595 | # contains a lot of classes, structs, unions or interfaces. 596 | 597 | ALPHABETICAL_INDEX = NO 598 | 599 | # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 600 | # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 601 | # in which this list will be split (can be a number in the range [1..20]) 602 | 603 | COLS_IN_ALPHA_INDEX = 5 604 | 605 | # In case all classes in a project start with a common prefix, all 606 | # classes will be put under the same header in the alphabetical index. 607 | # The IGNORE_PREFIX tag can be used to specify one or more prefixes that 608 | # should be ignored while generating the index headers. 609 | 610 | IGNORE_PREFIX = 611 | 612 | #--------------------------------------------------------------------------- 613 | # configuration options related to the HTML output 614 | #--------------------------------------------------------------------------- 615 | 616 | # If the GENERATE_HTML tag is set to YES (the default) Doxygen will 617 | # generate HTML output. 618 | 619 | GENERATE_HTML = YES 620 | 621 | # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 622 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 623 | # put in front of it. If left blank `html' will be used as the default path. 624 | 625 | HTML_OUTPUT = /user/j/jcaceres/Library/Web/jmess 626 | 627 | # The HTML_FILE_EXTENSION tag can be used to specify the file extension for 628 | # each generated HTML page (for example: .htm,.php,.asp). If it is left blank 629 | # doxygen will generate files with .html extension. 630 | 631 | HTML_FILE_EXTENSION = .html 632 | 633 | # The HTML_HEADER tag can be used to specify a personal HTML header for 634 | # each generated HTML page. If it is left blank doxygen will generate a 635 | # standard header. 636 | 637 | HTML_HEADER = 638 | 639 | # The HTML_FOOTER tag can be used to specify a personal HTML footer for 640 | # each generated HTML page. If it is left blank doxygen will generate a 641 | # standard footer. 642 | 643 | HTML_FOOTER = 644 | 645 | # The HTML_STYLESHEET tag can be used to specify a user-defined cascading 646 | # style sheet that is used by each HTML page. It can be used to 647 | # fine-tune the look of the HTML output. If the tag is left blank doxygen 648 | # will generate a default style sheet. Note that doxygen will try to copy 649 | # the style sheet file to the HTML output directory, so don't put your own 650 | # stylesheet in the HTML output directory as well, or it will be erased! 651 | 652 | HTML_STYLESHEET = 653 | 654 | # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 655 | # files or namespaces will be aligned in HTML using tables. If set to 656 | # NO a bullet list will be used. 657 | 658 | HTML_ALIGN_MEMBERS = YES 659 | 660 | # If the GENERATE_HTMLHELP tag is set to YES, additional index files 661 | # will be generated that can be used as input for tools like the 662 | # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 663 | # of the generated HTML documentation. 664 | 665 | GENERATE_HTMLHELP = NO 666 | 667 | # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 668 | # be used to specify the file name of the resulting .chm file. You 669 | # can add a path in front of the file if the result should not be 670 | # written to the html output directory. 671 | 672 | CHM_FILE = 673 | 674 | # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 675 | # be used to specify the location (absolute path including file name) of 676 | # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 677 | # the HTML help compiler on the generated index.hhp. 678 | 679 | HHC_LOCATION = 680 | 681 | # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 682 | # controls if a separate .chi index file is generated (YES) or that 683 | # it should be included in the master .chm file (NO). 684 | 685 | GENERATE_CHI = NO 686 | 687 | # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 688 | # controls whether a binary table of contents is generated (YES) or a 689 | # normal table of contents (NO) in the .chm file. 690 | 691 | BINARY_TOC = NO 692 | 693 | # The TOC_EXPAND flag can be set to YES to add extra items for group members 694 | # to the contents of the HTML help documentation and to the tree view. 695 | 696 | TOC_EXPAND = NO 697 | 698 | # The DISABLE_INDEX tag can be used to turn on/off the condensed index at 699 | # top of each HTML page. The value NO (the default) enables the index and 700 | # the value YES disables it. 701 | 702 | DISABLE_INDEX = NO 703 | 704 | # This tag can be used to set the number of enum values (range [1..20]) 705 | # that doxygen will group on one line in the generated HTML documentation. 706 | 707 | ENUM_VALUES_PER_LINE = 4 708 | 709 | # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be 710 | # generated containing a tree-like index structure (just like the one that 711 | # is generated for HTML Help). For this to work a browser that supports 712 | # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 713 | # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 714 | # probably better off using the HTML help feature. 715 | 716 | GENERATE_TREEVIEW = NO 717 | 718 | # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 719 | # used to set the initial width (in pixels) of the frame in which the tree 720 | # is shown. 721 | 722 | TREEVIEW_WIDTH = 250 723 | 724 | #--------------------------------------------------------------------------- 725 | # configuration options related to the LaTeX output 726 | #--------------------------------------------------------------------------- 727 | 728 | # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 729 | # generate Latex output. 730 | 731 | GENERATE_LATEX = NO 732 | 733 | # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 734 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 735 | # put in front of it. If left blank `latex' will be used as the default path. 736 | 737 | LATEX_OUTPUT = latex 738 | 739 | # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 740 | # invoked. If left blank `latex' will be used as the default command name. 741 | 742 | LATEX_CMD_NAME = latex 743 | 744 | # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 745 | # generate index for LaTeX. If left blank `makeindex' will be used as the 746 | # default command name. 747 | 748 | MAKEINDEX_CMD_NAME = makeindex 749 | 750 | # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 751 | # LaTeX documents. This may be useful for small projects and may help to 752 | # save some trees in general. 753 | 754 | COMPACT_LATEX = NO 755 | 756 | # The PAPER_TYPE tag can be used to set the paper type that is used 757 | # by the printer. Possible values are: a4, a4wide, letter, legal and 758 | # executive. If left blank a4wide will be used. 759 | 760 | PAPER_TYPE = a4wide 761 | 762 | # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 763 | # packages that should be included in the LaTeX output. 764 | 765 | EXTRA_PACKAGES = 766 | 767 | # The LATEX_HEADER tag can be used to specify a personal LaTeX header for 768 | # the generated latex document. The header should contain everything until 769 | # the first chapter. If it is left blank doxygen will generate a 770 | # standard header. Notice: only use this tag if you know what you are doing! 771 | 772 | LATEX_HEADER = 773 | 774 | # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 775 | # is prepared for conversion to pdf (using ps2pdf). The pdf file will 776 | # contain links (just like the HTML output) instead of page references 777 | # This makes the output suitable for online browsing using a pdf viewer. 778 | 779 | PDF_HYPERLINKS = NO 780 | 781 | # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 782 | # plain latex in the generated Makefile. Set this option to YES to get a 783 | # higher quality PDF documentation. 784 | 785 | USE_PDFLATEX = NO 786 | 787 | # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 788 | # command to the generated LaTeX files. This will instruct LaTeX to keep 789 | # running if errors occur, instead of asking the user for help. 790 | # This option is also used when generating formulas in HTML. 791 | 792 | LATEX_BATCHMODE = NO 793 | 794 | # If LATEX_HIDE_INDICES is set to YES then doxygen will not 795 | # include the index chapters (such as File Index, Compound Index, etc.) 796 | # in the output. 797 | 798 | LATEX_HIDE_INDICES = NO 799 | 800 | #--------------------------------------------------------------------------- 801 | # configuration options related to the RTF output 802 | #--------------------------------------------------------------------------- 803 | 804 | # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 805 | # The RTF output is optimized for Word 97 and may not look very pretty with 806 | # other RTF readers or editors. 807 | 808 | GENERATE_RTF = NO 809 | 810 | # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 811 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 812 | # put in front of it. If left blank `rtf' will be used as the default path. 813 | 814 | RTF_OUTPUT = rtf 815 | 816 | # If the COMPACT_RTF tag is set to YES Doxygen generates more compact 817 | # RTF documents. This may be useful for small projects and may help to 818 | # save some trees in general. 819 | 820 | COMPACT_RTF = NO 821 | 822 | # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 823 | # will contain hyperlink fields. The RTF file will 824 | # contain links (just like the HTML output) instead of page references. 825 | # This makes the output suitable for online browsing using WORD or other 826 | # programs which support those fields. 827 | # Note: wordpad (write) and others do not support links. 828 | 829 | RTF_HYPERLINKS = NO 830 | 831 | # Load stylesheet definitions from file. Syntax is similar to doxygen's 832 | # config file, i.e. a series of assignments. You only have to provide 833 | # replacements, missing definitions are set to their default value. 834 | 835 | RTF_STYLESHEET_FILE = 836 | 837 | # Set optional variables used in the generation of an rtf document. 838 | # Syntax is similar to doxygen's config file. 839 | 840 | RTF_EXTENSIONS_FILE = 841 | 842 | #--------------------------------------------------------------------------- 843 | # configuration options related to the man page output 844 | #--------------------------------------------------------------------------- 845 | 846 | # If the GENERATE_MAN tag is set to YES (the default) Doxygen will 847 | # generate man pages 848 | 849 | GENERATE_MAN = NO 850 | 851 | # The MAN_OUTPUT tag is used to specify where the man pages will be put. 852 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 853 | # put in front of it. If left blank `man' will be used as the default path. 854 | 855 | MAN_OUTPUT = man 856 | 857 | # The MAN_EXTENSION tag determines the extension that is added to 858 | # the generated man pages (default is the subroutine's section .3) 859 | 860 | MAN_EXTENSION = .3 861 | 862 | # If the MAN_LINKS tag is set to YES and Doxygen generates man output, 863 | # then it will generate one additional man file for each entity 864 | # documented in the real man page(s). These additional files 865 | # only source the real man page, but without them the man command 866 | # would be unable to find the correct page. The default is NO. 867 | 868 | MAN_LINKS = NO 869 | 870 | #--------------------------------------------------------------------------- 871 | # configuration options related to the XML output 872 | #--------------------------------------------------------------------------- 873 | 874 | # If the GENERATE_XML tag is set to YES Doxygen will 875 | # generate an XML file that captures the structure of 876 | # the code including all documentation. 877 | 878 | GENERATE_XML = NO 879 | 880 | # The XML_OUTPUT tag is used to specify where the XML pages will be put. 881 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be 882 | # put in front of it. If left blank `xml' will be used as the default path. 883 | 884 | XML_OUTPUT = xml 885 | 886 | # The XML_SCHEMA tag can be used to specify an XML schema, 887 | # which can be used by a validating XML parser to check the 888 | # syntax of the XML files. 889 | 890 | XML_SCHEMA = 891 | 892 | # The XML_DTD tag can be used to specify an XML DTD, 893 | # which can be used by a validating XML parser to check the 894 | # syntax of the XML files. 895 | 896 | XML_DTD = 897 | 898 | # If the XML_PROGRAMLISTING tag is set to YES Doxygen will 899 | # dump the program listings (including syntax highlighting 900 | # and cross-referencing information) to the XML output. Note that 901 | # enabling this will significantly increase the size of the XML output. 902 | 903 | XML_PROGRAMLISTING = YES 904 | 905 | #--------------------------------------------------------------------------- 906 | # configuration options for the AutoGen Definitions output 907 | #--------------------------------------------------------------------------- 908 | 909 | # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 910 | # generate an AutoGen Definitions (see autogen.sf.net) file 911 | # that captures the structure of the code including all 912 | # documentation. Note that this feature is still experimental 913 | # and incomplete at the moment. 914 | 915 | GENERATE_AUTOGEN_DEF = NO 916 | 917 | #--------------------------------------------------------------------------- 918 | # configuration options related to the Perl module output 919 | #--------------------------------------------------------------------------- 920 | 921 | # If the GENERATE_PERLMOD tag is set to YES Doxygen will 922 | # generate a Perl module file that captures the structure of 923 | # the code including all documentation. Note that this 924 | # feature is still experimental and incomplete at the 925 | # moment. 926 | 927 | GENERATE_PERLMOD = NO 928 | 929 | # If the PERLMOD_LATEX tag is set to YES Doxygen will generate 930 | # the necessary Makefile rules, Perl scripts and LaTeX code to be able 931 | # to generate PDF and DVI output from the Perl module output. 932 | 933 | PERLMOD_LATEX = NO 934 | 935 | # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 936 | # nicely formatted so it can be parsed by a human reader. This is useful 937 | # if you want to understand what is going on. On the other hand, if this 938 | # tag is set to NO the size of the Perl module output will be much smaller 939 | # and Perl will parse it just the same. 940 | 941 | PERLMOD_PRETTY = YES 942 | 943 | # The names of the make variables in the generated doxyrules.make file 944 | # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 945 | # This is useful so different doxyrules.make files included by the same 946 | # Makefile don't overwrite each other's variables. 947 | 948 | PERLMOD_MAKEVAR_PREFIX = 949 | 950 | #--------------------------------------------------------------------------- 951 | # Configuration options related to the preprocessor 952 | #--------------------------------------------------------------------------- 953 | 954 | # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 955 | # evaluate all C-preprocessor directives found in the sources and include 956 | # files. 957 | 958 | ENABLE_PREPROCESSING = YES 959 | 960 | # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 961 | # names in the source code. If set to NO (the default) only conditional 962 | # compilation will be performed. Macro expansion can be done in a controlled 963 | # way by setting EXPAND_ONLY_PREDEF to YES. 964 | 965 | MACRO_EXPANSION = NO 966 | 967 | # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 968 | # then the macro expansion is limited to the macros specified with the 969 | # PREDEFINED and EXPAND_AS_PREDEFINED tags. 970 | 971 | EXPAND_ONLY_PREDEF = NO 972 | 973 | # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 974 | # in the INCLUDE_PATH (see below) will be search if a #include is found. 975 | 976 | SEARCH_INCLUDES = YES 977 | 978 | # The INCLUDE_PATH tag can be used to specify one or more directories that 979 | # contain include files that are not input files but should be processed by 980 | # the preprocessor. 981 | 982 | INCLUDE_PATH = 983 | 984 | # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 985 | # patterns (like *.h and *.hpp) to filter out the header-files in the 986 | # directories. If left blank, the patterns specified with FILE_PATTERNS will 987 | # be used. 988 | 989 | INCLUDE_FILE_PATTERNS = 990 | 991 | # The PREDEFINED tag can be used to specify one or more macro names that 992 | # are defined before the preprocessor is started (similar to the -D option of 993 | # gcc). The argument of the tag is a list of macros of the form: name 994 | # or name=definition (no spaces). If the definition and the = are 995 | # omitted =1 is assumed. To prevent a macro definition from being 996 | # undefined via #undef or recursively expanded use the := operator 997 | # instead of the = operator. 998 | 999 | PREDEFINED = 1000 | 1001 | # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 1002 | # this tag can be used to specify a list of macro names that should be expanded. 1003 | # The macro definition that is found in the sources will be used. 1004 | # Use the PREDEFINED tag if you want to use a different macro definition. 1005 | 1006 | EXPAND_AS_DEFINED = 1007 | 1008 | # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 1009 | # doxygen's preprocessor will remove all function-like macros that are alone 1010 | # on a line, have an all uppercase name, and do not end with a semicolon. Such 1011 | # function macros are typically used for boiler-plate code, and will confuse 1012 | # the parser if not removed. 1013 | 1014 | SKIP_FUNCTION_MACROS = YES 1015 | 1016 | #--------------------------------------------------------------------------- 1017 | # Configuration::additions related to external references 1018 | #--------------------------------------------------------------------------- 1019 | 1020 | # The TAGFILES option can be used to specify one or more tagfiles. 1021 | # Optionally an initial location of the external documentation 1022 | # can be added for each tagfile. The format of a tag file without 1023 | # this location is as follows: 1024 | # TAGFILES = file1 file2 ... 1025 | # Adding location for the tag files is done as follows: 1026 | # TAGFILES = file1=loc1 "file2 = loc2" ... 1027 | # where "loc1" and "loc2" can be relative or absolute paths or 1028 | # URLs. If a location is present for each tag, the installdox tool 1029 | # does not have to be run to correct the links. 1030 | # Note that each tag file must have a unique name 1031 | # (where the name does NOT include the path) 1032 | # If a tag file is not located in the directory in which doxygen 1033 | # is run, you must also specify the path to the tagfile here. 1034 | 1035 | TAGFILES = 1036 | 1037 | # When a file name is specified after GENERATE_TAGFILE, doxygen will create 1038 | # a tag file that is based on the input files it reads. 1039 | 1040 | GENERATE_TAGFILE = 1041 | 1042 | # If the ALLEXTERNALS tag is set to YES all external classes will be listed 1043 | # in the class index. If set to NO only the inherited external classes 1044 | # will be listed. 1045 | 1046 | ALLEXTERNALS = NO 1047 | 1048 | # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 1049 | # in the modules index. If set to NO, only the current project's groups will 1050 | # be listed. 1051 | 1052 | EXTERNAL_GROUPS = YES 1053 | 1054 | # The PERL_PATH should be the absolute path and name of the perl script 1055 | # interpreter (i.e. the result of `which perl'). 1056 | 1057 | PERL_PATH = /usr/bin/perl 1058 | 1059 | #--------------------------------------------------------------------------- 1060 | # Configuration options related to the dot tool 1061 | #--------------------------------------------------------------------------- 1062 | 1063 | # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 1064 | # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 1065 | # or super classes. Setting the tag to NO turns the diagrams off. Note that 1066 | # this option is superseded by the HAVE_DOT option below. This is only a 1067 | # fallback. It is recommended to install and use dot, since it yields more 1068 | # powerful graphs. 1069 | 1070 | CLASS_DIAGRAMS = YES 1071 | 1072 | # If set to YES, the inheritance and collaboration graphs will hide 1073 | # inheritance and usage relations if the target is undocumented 1074 | # or is not a class. 1075 | 1076 | HIDE_UNDOC_RELATIONS = YES 1077 | 1078 | # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 1079 | # available from the path. This tool is part of Graphviz, a graph visualization 1080 | # toolkit from AT&T and Lucent Bell Labs. The other options in this section 1081 | # have no effect if this option is set to NO (the default) 1082 | 1083 | HAVE_DOT = YES 1084 | 1085 | # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 1086 | # will generate a graph for each documented class showing the direct and 1087 | # indirect inheritance relations. Setting this tag to YES will force the 1088 | # the CLASS_DIAGRAMS tag to NO. 1089 | 1090 | CLASS_GRAPH = YES 1091 | 1092 | # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 1093 | # will generate a graph for each documented class showing the direct and 1094 | # indirect implementation dependencies (inheritance, containment, and 1095 | # class references variables) of the class with other documented classes. 1096 | 1097 | COLLABORATION_GRAPH = YES 1098 | 1099 | # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 1100 | # will generate a graph for groups, showing the direct groups dependencies 1101 | 1102 | GROUP_GRAPHS = YES 1103 | 1104 | # If the UML_LOOK tag is set to YES doxygen will generate inheritance and 1105 | # collaboration diagrams in a style similar to the OMG's Unified Modeling 1106 | # Language. 1107 | 1108 | UML_LOOK = NO 1109 | 1110 | # If set to YES, the inheritance and collaboration graphs will show the 1111 | # relations between templates and their instances. 1112 | 1113 | TEMPLATE_RELATIONS = NO 1114 | 1115 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 1116 | # tags are set to YES then doxygen will generate a graph for each documented 1117 | # file showing the direct and indirect include dependencies of the file with 1118 | # other documented files. 1119 | 1120 | INCLUDE_GRAPH = YES 1121 | 1122 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 1123 | # HAVE_DOT tags are set to YES then doxygen will generate a graph for each 1124 | # documented header file showing the documented files that directly or 1125 | # indirectly include this file. 1126 | 1127 | INCLUDED_BY_GRAPH = YES 1128 | 1129 | # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 1130 | # generate a call dependency graph for every global function or class method. 1131 | # Note that enabling this option will significantly increase the time of a run. 1132 | # So in most cases it will be better to enable call graphs for selected 1133 | # functions only using the \callgraph command. 1134 | 1135 | CALL_GRAPH = YES 1136 | 1137 | # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 1138 | # will graphical hierarchy of all classes instead of a textual one. 1139 | 1140 | GRAPHICAL_HIERARCHY = YES 1141 | 1142 | # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 1143 | # then doxygen will show the dependencies a directory has on other directories 1144 | # in a graphical way. The dependency relations are determined by the #include 1145 | # relations between the files in the directories. 1146 | 1147 | DIRECTORY_GRAPH = YES 1148 | 1149 | # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 1150 | # generated by dot. Possible values are png, jpg, or gif 1151 | # If left blank png will be used. 1152 | 1153 | DOT_IMAGE_FORMAT = png 1154 | 1155 | # The tag DOT_PATH can be used to specify the path where the dot tool can be 1156 | # found. If left blank, it is assumed the dot tool can be found in the path. 1157 | 1158 | DOT_PATH = 1159 | 1160 | # The DOTFILE_DIRS tag can be used to specify one or more directories that 1161 | # contain dot files that are included in the documentation (see the 1162 | # \dotfile command). 1163 | 1164 | DOTFILE_DIRS = 1165 | 1166 | # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 1167 | # (in pixels) of the graphs generated by dot. If a graph becomes larger than 1168 | # this value, doxygen will try to truncate the graph, so that it fits within 1169 | # the specified constraint. Beware that most browsers cannot cope with very 1170 | # large images. 1171 | 1172 | MAX_DOT_GRAPH_WIDTH = 1024 1173 | 1174 | # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 1175 | # (in pixels) of the graphs generated by dot. If a graph becomes larger than 1176 | # this value, doxygen will try to truncate the graph, so that it fits within 1177 | # the specified constraint. Beware that most browsers cannot cope with very 1178 | # large images. 1179 | 1180 | MAX_DOT_GRAPH_HEIGHT = 1024 1181 | 1182 | # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 1183 | # graphs generated by dot. A depth value of 3 means that only nodes reachable 1184 | # from the root by following a path via at most 3 edges will be shown. Nodes 1185 | # that lay further from the root node will be omitted. Note that setting this 1186 | # option to 1 or 2 may greatly reduce the computation time needed for large 1187 | # code bases. Also note that a graph may be further truncated if the graph's 1188 | # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 1189 | # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 1190 | # the graph is not depth-constrained. 1191 | 1192 | MAX_DOT_GRAPH_DEPTH = 0 1193 | 1194 | # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 1195 | # background. This is disabled by default, which results in a white background. 1196 | # Warning: Depending on the platform used, enabling this option may lead to 1197 | # badly anti-aliased labels on the edges of a graph (i.e. they become hard to 1198 | # read). 1199 | 1200 | DOT_TRANSPARENT = NO 1201 | 1202 | # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 1203 | # files in one run (i.e. multiple -o and -T options on the command line). This 1204 | # makes dot run faster, but since only newer versions of dot (>1.8.10) 1205 | # support this, this feature is disabled by default. 1206 | 1207 | DOT_MULTI_TARGETS = NO 1208 | 1209 | # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 1210 | # generate a legend page explaining the meaning of the various boxes and 1211 | # arrows in the dot generated graphs. 1212 | 1213 | GENERATE_LEGEND = YES 1214 | 1215 | # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 1216 | # remove the intermediate dot files that are used to generate 1217 | # the various graphs. 1218 | 1219 | DOT_CLEANUP = YES 1220 | 1221 | #--------------------------------------------------------------------------- 1222 | # Configuration::additions related to the search engine 1223 | #--------------------------------------------------------------------------- 1224 | 1225 | # The SEARCHENGINE tag specifies whether or not a search engine should be 1226 | # used. If set to NO the values of all tags below this one will be ignored. 1227 | 1228 | SEARCHENGINE = NO 1229 | --------------------------------------------------------------------------------