pluginarg.cpp
来自「ncbi源码」· C++ 代码 · 共 644 行 · 第 1/2 页
CPP
644 行
}//// string handlers//void CPluginArg::SetString(void){ SetData().Reset(); SetData().SetSingle().SetString();}void CPluginArg::SetString(const string& arg){ SetData().Reset(); SetData().SetSingle().SetString(arg);}void CPluginArg::SetString(const list<string>& string_list){ SetData().Reset(); ITERATE (list<string>, iter, string_list) { CRef<CPluginValue> value(new CPluginValue()); value->SetString(*iter); SetData().SetArray().push_back(value); }}const string& CPluginArg::AsString(void) const{ if ( !GetData().IsSingle() ) { NCBI_THROW(CPluginException, eInvalidArg, "Attempt to cast array argument to single object"); } return GetData().GetSingle().AsString();}//// file handlers//void CPluginArg::SetFile(void){ SetData().Reset(); SetData().SetSingle().SetFile();}void CPluginArg::SetFile(const string& arg){ SetData().Reset(); SetData().SetSingle().SetFile(arg);}void CPluginArg::SetFile(const list<string>& file_list){ SetData().Reset(); ITERATE (list<string>, iter, file_list) { CRef<CPluginValue> value(new CPluginValue()); value->SetFile(*iter); SetData().SetArray().push_back(value); }}const string& CPluginArg::AsFile(void) const{ if ( !GetData().IsSingle() ) { NCBI_THROW(CPluginException, eInvalidArg, "Attempt to cast array argument to single object"); } return GetData().GetSingle().AsFile();}//// document handlers//void CPluginArg::SetDocument(void){ SetData().Reset(); CPluginValue& value = SetData().SetSingle(); value.SetDocument();}void CPluginArg::SetDocument(const IDocument& arg){ SetData().Reset(); SetData().SetSingle().SetDocument(arg);}void CPluginArg::SetDocument(const TValues& Document_list){ SetData().Reset(); ITERATE (TValues, iter, Document_list) { CRef<CPluginValue> value(new CPluginValue()); value->SetDocument(*(*iter)->GetDocument()); SetData().SetArray().push_back(value); }}const IDocument& CPluginArg::AsDocument(void) const{ if ( !GetData().IsSingle() ) { NCBI_THROW(CPluginException, eInvalidArg, "Attempt to cast array argument to single object"); } return GetData().GetSingle().AsDocument();}//// object handlers//void CPluginArg::SetObject(const string& type){ SetData().Reset(); SetData().SetSingle().SetObject(type);}void CPluginArg::SetObject(const CTypeInfo* info){ SetData().Reset(); SetData().SetSingle().SetObject(info);}void CPluginArg::SetObject(const IDocument& doc, const CObject& obj){ SetData().Reset(); SetData().SetSingle().SetObject(doc, obj);}void CPluginArg::SetObject(const TValues& obj_list){ SetData().Reset(); ITERATE (TValues, iter, obj_list) { SetData().SetArray().push_back (CRef<CPluginValue> (const_cast<CPluginValue*>(iter->GetPointer()))); }}const CObject& CPluginArg::AsObject(void) const{ if ( !GetData().IsSingle() ) { NCBI_THROW(CPluginException, eInvalidArg, "Attempt to cast array argument to single object"); } return GetData().GetSingle().AsObject();}//// generic list accessors//void CPluginArg::SetList(void){ if (GetData().IsSingle()) { CRef<CPluginValue> value(&SetData().SetSingle()); SetData().Reset(); SetData().SetArray().push_back(value); }}void CPluginArg::SetList(const TValues& args){ SetData().Reset(); SetData().SetArray(); ITERATE (TValues, iter, args) { CPluginValue* value = const_cast<CPluginValue*> (iter->GetPointer()); SetData().SetArray().push_back( CRef<CPluginValue>(value)); }}void CPluginArg::AsList(TValues& arg) const{ if ( !GetData().IsArray() ) { NCBI_THROW(CPluginException, eInvalidArg, "Attempt to cast single argument to array"); } arg.clear(); ITERATE (TData::TArray, iter, GetData().GetArray()) { arg.push_back(*iter); }}END_objects_SCOPE // namespace ncbi::objects::END_NCBI_SCOPE/* * =========================================================================== * * $Log: PluginArg.cpp,v $ * Revision 1000.2 2004/06/01 20:53:33 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.26 * * Revision 1.26 2004/05/21 22:27:45 gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.25 2004/03/08 20:21:06 jcherry * Fixed object argument clearing * * Revision 1.24 2004/02/04 13:36:42 dicuccio * Implemented resetting of object-based arguments * * Revision 1.23 2003/12/23 20:23:21 jcherry * Make argument values persist across invocations of plugin * * Revision 1.22 2003/12/16 20:39:47 jcherry * Added support for plugin arguments of type file * * Revision 1.21 2003/10/27 17:44:33 dicuccio * Reworked CPluginValue to be a variant. Removed ad hoc URL encoding * * Revision 1.20 2003/10/07 13:36:45 dicuccio * Renamed PluginURL* to PluginValue*. Moved validation code into CPluginUtils * * Revision 1.19 2003/09/04 14:03:20 dicuccio * Use IDocument instead of CDocument * * Revision 1.18 2003/07/23 19:14:08 dicuccio * Moved logic for validating plugin arguments into CPluginUtils. * * Revision 1.17 2003/07/22 15:30:47 dicuccio * Dropped support for CSeqVector as a named type. Changed to take advantage of * new Convert() API * * Revision 1.16 2003/06/26 15:33:39 dicuccio * Moved GetURLValue() from PluginURL.hpp to plugin_utils.hpp. Fixed compilation * errors relating to missing #includes * * Revision 1.15 2003/06/25 17:02:56 dicuccio * Split CPluginHandle into a handle (pointer-to-implementation) and * implementation file. Lots of #include file clean-ups. * * Revision 1.14 2003/05/19 13:37:46 dicuccio * Moved gui/core/plugin/ --> gui/plugin/ * * Revision 1.13 2003/05/09 16:45:51 dicuccio * Cleaned up IsValid(). Added IsEmpty() - useful check for optional arguments * * Revision 1.12 2003/05/06 15:56:38 dicuccio * Added _TRACE() for all failed object constraints - aids debugging. Removed * unnecessary const_cast<> following object conversion * * Revision 1.11 2003/04/30 13:53:57 dicuccio * Fixed bug in setting of integral argument types - don't reset the whole object, * just the data. * * Revision 1.10 2003/04/29 14:47:04 dicuccio * Added internal API for checking constraints of object arguments. Reworked * constraint code in general * * Revision 1.9 2003/04/24 16:31:57 dicuccio * Simplified object storage - use a more generic mechanism for specifying objects. * * Revision 1.8 2003/03/25 19:40:30 dicuccio * Added CSeq_annot as a named type * * Revision 1.7 2003/03/25 13:12:03 dicuccio * Added checking of constraint values in IsValid() * * Revision 1.6 2003/03/10 23:01:18 kuznets * iterate -> ITERATE * * Revision 1.5 2003/03/10 16:03:42 dicuccio * Added accessors for an argument's associated document and abstract object * * Revision 1.4 2003/03/03 14:50:56 dicuccio * Added plugin argument constraints - lower bound, upper bound, range, and * member-of-set * * Revision 1.3 2003/02/26 14:28:05 dicuccio * Changed all setters to use const objects, to avoid using const_cast<> outside * of this class * * Revision 1.2 2003/02/25 14:46:24 dicuccio * Changed internal representation of plugin URL. Changed data model argument * types to support an implied document argument as well - this enables such * arguments to pass scopes with the argument value * * Revision 1.1 2003/02/24 13:03:17 dicuccio * Renamed classes in plugin spec: * CArgSeg --> CPluginArgSet * CArgument --> CPluginArg * CPluginArgs --> CPluginCommand * CPluginCommands --> CPluginCommandSet * * Revision 1.1 2003/02/20 19:49:57 dicuccio * Created new plugin architecture, based on ASN.1 spec. Moved GBENCH frameowrk * over to use new plugin architecture. * * * =========================================================================== *//* Original file checksum: lines: 64, chars: 1879, CRC32: 6874a1e4 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?