From: thoagland <tho...@us...> - 2005-05-27 11:07:44
|
Update of /cvsroot/nsclspectcl/SpecTcl/SpecTcl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23723/SpecTcl Modified Files: Tag: SpecTcl-3-0_developmentreally ApplyCommand.cpp BindCommand.cpp BindCommand.h ClearCommand.cpp PseudoCommand.cpp SpectrumCommand.cpp SpectrumPackage.cpp SpectrumPackage.h Log Message: Added support for pseudo, parameter, clear, apply, and bind to take an optional pattern for the -list switch. Index: SpectrumPackage.cpp =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/SpectrumPackage.cpp,v retrieving revision 5.1.2.4 retrieving revision 5.1.2.5 diff -C2 -d -r5.1.2.4 -r5.1.2.5 *** SpectrumPackage.cpp 24 May 2005 11:36:48 -0000 5.1.2.4 --- SpectrumPackage.cpp 27 May 2005 11:07:30 -0000 5.1.2.5 *************** *** 299,302 **** --- 299,305 ---- // // $Log$ + // Revision 5.1.2.5 2005/05/27 11:07:30 thoagland + // Added support for pseudo, parameter, clear, apply, and bind to take an optional pattern for the -list switch. + // // Revision 5.1.2.4 2005/05/24 11:36:48 thoagland // Added support for spectrum -list [-byid] [pattern] *************** *** 1458,1462 **** // void ! CSpectrumPackage::ListAllBindings(CTCLResult& rResult) { // Creates a complete list of the display bindings. --- 1461,1465 ---- // void ! CSpectrumPackage::ListAllBindings(CTCLResult& rResult, const char* pattern) { // Creates a complete list of the display bindings. *************** *** 1478,1483 **** CSpectrum *pSpec = (*p).second; UInt_t xid = FindDisplayBinding(pSpec->getName()); ! ! FormatBinding(ResultList, xid, pSpec); } catch(CException& rExcept) { // No match .. ignore. --- 1481,1489 ---- CSpectrum *pSpec = (*p).second; UInt_t xid = FindDisplayBinding(pSpec->getName()); ! const char* name = (pSpec->getName()).c_str(); ! if (Tcl_StringMatch(name, pattern)) ! { ! FormatBinding(ResultList, xid, pSpec); ! } } catch(CException& rExcept) { // No match .. ignore. *************** *** 2030,2034 **** void CSpectrumPackage:: GetNameList(std::vector<std::string>& rvNames, ! int nArgs, char* pArgs[]) { // produces a vector of names from the nArgs, pArgs parameters. --- 2036,2070 ---- void CSpectrumPackage:: GetNameList(std::vector<std::string>& rvNames, ! CTCLResult& rResult, ! char* pattern) ! { ! // produces a vector of names from the nArgs, pArgs parameters. ! // ! SpecTcl& api(*(SpecTcl::getInstance())); ! rvNames.erase(rvNames.begin(), rvNames.end()); ! SpectrumDictionaryIterator p = api.SpectrumBegin(); ! ! for(; p != api.SpectrumEnd(); p++) { ! const char* name = ((p->second)->getName()).c_str(); ! if (Tcl_StringMatch(name, pattern) ) ! { ! CSpectrum* rSpec((*p).second); ! rvNames.push_back(((p->second)->getName()).c_str()); ! } ! } ! return; ! } ! ! /////////////////////////////////////////////////////////////////////////// ! // ! // Function: ! // void GetNameList(std::vector<std::string>& rvNames, ! // int nArgs, char* pArgs[]) ! // Operation Type: ! // Protected parsing utility. ! // ! void ! CSpectrumPackage:: GetNameList(std::vector<std::string>& rvNames, ! int nArgs, char* pArgs[]) { // produces a vector of names from the nArgs, pArgs parameters. *************** *** 2037,2040 **** --- 2073,2077 ---- rvNames.push_back(pArgs[i]); } + ////////////////////////////////////////////////////////////////////////// // Index: PseudoCommand.cpp =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/PseudoCommand.cpp,v retrieving revision 5.1.2.1 retrieving revision 5.1.2.2 diff -C2 -d -r5.1.2.1 -r5.1.2.2 *** PseudoCommand.cpp 15 Dec 2004 17:24:06 -0000 5.1.2.1 --- PseudoCommand.cpp 27 May 2005 11:07:30 -0000 5.1.2.2 *************** *** 517,534 **** list<string> PseudoNames; if(nArgs != 0) { // List specific parameters. ! while(nArgs) { ! PseudoNames.push_back(string(*pArgs)); ! pArgs++; ! nArgs--; ! } ! } ! else { // List all parameters. ! rPack.GetPseudoNames(PseudoNames); } // // Iterate through all pseudos getting descriptions to add to the // output string and error string. // list<string>::iterator pName = PseudoNames.begin(); CTCLString oks; --- 517,531 ---- list<string> PseudoNames; + char* pattern = "*"; if(nArgs != 0) { // List specific parameters. ! pattern = pArgs[0]; } + rPack.GetPseudoNames(PseudoNames); + // // Iterate through all pseudos getting descriptions to add to the // output string and error string. // + list<string>::iterator pName = PseudoNames.begin(); CTCLString oks; *************** *** 537,547 **** while(pName != PseudoNames.end()) { string Description; ! if(rPack.DescribePseudo(*pName, Description) == TCL_OK) { ! oks.AppendElement(Description); ! } ! else { ! errors.AppendElement(Description); ! nErrors++; ! } pName++; } --- 534,550 ---- while(pName != PseudoNames.end()) { string Description; ! const char* name = (*pName).c_str(); ! if( Tcl_StringMatch(name, pattern)) ! { ! if(rPack.DescribePseudo(*pName, Description) == TCL_OK) ! { ! oks.AppendElement(Description); ! } ! else ! { ! errors.AppendElement(Description); ! nErrors++; ! } ! } pName++; } *************** *** 616,620 **** rResult += "Usage: \n"; rResult += " pseudo name { depemendent_params } { proc_body }\n"; ! rResult += " pseudo -list [ name1 ... ]\n"; rResult += " pseudo -delete name1 [name2 ... ]\n"; rResult += " name - Name of a Pseudo parameter\n"; --- 619,623 ---- rResult += "Usage: \n"; rResult += " pseudo name { depemendent_params } { proc_body }\n"; ! rResult += " pseudo -list [pattern]\n"; rResult += " pseudo -delete name1 [name2 ... ]\n"; rResult += " name - Name of a Pseudo parameter\n"; Index: ClearCommand.cpp =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/ClearCommand.cpp,v retrieving revision 5.1.2.1 retrieving revision 5.1.2.2 diff -C2 -d -r5.1.2.1 -r5.1.2.2 *** ClearCommand.cpp 15 Dec 2004 17:24:03 -0000 5.1.2.1 --- ClearCommand.cpp 27 May 2005 11:07:30 -0000 5.1.2.2 *************** *** 420,424 **** std::vector<std::string> vNames; ! CSpectrumPackage::GetNameList(vNames, nArgs, pArgs); CSpectrumPackage& rPack = (CSpectrumPackage&)getMyPackage(); --- 420,424 ---- std::vector<std::string> vNames; ! CSpectrumPackage::GetNameList(vNames, rResult, pArgs[0]); CSpectrumPackage& rPack = (CSpectrumPackage&)getMyPackage(); Index: SpectrumPackage.h =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/SpectrumPackage.h,v retrieving revision 5.1.2.2 retrieving revision 5.1.2.3 diff -C2 -d -r5.1.2.2 -r5.1.2.3 *** SpectrumPackage.h 24 May 2005 11:36:48 -0000 5.1.2.2 --- SpectrumPackage.h 27 May 2005 11:07:30 -0000 5.1.2.3 *************** *** 295,298 **** --- 295,301 ---- // // $Log$ + // Revision 5.1.2.3 2005/05/27 11:07:30 thoagland + // Added support for pseudo, parameter, clear, apply, and bind to take an optional pattern for the -list switch. + // // Revision 5.1.2.2 2005/05/24 11:36:48 thoagland // Added support for spectrum -list [-byid] [pattern] *************** *** 486,490 **** Int_t ListBindings (CTCLResult& rResult, STD(vector)<UInt_t>& rvIds) ; Int_t ListXidBindings (CTCLResult& rResult, STD(vector)<UInt_t>& rvXIds) ; ! void ListAllBindings (CTCLResult& rResult) ; Bool_t GetChannel (CTCLResult& rResult, const STD(string)& rName, const STD(vector)<UInt_t>& pIndices) ; --- 489,493 ---- Int_t ListBindings (CTCLResult& rResult, STD(vector)<UInt_t>& rvIds) ; Int_t ListXidBindings (CTCLResult& rResult, STD(vector)<UInt_t>& rvXIds) ; ! void ListAllBindings (CTCLResult& rResult, const char* pattern) ; Bool_t GetChannel (CTCLResult& rResult, const STD(string)& rName, const STD(vector)<UInt_t>& pIndices) ; *************** *** 508,511 **** --- 511,517 ---- int nArgs, char* pArgs[]); static void GetNameList(STD(vector)<STD(string)>& rvNames, + CTCLResult& rResult, + char* pattern); + static void GetNameList(STD(vector)<STD(string)>& rvNames, int nArgs, char* pArgs[]); static const char* SpecTypeToText(SpectrumType_t sType); Index: BindCommand.cpp =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/BindCommand.cpp,v retrieving revision 5.1.2.1 retrieving revision 5.1.2.2 diff -C2 -d -r5.1.2.1 -r5.1.2.2 *** BindCommand.cpp 15 Dec 2004 17:24:02 -0000 5.1.2.1 --- BindCommand.cpp 27 May 2005 11:07:29 -0000 5.1.2.2 *************** *** 444,481 **** } - ////////////////////////////////////////////////////////////////////////// - // - // Function: - // Int_t BindByName(CTCLInterpreter& rInterp, CTCLResult& rResult, - // int nArgs, char* pArgs[]); - // Operation Type: - // Utility: - // - Int_t - CBindCommand::BindByName(CTCLInterpreter& rInterp, CTCLResult& rResult, - int nArgs, char* pArgs[]) - { - // Binds a list of spectrum names to Displayer slots. - // - // Formal Parameters: - // CTCLInterpreter& rInterp: - // TCL Interpreter executing the command. - // CTCLResult& rResult: - // Result string associated with this interpreter. - // int nArgs, char* p Args[]: - // Command line parameters. - // Returns: - // TCL_OK if bound. - // TCL_ERROR if some could not be bound. - // - - - vector<string> vNames; - CSpectrumPackage::GetNameList(vNames, nArgs, pArgs); - CSpectrumPackage& rPack = (CSpectrumPackage&)getMyPackage(); - return rPack.BindList(rResult, vNames); - } ////////////////////////////////////////////////////////////////////////// // --- 444,449 ---- *************** *** 516,519 **** --- 484,515 ---- } + + Int_t + CBindCommand::BindByName(CTCLInterpreter& rInterp, CTCLResult& rResult, + int nArgs, char* pArgs[]) + { + // Binds a list of spectrum names to Displayer slots. + // + // Formal Parameters: + // CTCLInterpreter& rInterp: + // TCL Interpreter executing the command. + // CTCLResult& rResult: + // Result string associated with this interpreter. + // int nArgs, char* p Args[]: + // Command line parameters. + // Returns: + // TCL_OK if bound. + // TCL_ERROR if some could not be bound. + // + + + std::vector<std::string> vNames; + CSpectrumPackage::GetNameList(vNames, nArgs, pArgs); + + CSpectrumPackage& rPack = (CSpectrumPackage&)getMyPackage(); + + return rPack.BindList(rResult, vNames); + } + ////////////////////////////////////////////////////////////////////////// // *************** *** 564,576 **** case keNotSwitch: // List given names. ! return ListByName(rInterp, rResult, nArgs, pArgs); default: // Invalid switch in this context... ! Usage(rResult); ! return TCL_ERROR; } } else { ! return ListAll(rInterp, rResult); } --- 560,573 ---- case keNotSwitch: // List given names. ! //return ListByName(rInterp, rResult, nArgs, pArgs); ! return ListAll(rInterp,rResult, pArgs[0]); default: // Invalid switch in this context... ! return ListAll(rInterp,rResult, pArgs[0]); ! } } else { ! return ListAll(rInterp, rResult, "*"); } *************** *** 584,588 **** // Int_t ! CBindCommand::ListAll(CTCLInterpreter& rInterp, CTCLResult& rResult) { // List all spectrum bindings. --- 581,585 ---- // Int_t ! CBindCommand::ListAll(CTCLInterpreter& rInterp, CTCLResult& rResult, const char* pattern) { // List all spectrum bindings. *************** *** 590,594 **** CSpectrumPackage& rPack = (CSpectrumPackage&)getMyPackage(); ! rPack.ListAllBindings(rResult); return TCL_OK; --- 587,591 ---- CSpectrumPackage& rPack = (CSpectrumPackage&)getMyPackage(); ! rPack.ListAllBindings(rResult, pattern); return TCL_OK; Index: BindCommand.h =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/BindCommand.h,v retrieving revision 5.1.2.1 retrieving revision 5.1.2.2 diff -C2 -d -r5.1.2.1 -r5.1.2.2 *** BindCommand.h 15 Dec 2004 17:24:03 -0000 5.1.2.1 --- BindCommand.h 27 May 2005 11:07:30 -0000 5.1.2.2 *************** *** 365,369 **** int nArgs, char* pArgs[]) ; ! Int_t ListAll(CTCLInterpreter& rInterp, CTCLResult& rResult); Int_t ListByName(CTCLInterpreter& rInterp, CTCLResult& rResult, int nArgs, char* pArgs[]); --- 365,370 ---- int nArgs, char* pArgs[]) ; ! Int_t ListAll(CTCLInterpreter& rInterp, CTCLResult& rResult, ! const char* pattern); Int_t ListByName(CTCLInterpreter& rInterp, CTCLResult& rResult, int nArgs, char* pArgs[]); Index: ApplyCommand.cpp =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/ApplyCommand.cpp,v retrieving revision 5.1.2.1 retrieving revision 5.1.2.2 diff -C2 -d -r5.1.2.1 -r5.1.2.2 *** ApplyCommand.cpp 15 Dec 2004 17:24:01 -0000 5.1.2.1 --- ApplyCommand.cpp 27 May 2005 11:07:29 -0000 5.1.2.2 *************** *** 460,465 **** // apply -list // lists all spectra and their gates. ! // apply -list spec1 [spec2 ...] ! // lists gates applied specified spectra. // Formal Parameters: // CTCLInterpreter& rInterp: --- 460,465 ---- // apply -list // lists all spectra and their gates. ! // apply -list [pattern] ! // lists gates applied specified pattern. // Formal Parameters: // CTCLInterpreter& rInterp: *************** *** 490,523 **** // The only difference between no more parameters and parameters // is how the Spectra vector is filled: ! if(nArgs != 0) { // Fill Spectra from command parameters: ! do { ! Spectra.push_back(string(*pArgs)); ! ! nArgs--; ! pArgs++; ! } ! while (nArgs > 0); ! } ! else { // Fill spectra from the histogrammer's dict. ! CHistogrammer* pHist = Package.getHistogrammer(); ! SpectrumDictionaryIterator p = pHist->SpectrumBegin(); ! while(p != pHist->SpectrumEnd()) { Spectra.push_back((*p).second->getName()); - p++; } } // Now Spectra contains the names of the histograms we want application // information about, the rest is common code: ! vector<string>::iterator p = Spectra.begin(); Bool_t SomeFailed = kfFALSE; CTCLString Failures, Successes; ! while(p != Spectra.end()) { CTCLString Result; ! if(Package.ListAppliedGate(Result, *p)) { // List worked. Successes.StartSublist(); ! Successes.AppendElement(*p); Successes.AppendElement(Result); Successes.EndSublist(); --- 490,522 ---- // The only difference between no more parameters and parameters // is how the Spectra vector is filled: + char* pattern = "*"; + if (nArgs != 0) + { + pattern = pArgs[0]; + } ! CHistogrammer* pHist = Package.getHistogrammer(); ! SpectrumDictionaryIterator p = pHist->SpectrumBegin(); ! while(p != pHist->SpectrumEnd()) { ! const char* name = (((*p).second)->getName()).c_str(); ! if (Tcl_StringMatch(name, pattern)) ! { Spectra.push_back((*p).second->getName()); } + p++; + } // Now Spectra contains the names of the histograms we want application // information about, the rest is common code: ! vector<string>::iterator p2 = Spectra.begin(); Bool_t SomeFailed = kfFALSE; CTCLString Failures, Successes; ! while(p2 != Spectra.end()) { CTCLString Result; ! if(Package.ListAppliedGate(Result, *p2)) { // List worked. Successes.StartSublist(); ! Successes.AppendElement(*p2); Successes.AppendElement(Result); Successes.EndSublist(); *************** *** 527,536 **** SomeFailed = kfTRUE; Failures.StartSublist(); ! Failures.AppendElement(*p); Failures.AppendElement(Result); Failures.EndSublist(); Failures.Append("\n"); } ! p++; } if(SomeFailed) { --- 526,535 ---- SomeFailed = kfTRUE; Failures.StartSublist(); ! Failures.AppendElement(*p2); Failures.AppendElement(Result); Failures.EndSublist(); Failures.Append("\n"); } ! p2++; } if(SomeFailed) { *************** *** 557,561 **** Use += " Usage\n"; Use += " apply gate spectrum1 [spectrum2 ...]\n"; ! Use += " apply -list [spectrum1 ...]\n"; return Use; } --- 556,560 ---- Use += " Usage\n"; Use += " apply gate spectrum1 [spectrum2 ...]\n"; ! Use += " apply -list [pattern]\n"; return Use; } Index: SpectrumCommand.cpp =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/SpecTcl/SpectrumCommand.cpp,v retrieving revision 5.1.2.3 retrieving revision 5.1.2.4 diff -C2 -d -r5.1.2.3 -r5.1.2.4 *** SpectrumCommand.cpp 24 May 2005 11:36:48 -0000 5.1.2.3 --- SpectrumCommand.cpp 27 May 2005 11:07:30 -0000 5.1.2.4 *************** *** 307,310 **** --- 307,313 ---- // // $Log$ + // Revision 5.1.2.4 2005/05/27 11:07:30 thoagland + // Added support for pseudo, parameter, clear, apply, and bind to take an optional pattern for the -list switch. + // // Revision 5.1.2.3 2005/05/24 11:36:48 thoagland // Added support for spectrum -list [-byid] [pattern] *************** *** 800,804 **** pattern = pArgs[0]; rPack.ListSpectra(vDescriptions, pattern); - //SortSpectraByName(vDescriptions); VectorToResult(rResult, vDescriptions); return TCL_OK; --- 803,806 ---- |