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:
@@ -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
|
||||
@@ -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