The unified diff between revisions [5faf8525..] and [9867efd6..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "CMakeLists.txt"
#  from [b8570d1c8da32bb3f49860f4e186da1ad3dbd59c]
#    to [425f98a63acac54685f5ab8466561dcedacfb730]
#
# patch "markov.cc"
#  from [49cdf27001d01c35712aba913bf4ac8e7d7f775f]
#    to [b0ce6578ebe4d2fdb671a7a0c33f9d41a5e128c5]
#
# patch "markov.hh"
#  from [7dab25f5b7ca2e025ff8b7c1933f6a2f89aef7cf]
#    to [d6bdb71376cc7dea297ff33c6deaf8eeee58931a]
#
# patch "tokens_test.cc"
#  from [9c4d1052169de64388df878bb13cc0e7ca664197]
#    to [ec8501546e175fa12130e15c4c5f5641ddf03689]
#
============================================================
--- CMakeLists.txt	b8570d1c8da32bb3f49860f4e186da1ad3dbd59c
+++ CMakeLists.txt	425f98a63acac54685f5ab8466561dcedacfb730
@@ -1,28 +1,30 @@
+PROJECT (fritz.it)

-project (fritz.it)
+FIND_PACKAGE (Boost)
+INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+MESSAGE(STATUS "Linking in::: ${Boost_LIBRARY_DIRS} (${LINK_FLAGS})")

-find_library (LIB_RT rt)
-find_library (LIB_DL dl)
+ADD_EXECUTABLE (fritz_server fritz.cc fritz_server.cc)
+ADD_LIBRARY (fritz_client SHARED fritz_client.cc fritz.cc)
+ADD_EXECUTABLE (fritz_this fritz_this.cc)
+ADD_EXECUTABLE (tokens_test tokens_test.cc markov.cc)
+ADD_EXECUTABLE (test test.cc)

-add_executable (fritz_server fritz.cc fritz_server.cc)
-IF (LIB_RT)
-	target_link_libraries (fritz_server ${LIB_RT} dl)
-ENDIF (LIB_RT)
+FIND_LIBRARY (LIB_DL dl)
 IF (LIB_DL)
-	target_link_libraries (fritz_server ${LIB_DL} dl)
+    TARGET_LINK_LIBRARIES (fritz_server ${LIB_DL} dl)
+    TARGET_LINK_LIBRARIES (fritz_client ${LIB_DL} dl)
 ENDIF (LIB_DL)

-add_library (fritz_client SHARED fritz_client.cc fritz.cc)
+FIND_LIBRARY (LIB_RT rt)
 IF (LIB_RT)
-	target_link_libraries (fritz_client ${LIB_RT} dl)
+    TARGET_LINK_LIBRARIES (fritz_server ${LIB_DL} dl)
+    TARGET_LINK_LIBRARIES (fritz_client ${LIB_DL} dl)
 ENDIF (LIB_RT)
-IF (LIB_DL)
-	target_link_libraries (fritz_client ${LIB_DL} dl)
-ENDIF (LIB_DL)

-add_executable (fritz_this fritz_this.cc)
+IF (Boost_FOUND)
+    TARGET_LINK_LIBRARIES (fritz_server boost_serialization dl)
+    TARGET_LINK_LIBRARIES (tokens_test boost_serialization dl)
+ENDIF (Boost_FOUND)

-add_executable (tokens_test tokens_test.cc markov.cc)
-
-add_executable (test test.cc)
-
============================================================
--- markov.cc	49cdf27001d01c35712aba913bf4ac8e7d7f775f
+++ markov.cc	b0ce6578ebe4d2fdb671a7a0c33f9d41a5e128c5
============================================================
--- markov.hh	7dab25f5b7ca2e025ff8b7c1933f6a2f89aef7cf
+++ markov.hh	d6bdb71376cc7dea297ff33c6deaf8eeee58931a
@@ -7,7 +7,12 @@
 #include <deque>
 #include <map>

+#include <boost/archive/text_oarchive.hpp>
+#include <boost/archive/text_iarchive.hpp>
+
 class MarkovState {
+    friend class boost::serialization::access;
+
 public:
     std::deque<token_t> state;
     bool valid;
@@ -19,6 +24,12 @@ public:
     bool operator==(const MarkovState &);
     bool operator!=(const MarkovState &);
     bool operator<(const MarkovState &);
+    template <class Archive>
+    void serialize(Archive &ar, const unsigned int version)
+    {
+        ar & state;
+        ar & valid;
+    }
 };

 typedef std::pair< MarkovState, MarkovState > markov_pair;
@@ -87,11 +98,17 @@ private:
 class MarkovModel {
 private:
     std::map<markov_pair, int > edges;
+    friend class boost::serialization::access;

 public:
     MarkovModel (const Stash&, int);
     ~MarkovModel ();
     void Dump();
+    template <class Archive>
+    void serialize(Archive & ar, const unsigned int version)
+    {
+        ar & edges;
+    }
 };

 #endif
============================================================
--- tokens_test.cc	9c4d1052169de64388df878bb13cc0e7ca664197
+++ tokens_test.cc	ec8501546e175fa12130e15c4c5f5641ddf03689
@@ -1,8 +1,12 @@

 #include <iostream>
+#include <fstream>
 #include "markov.hh"
 #include "tokens.hh"

+#include <boost/archive/text_oarchive.hpp>
+#include <boost/archive/text_iarchive.hpp>
+
 using namespace std;

 typedef Tokens<string> s_tok;
@@ -42,7 +46,14 @@ test (void)
     input_test (t);
 //    t.playback ();
     MarkovModel m(t, 2);
-//    m.Dump();
+    m.Dump();
+
+    {
+        int a = 2;
+        std::ofstream ofs ("test.ser");
+        boost::archive::text_oarchive oa(ofs);
+        oa << a;
+    }
 }

 int