25  out << 
"#include \"Writable_Database.h\"\n";
 
   26  out << 
"#include \"joedb/journal/Readonly_Memory_File.h\"\n";
 
   28  out << 
"#include <ctime>\n\n";
 
   34 void Writable_Database::write_comment(const std::string &comment)
 
   37  journal.comment(comment);
 
   41 void Writable_Database::write_timestamp()
 
   44  journal.timestamp(std::time(nullptr));
 
   48 void Writable_Database::write_timestamp(int64_t timestamp)
 
   51  journal.timestamp(timestamp);
 
   55 void Writable_Database::write_valid_data()
 
   62 void Writable_Database::play_journal()
 
   65  max_record_id = journal.get_checkpoint();
 
   66  ready_to_write = false;
 
   67  journal.play_until_checkpoint(*this);
 
   68  ready_to_write = true;
 
   73 void Writable_Database::auto_upgrade()
 
   76  const size_t file_schema_size = size_t(schema_file.get_size());
 
   78  if (file_schema_size < detail::schema_string_size)
 
   80   journal.comment("Automatic schema upgrade");
 
   82   joedb::Readonly_Memory_File schema_file(detail::schema_string, detail::schema_string_size);
 
   83   joedb::Readonly_Journal schema_journal(schema_file);
 
   85   schema_journal.skip_directly_to(int64_t(file_schema_size));
 
   86   schema_journal.raw_play_until(journal, detail::schema_string_size);
 
   88   schema_journal.skip_directly_to(int64_t(file_schema_size));
 
   89   upgrading_schema = true;
 
   90   schema_journal.raw_play_until(*this, detail::schema_string_size);
 
   91   upgrading_schema = false;
 
   94   journal.soft_checkpoint();
 
   99 void Writable_Database::initialize()
 
  109 Writable_Database::Writable_Database
 
  112  joedb::Abstract_File &file,
 
  113  joedb::Recovery recovery,
 
  114  bool perform_initialization
 
  116  journal(joedb::Journal_Construction_Lock(file, recovery))
 
  120  if (perform_initialization)
 
  125 Writable_Database::Writable_Database(joedb::Abstract_File &file):
 
  127  Writable_Database(file, joedb::Recovery::none, true)
 
  132 Writable_Database::Writable_Database