Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / interface / CommandLineParser.h
diff --git a/website/archive/binaries/mac/src/clustalw/src/interface/CommandLineParser.h b/website/archive/binaries/mac/src/clustalw/src/interface/CommandLineParser.h
new file mode 100644 (file)
index 0000000..feca1e4
--- /dev/null
@@ -0,0 +1,197 @@
+/**
+ * Author: Mark Larkin
+ * 
+ * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
+ */
+/**
+ * The class CommandLineParser is used to parse the command line arguments. It then
+ * sets some parameters, and calls the required functions.
+ * To get it to parse the command line, and execute the required job, create a 
+ * CommandLineParser object and pass the list of arguments to the constructor.
+ */
+
+#ifndef COMMANDLINEPARSER_H
+#define COMMANDLINEPARSER_H
+
+#include <vector>
+#include <string>
+#include "../Clustal.h"
+#include "../general/clustalw.h"
+#include "../general/userparams.h"
+#include "../general/utils.h"
+#include "../general/debuglogObject.h"
+#include "../general/statsObject.h"
+namespace clustalw
+{
+
+typedef std::vector<std::string> StringArray;
+
+typedef struct {
+    const char *str;
+    int *flag;
+    int type;
+    StringArray* arg;
+} CmdLineData;
+
+class CommandLineParser
+{
+    public:
+        /* Functions */
+        CommandLineParser(StringArray* args, bool xmenus);
+        ~CommandLineParser();
+
+    private:
+        /* Functions */
+        
+        /** separate argument options and values
+         * 
+         * put all the parameters and their values in the
+         * vectors, and also to check that all parameters that require a value
+         * have it.
+         *
+         * @param args contains parameters as value and optional option pairs
+         * @param parameters used for storing parsed arguments
+         * @param paramArgs used for storing values of parsed arguments
+         * @return number of parsed parameters or -1 on error
+         */
+        int checkParam(StringArray* args, StringArray* params, StringArray* paramArg);
+
+        /** Parse all parameters
+         */
+        void parseParams(StringArray* args, bool xmenus);
+        void setOptionalParam();
+        int findMatch(string probe, StringArray* list, int n);
+        CmdLineData getCmdLineDataStruct(const char *str, int *flag, int type, StringArray* arg);
+        void printCmdLineData(const CmdLineData& temp);
+        string ConvertStringToLower(string strToConvert);
+        void exitWithErrorMsg(string msg);
+        void reportBadOptionAndExit(string option, string expectedType);
+        void reportInvalidOptionAndExit(string option);
+
+        
+        /* Attributes */
+        Clustal *clustalObj;
+        
+        static const int MAXARGS = 100;
+        static const int NOARG = 0;
+        static const int INTARG = 1;
+        static const int FLTARG = 2;
+        static const int STRARG = 3;
+        static const int FILARG = 4;
+        static const int OPTARG = 5;
+        
+        int setOptions;
+        int setHelp;
+        int setFullHelp;
+        int setQuiet;
+        int setInteractive;
+        int setBatch;
+        int setGapOpen;
+        int setGapExtend;
+        int setPWGapOpen;
+        int setPWGapExtend;
+        int setOutOrder;
+        int setBootLabels;
+        int setPWMatrix;
+        int setMatrix;
+        int setPWDNAMatrix;
+        int setDNAMatrix;
+        int setNegative;
+        int setNoWeights;
+        int setOutput;
+        int setOutputTree;
+        int setQuickTree;
+        int setType;
+        int setCase;
+        int setSeqNo;
+        int setSeqNoRange;
+        int setRange;
+        int setTransWeight;
+        int setSeed;
+        int setScore;
+        int setWindow;
+        int setKtuple;
+        int setKimura;
+        int setTopDiags;
+        int setPairGap;
+        int setTossGaps;
+        int setNoPGap;
+        int setNoHGap;
+        int setNoVGap;
+        int setHGapRes;
+        int setUseEndGaps;
+        int setMaxDiv;
+        int setGapDist;
+        int setDebug;
+        int setOutfile;
+        int setInfile;
+        int setProfile1;
+        int setProfile2;
+        int setAlign;
+        int setConvert;
+        int setNewTree;
+        int setUseTree;
+        int setNewTree1;
+        int setUseTree1;
+        int setNewTree2;
+        int setUseTree2;
+        int setBootstrap;
+        int setTree;
+        int setProfile;
+        int setSequences;
+        int setSecStruct1;
+        int setSecStruct2;
+        int setSecStructOutput;
+        int setHelixGap;
+        int setStrandGap;
+        int setLoopGap;
+        int setTerminalGap;
+        int setHelixEndIn;
+        int setHelixEndOut;
+        int setStrandEndIn;
+        int setStrandEndOut;
+        int profileType;
+        int setDoIteration;
+        int setNumIterations;
+        int setTreeAlgorithm;
+        int setMaxSeqLen;
+        int setStatsFile;
+        int setOutputPim;
+        
+        string userMatrixName;
+        string pwUserMatrixName;
+        string DNAUserMatrixName;
+        string pwDNAUserMatrixName;
+        
+        CmdLineData cmdLineFile[4];
+        CmdLineData cmdLineVerb[20];
+        CmdLineData cmdLinePara[56];
+        
+        string clustalTreeName;
+        string distTreeName;
+        string phylipTreeName;
+        string nexusTreeName;
+        string p1TreeName;
+        string p2TreeName;
+        string pimName;
+        
+        StringArray* typeArg;
+        StringArray* bootLabelsArg;
+        StringArray* outOrderArg;
+        StringArray* caseArg;
+        StringArray* seqNoArg;
+        StringArray* seqNoRangeArg;
+        StringArray* scoreArg;
+        StringArray* outputArg;
+        StringArray* outputTreeArg;
+        StringArray* outputSecStrArg;
+        StringArray* cmdLineType;
+        StringArray* clusterAlgorithm;
+        StringArray* iterationArg;
+        
+        StringArray* params; // parameter names
+        StringArray* paramArg; // parameter values
+};
+
+}
+#endif