本文整理汇总了C++中io::XMLArchive类的典型用法代码示例。如果您正苦于以下问题:C++ XMLArchive类的具体用法?C++ XMLArchive怎么用?C++ XMLArchive使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了XMLArchive类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: run
bool run() {
DataModel::VS::VSPtr vs = new DataModel::VS::VS;
DataModel::CreationInfo ci;
ci.setAgencyID(agencyID());
ci.setAuthor(author());
ci.setCreationTime(Core::Time::GMT());
DataModel::VS::EnvelopePtr env = DataModel::VS::Envelope::Create();
env->setCreationInfo(ci);
env->setNetwork("CH");
env->setStation("ZUR");
DataModel::VS::EnvelopeChannelPtr cha = DataModel::VS::EnvelopeChannel::Create();
cha->setName("Z");
cha->setWaveformID(DataModel::WaveformStreamID("CH", "ZUR", "", "HGZ", ""));
cha->add(new DataModel::VS::EnvelopeValue(0.3, "vel", Core::None));
cha->add(new DataModel::VS::EnvelopeValue(0.2, "acc", Core::None));
cha->add(new DataModel::VS::EnvelopeValue(0.1, "disp", Core::None));
env->add(cha.get());
vs->add(env.get());
IO::XMLArchive ar;
ar.create("-");
ar.setFormattedOutput(true);
ar << vs;
return true;
}
开发者ID:Fran89,项目名称:seiscomp3,代码行数:31,代码来源:test.cpp
示例2: loadEventParam
bool loadEventParam(DataModel::EventParametersPtr &ep, const string &data,
bool gzip = false) {
bool retn = false;
bool registrationEnabled = DataModel::PublicObject::IsRegistrationEnabled();
DataModel::PublicObject::SetRegistrationEnabled(false);
try {
io::filtering_istreambuf buf;
container_source<string> src(data);
if ( gzip ) buf.push(io::gzip_decompressor());
buf.push(src);
IO::XMLArchive ar;
if ( !ar.open(&buf) )
SEISCOMP_ERROR("[xml] could not open stream buffer for reading");
else {
ar >> ep;
ar.close();
retn = true;
}
}
catch (string &e) {
SEISCOMP_ERROR("[xml] %s", e.c_str());
}
catch (exception &e) {
SEISCOMP_ERROR("[xml] %s", e.what());
}
DataModel::PublicObject::SetRegistrationEnabled(registrationEnabled);
return retn;
}
开发者ID:koukou73gr,项目名称:seiscomp3,代码行数:29,代码来源:app.cpp
示例3: importDatabase
bool importDatabase() {
IO::XMLArchive ar;
if ( _inputFile == "-" )
ar.open(cin.rdbuf());
else if ( !ar.open(_inputFile.c_str()) ) {
cout << "Error: could not open input file '" << _inputFile << "'" << endl;
return false;
}
cout << "Parsing file '" << _inputFile << "'..." << endl;
Util::StopWatch timer;
DataModel::ObjectPtr doc;
ar >> doc;
ar.close();
if ( doc == NULL ) {
cerr << "Error: no valid object found in file '" << _inputFile << "'" << endl;
return false;
}
ObjectDispatcher dispatcher(connection(), _operation, commandline().hasOption("test"), ObjectCounter(doc.get()).count(), 78);
cout << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ROUTING TABLE" << endl;
dispatcher.setRoutingTable(_routingTable);
cout << "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl;
unsigned int totalCount = ObjectCounter(doc.get()).count();
cout << "Time needed to parse XML: " << Core::Time(timer.elapsed()).toString("%T.%f") << endl;
cout << "Document object type: " << doc->className() << endl;
cout << "Total number of objects: " << totalCount << endl;
if ( connection() )
cout << "Dispatching " << doc->className() << " to " << connection()->masterAddress() << endl;
timer.restart();
dispatcher(doc.get());
sync();
cout << endl;
cout << "While dispatching " << dispatcher.count() << "/" << totalCount << " objects " << dispatcher.errors() << " errors occured" << endl;
cout << "Time needed to dispatch " << dispatcher.count() << " objects: " << Core::Time(timer.elapsed()).toString("%T.%f") << endl;
return true;
}
开发者ID:smellyfis,项目名称:seiscomp3,代码行数:45,代码来源:main.cpp
示例4: run
bool MapCut::run() {
SCScheme.map.vectorLayerAntiAlias = true;
DataModel::EventParametersPtr ep;
_htmlArea = commandline().hasOption("html-area");
if ( !_epFile.empty() ) {
IO::XMLArchive ar;
if ( !ar.open(_epFile.c_str()) ) {
cerr << "Unable to open file '" << _epFile << "'" << endl;
return false;
}
ar >> ep;
if ( ep == NULL ) {
cerr << "File '" << _epFile << "' does not contain event parameters" << endl;
return false;
}
}
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:20,代码来源:main.cpp
示例5: run
//.........这里部分代码省略.........
if ( ep )
ep->add(oldAmp.get());
else
updates.push_back(oldAmp);
cerr << "-> " << newAmp->amplitude().value();
}
else
cerr << " no changes";
++ampsRecomputed;
}
else {
cerr << "-";
++errors;
}
cerr << endl;
}
if ( !updates.empty() ) {
if ( !_testMode ) {
NotifierMessagePtr nmsg = new NotifierMessage;
for ( list<AmplitudePtr>::iterator it = updates.begin();
it != updates.end(); ++it ) {
nmsg->attach(new Notifier("EventParameters", OP_UPDATE, it->get()));
}
connection()->send(nmsg.get());
++messagesSent;
if ( messagesSent % 100 == 0 )
sync();
}
else {
cerr << " --------------------------------" << endl;
cerr << " Test mode, nothing sent" << endl;
}
}
}
if ( ep ) {
IO::XMLArchive ar;
ar.create("-");
ar.setFormattedOutput(true);
ar << ep;
ar.close();
}
cerr << "----------------------------------" << endl;
cerr << "Recomputed " << ampsRecomputed << " amplitudes" << endl;
cerr << "Sent " << messagesSent << " messages" << endl;
if ( errors )
cerr << errors << " errors occurred, check the processing log" << endl;
return true;
}
if ( !_epFile.empty() ) {
_fetchMissingAmplitudes = false;
// Disable database
setDatabase(NULL);
_cache.setDatabaseArchive(NULL);
IO::XMLArchive ar;
if ( !ar.open(_epFile.c_str()) ) {
SEISCOMP_ERROR("Failed to open %s", _epFile.c_str());
return false;
}
ar >> _ep;
ar.close();
if ( !_ep ) {
SEISCOMP_ERROR("No event parameters found in %s", _epFile.c_str());
return false;
}
if ( commandline().hasOption("reprocess") ) {
for ( size_t i = 0; i < _ep->amplitudeCount(); ++i ) {
AmplitudePtr amp = _ep->amplitude(i);
feed(amp.get());
}
}
for ( size_t i = 0; i < _ep->originCount(); ++i ) {
OriginPtr org = _ep->origin(i);
SEISCOMP_INFO("Processing origin %s", org->publicID().c_str());
process(org.get());
}
ar.create("-");
ar.setFormattedOutput(true);
ar << _ep;
ar.close();
_ep = NULL;
return true;
}
开发者ID:aemanov,项目名称:seiscomp3,代码行数:101,代码来源:amptool.cpp
示例6: syncInventory
bool syncInventory() {
DataModel::Inventory *targetInv = Client::Inventory::Instance()->inventory();
bool createNotifier = commandline().hasOption("create-notifier");
bool testMode = commandline().hasOption("test");
if ( testMode || _output.empty() ) createNotifier = true;
if ( targetInv == NULL ) {
cerr << "No inventory to sync" << endl;
return false;
}
// Disable object registration
DataModel::PublicObject::SetRegistrationEnabled(false);
// Disable notifier check
DataModel::Notifier::SetCheckEnabled(false);
vector<string> files;
collectFiles(files);
if ( _filebase.empty() && files.empty() ) {
cerr << "Nothing to merge, no files given" << endl;
return false;
}
DataModel::InventoryPtr mergedInventory = new DataModel::Inventory();
Merge merger(mergedInventory.get());
merger.setLogHandler(this);
_continueOperation = true;
_currentTask = &merger;
DataModel::Notifier::SetEnabled(false);
for ( size_t i = 0; i < files.size(); ++i ) {
if ( _exitRequested ) break;
IO::XMLArchive ar;
if ( !ar.open(files[i].c_str()) ) {
cerr << "Could not open file (ignored): " << files[i] << endl;
continue;
}
DataModel::InventoryPtr inv;
cerr << "Parsing " << files[i] << " ... " << flush;
ar >> inv;
cerr << "done" << endl;
if ( !inv ) {
cerr << "No inventory found (ignored): " << files[i] << endl;
continue;
}
_inventorySources[inv.get()] = files[i];
// Pushing the inventory into the merger cleans it
// completely. The ownership of all childs goes to
// the merger
merger.push(inv.get());
}
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
cerr << "Merging inventory ... " << flush;
if ( merger.merge(false) )
cerr << "done" << endl;
else
cerr << "failed" << endl;
printLogs();
if ( !_continueOperation ) {
cerr << "Unresolvable errors ... aborting" << endl;
return false;
}
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
// Activate registration again
DataModel::PublicObject::SetRegistrationEnabled(true);
Sync syncTask(targetInv);
_currentTask = &syncTask;
if ( createNotifier ) DataModel::Notifier::SetEnabled(true);
cerr << "Synchronising inventory ... " << flush;
if ( syncTask.push(mergedInventory.get()) )
cerr << "done";
else
cerr << "failed";
cerr << endl;
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
//.........这里部分代码省略.........
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:101,代码来源:main.cpp
示例7: mergeInventory
bool mergeInventory() {
bool stripUnreferenced = commandline().hasOption("strip");
// Disable object registration
DataModel::PublicObject::SetRegistrationEnabled(false);
vector<string> files;
collectFiles(files);
if ( files.empty() ) {
cerr << "Nothing to merge, no files given" << endl;
return false;
}
DataModel::InventoryPtr finalInventory = new DataModel::Inventory();
Merge merger(finalInventory.get());
merger.setLogHandler(this);
_continueOperation = true;
_currentTask = &merger;
for ( size_t i = 0; i < files.size(); ++i ) {
if ( _exitRequested ) break;
IO::XMLArchive ar;
if ( !ar.open(files[i].c_str()) ) {
cerr << "Could not open file (ignored): " << files[i] << endl;
continue;
}
DataModel::InventoryPtr inv;
cerr << "Parsing " << files[i] << " ... " << flush;
ar >> inv;
cerr << "done" << endl;
if ( !inv ) {
cerr << "No inventory found (ignored): " << files[i] << endl;
continue;
}
_inventorySources[inv.get()] = files[i];
// Pushing the inventory into the merger cleans it
// completely. The ownership of all childs went to
// the merger
merger.push(inv.get());
}
_currentTask = NULL;
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
cerr << "Merging inventory ... " << flush;
merger.merge(stripUnreferenced);
cerr << "done" << endl;
printLogs();
if ( !_continueOperation ) {
cerr << "Unresolvable errors ... aborting" << endl;
return false;
}
if ( _output.empty() ) _output = "-";
IO::XMLArchive ar;
if ( !ar.create(_output.c_str()) ) {
cerr << "Failed to create output file: " << _output << endl;
return false;
}
cerr << "Generating output ... " << flush;
ar.setFormattedOutput(true);
ar << finalInventory;
ar.close();
cerr << "done" << endl;
if ( !_rcdir.empty() ) {
if ( !syncRCFiles(finalInventory.get()) ) return false;
}
return true;
}
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:85,代码来源:main.cpp
示例8: listNetworks
bool listNetworks() {
// Disable object registration
DataModel::PublicObject::SetRegistrationEnabled(false);
vector<string> files;
collectFiles(files);
if ( files.empty() ) {
cerr << "Nothing to merge, no files given" << endl;
return false;
}
DataModel::InventoryPtr finalInventory = new DataModel::Inventory();
Merge merger(finalInventory.get());
_currentTask = &merger;
for ( size_t i = 0; i < files.size(); ++i ) {
if ( _exitRequested ) break;
IO::XMLArchive ar;
if ( !ar.open(files[i].c_str()) ) {
cerr << "Could not open file (ignored): " << files[i] << endl;
continue;
}
DataModel::InventoryPtr inv;
cerr << "Parsing " << files[i] << " ... " << flush;
ar >> inv;
cerr << "done" << endl;
if ( !inv ) {
cerr << "No inventory found (ignored): " << files[i] << endl;
continue;
}
_inventorySources[inv.get()] = files[i];
// Pushing the inventory into the merger cleans it
// completely. The ownership of all childs went to
// the merger
merger.push(inv.get());
}
_currentTask = NULL;
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
cerr << "Merging inventory ... " << flush;
merger.merge(false);
cerr << "done" << endl;
bool compact = commandline().hasOption("compact");
int level = 2;
if ( _level == "net" )
level = 0;
else if ( _level == "sta" )
level = 1;
else if ( _level == "cha" )
level = 2;
else if ( _level == "resp" )
level = 3;
std::vector<DataModel::Network*> nets;
for ( size_t n = 0; n < finalInventory->networkCount(); ++n )
nets.push_back(finalInventory->network(n));
sort(nets.begin(), nets.end(), lessID<DataModel::Network>);
for ( size_t n = 0; n < nets.size(); ++n ) {
DataModel::Network *net = nets[n];
if ( compact )
cout << net->code() << "\t" << epochToStr(net) << endl;
else {
cout << " network " << net->code();
if ( !net->description().empty() ) {
cout << setfill(' ') << setw(8-net->code().size()) << ' ';
cout << " " << net->description();
}
cout << endl;
cout << " epoch " << epochToStr(net) << endl;
}
std::vector<DataModel::Station*> stas;
if ( level > 0 ) {
for ( size_t s = 0; s < net->stationCount(); ++s )
stas.push_back(net->station(s));
}
sort(stas.begin(), stas.end(), lessID<DataModel::Station>);
for ( size_t s = 0; s < stas.size(); ++s ) {
DataModel::Station *sta = stas[s];
if ( compact )
cout << " " << sta->code() << "\t" << epochToStr(sta) << endl;
else {
//.........这里部分代码省略.........
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:101,代码来源:main.cpp
示例9: applyNotifier
bool applyNotifier() {
DataModel::Inventory *targetInv = Client::Inventory::Instance()->inventory();
if ( targetInv == NULL ) {
cerr << "No inventory to apply" << endl;
return false;
}
// Disable object registration
DataModel::PublicObject::SetRegistrationEnabled(false);
vector<string> files;
collectFiles(files);
if ( files.empty() ) {
cerr << "Nothing to apply, no files given" << endl;
return false;
}
Sync syncTask(targetInv);
_currentTask = &syncTask;
for ( size_t i = 0; i < files.size(); ++i ) {
if ( _exitRequested ) break;
IO::XMLArchive ar;
if ( !ar.open(files[i].c_str()) ) {
cerr << "Could not open file (ignored): " << files[i] << endl;
continue;
}
cerr << "Parsing " << files[i] << " ... " << flush;
DataModel::NotifierMessagePtr msg;
ar >> msg;
cerr << "done" << endl;
if ( !msg ) {
cerr << "No notifier message found (ignored): " << files[i] << endl;
continue;
}
size_t notifierCount = msg->size();
cerr << notifierCount << " notifiers available" << endl;
if ( !_output.empty() ) {
cerr << "Applying notifier ... " << flush;
// Apply all notifier
DataModel::NotifierMessage::iterator it;
for ( it = msg->begin(); it != msg->end(); ++it ) {
DataModel::Notifier* n = DataModel::Notifier::Cast(*it);
if ( !n ) continue;
n->apply();
}
cerr << "done" << endl;
}
else {
// Send all notifier
// Send an inital sync command to also wake-up the messaging
sync();
// Send notifier
DataModel::NotifierMessagePtr tmp = new DataModel::NotifierMessage();
DataModel::NotifierMessage::iterator it;
int count = 0;
for ( it = msg->begin(); it != msg->end(); ++it ) {
DataModel::Notifier* n = DataModel::Notifier::Cast(*it);
if ( !n ) continue;
tmp->attach(n);
++count;
if ( count % 100 == 0 ) {
cerr << "\rSending notifiers: " << (int)(count*100/notifierCount) << "%" << flush;
if ( !send(tmp.get()) ) {
SEISCOMP_ERROR("Failed to send message, abort");
return false;
}
tmp->clear();
sync();
}
}
sync();
if ( !tmp->empty() ) {
if ( !send(tmp.get()) ) {
SEISCOMP_ERROR("Failed to send message, abort");
return false;
}
cerr << "\rSending notifiers: " << (int)(count*100/notifierCount) << "%" << flush;
}
}
}
//.........这里部分代码省略.........
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:101,代码来源:main.cpp
示例10: syncKeys
bool syncKeys() {
// Disable object registration
DataModel::PublicObject::SetRegistrationEnabled(false);
// Disable notifier check
DataModel::Notifier::SetCheckEnabled(false);
vector<string> files;
collectFiles(files);
if ( _filebase.empty() && files.empty() ) {
cerr << "Nothing to merge, no files given" << endl;
return false;
}
DataModel::InventoryPtr mergedInventory = new DataModel::Inventory();
Merge merger(mergedInventory.get());
merger.setLogHandler(this);
_continueOperation = true;
_currentTask = &merger;
DataModel::Notifier::SetEnabled(false);
for ( size_t i = 0; i < files.size(); ++i ) {
if ( _exitRequested ) break;
IO::XMLArchive ar;
if ( !ar.open(files[i].c_str()) ) {
cerr << "Could not open file (ignored): " << files[i] << endl;
continue;
}
DataModel::InventoryPtr inv;
cerr << "Parsing " << files[i] << " ... " << flush;
ar >> inv;
cerr << "done" << endl;
if ( !inv ) {
cerr << "No inventory found (ignored): " << files[i] << endl;
continue;
}
_inventorySources[inv.get()] = files[i];
// Pushing the inventory into the merger cleans it
// completely. The ownership of all childs goes to
// the merger
merger.push(inv.get());
}
_currentTask = NULL;
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
cerr << "Merging inventory ... " << flush;
merger.merge(false);
cerr << "done" << endl;
printLogs();
if ( !_continueOperation ) {
cerr << "Unresolvable errors ... aborting" << endl;
return false;
}
_currentTask = NULL;
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
return syncKeyFiles(mergedInventory.get());
}
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:75,代码来源:main.cpp
示例11: checkInventory
bool checkInventory() {
_conflicts = _errors = _warnings = _unresolved = 0;
// Disable object registration
DataModel::PublicObject::SetRegistrationEnabled(false);
vector<string> files;
collectFiles(files);
if ( files.empty() ) {
cerr << "Nothing to merge, no files given" << endl;
return false;
}
DataModel::InventoryPtr finalInventory = new DataModel::Inventory();
Merge merger(finalInventory.get());
merger.setLogHandler(this);
_continueOperation = true;
_currentTask = &merger;
for ( size_t i = 0; i < files.size(); ++i ) {
if ( _exitRequested ) break;
IO::XMLArchive ar;
if ( !ar.open(files[i].c_str()) ) {
cerr << "Could not open file (ignored): " << files[i] << endl;
continue;
}
DataModel::InventoryPtr inv;
cerr << "Parsing " << files[i] << " ... " << flush;
ar >> inv;
cerr << "done" << endl;
if ( !inv ) {
cerr << "No inventory found (ignored): " << files[i] << endl;
continue;
}
_inventorySources[inv.get()] = files[i];
// Pushing the inventory into the merger cleans it
// completely. The ownership of all childs went to
// the merger
merger.push(inv.get());
}
_currentTask = NULL;
if ( _exitRequested ) {
cerr << "Exit requested: abort" << endl;
return false;
}
cerr << "Merging inventory ... " << flush;
merger.merge(false);
cerr << "done" << endl;
Check checker(finalInventory.get());
checker.setLogHandler(this);
cerr << "Checking inventory ... " << flush;
checker.check();
cerr << "done" << endl;
printLogs(cout);
if ( _conflicts > 0 )
cerr << _conflicts << " conflict" << (_conflicts == 1?"":"s") << endl;
if ( _unresolved > 0 )
cerr << _unresolved << " unresolved reference" << (_unresolved == 1?"":"s") << endl;
if ( _errors > 0 )
cerr << _errors << " error" << (_errors == 1?"":"s") << endl;
if ( _warnings > 0 )
cerr << _warnings << " warning" << (_warnings == 1?"":"s") << endl;
return _conflicts == 0 && _errors == 0;
}
开发者ID:SeisComP3,项目名称:seiscomp3,代码行数:80,代码来源:main.cpp
示例12: runFromEPFile
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
bool App::runFromEPFile(const char *fname) {
IO::XMLArchive ar;
if ( !ar.open(fname)) {
SEISCOMP_ERROR("unable to open XML file: %s", fname);
return false;
}
ar >> _ep;
ar.close();
if ( !_ep ) {
SEISCOMP_ERROR("No event parameters found: %s", fname);
return false;
}
SEISCOMP_INFO("finished reading event parameters from XML");
SEISCOMP_INFO(" number of picks: %ld", (long int)_ep->pickCount());
SEISCOMP_INFO(" number of amplitudes: %ld", (long int)_ep->amplitudeCount());
SEISCOMP_INFO(" number of origins: %ld", (long int)_ep->originCount());
typedef std::pair<Core::Time,DataModel::PublicObjectPtr> TimeObject;
typedef std::vector<TimeObject> TimeObjectVector;
// retrieval of relevant objects from event parameters
// and subsequent DSU sort
TimeObjectVector objs;
for ( size_t i = 0; i < _ep->pickCount(); ++i ) {
DataModel::PickPtr pick = _ep->pick(i);
try {
Core::Time t = pick->creationInfo().creationTime();
objs.push_back(TimeObject(t, pick));
}
catch ( ... ) {
SEISCOMP_WARNING("Ignore pick %s: no creation time set",
pick->publicID().c_str());
}
}
for ( size_t i = 0; i < _ep->amplitudeCount(); ++i ) {
DataModel::AmplitudePtr amplitude = _ep->amplitude(i);
try {
Core::Time t = amplitude->creationInfo().creationTime();
objs.push_back(TimeObject(t, amplitude));
}
catch ( ... ) {
SEISCOMP_WARNING("Ignore amplitude %s: no creation time set",
amplitude->publicID().c_str());
}
}
for ( size_t i = 0; i < _ep->originCount(); ++i ) {
DataModel::OriginPtr origin = _ep->origin(i);
try {
Core::Time t = origin->creationInfo().creationTime();
objs.push_back(TimeObject(t, origin));
}
catch ( ... ) {
SEISCOMP_WARNING("Ignore origin %s: no creation time set",
origin->publicID().c_str());
}
}
std::sort(objs.begin(), objs.end());
for (TimeObjectVector::iterator
it = objs.begin(); it != objs.end(); ++it) {
_objects.push(it->second);
}
while ( !_objects.empty() && !isExitRequested() ) {
DataModel::PublicObjectPtr o = _objects.front();
_objects.pop();
addObject("", o.get());
++objectCount;
}
_flush();
ar.create("-");
ar.setFormattedOutput(true);
ar << _ep;
ar.close();
return true;
}
开发者ID:Fran89,项目名称:seiscomp3,代码行数:88,代码来源:app.cpp
注:本文中的io::XMLArchive类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论