Allow saving SES to provided data storage
It is not always efficient (or possible) to use standard output streams. Moreover, such generated result may be now further processed.
This commit is contained in:
27
examples/storage.hpp
Normal file
27
examples/storage.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef DTL_STORAGE
|
||||
#define DTL_STORAGE
|
||||
|
||||
#include <dtl/dtl.hpp>
|
||||
|
||||
template <typename sesElem, typename storedData >
|
||||
class CustomStorage : public dtl::Storage < sesElem, storedData >
|
||||
{
|
||||
public :
|
||||
CustomStorage(storedData& sd) : dtl::Storage < sesElem, storedData > (sd) {}
|
||||
~CustomStorage() {}
|
||||
void operator() (const sesElem& se) const {
|
||||
switch (se.second.type) {
|
||||
case dtl::SES_ADD:
|
||||
this->storedData_ = this->storedData_ + "Add: " + se.first + "\n";
|
||||
break;
|
||||
case dtl::SES_DELETE:
|
||||
this->storedData_ = this->storedData_ + "Delete: " + se.first + "\n";
|
||||
break;
|
||||
case dtl::SES_COMMON:
|
||||
this->storedData_ = this->storedData_ + "Common: " + se.first + "\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif // DTL_STORAGE
|
38
examples/strdiff_storage.cpp
Normal file
38
examples/strdiff_storage.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include <dtl/dtl.hpp>
|
||||
#include "common.hpp"
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "storage.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
using dtl::Diff;
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
|
||||
if (isFewArgs(argc)) {
|
||||
cerr << "Too few arguments." << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
typedef char elem;
|
||||
typedef string sequence;
|
||||
|
||||
sequence A(argv[1]);
|
||||
sequence B(argv[2]);
|
||||
|
||||
Diff< elem, sequence > d(A, B);
|
||||
d.compose();
|
||||
|
||||
// Shortest Edit Script
|
||||
cout << "SES" << endl;
|
||||
|
||||
string result;
|
||||
|
||||
d.storeSES < string, CustomStorage > (result);
|
||||
|
||||
cout << result;
|
||||
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user