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