Ich schreibe eine Desktop-Anwendung, um Vektorzeichnungen in C++ zu machen, und über die Verwendung von sqlite, um meine Undo/Redo-Funktion zu unterstützen.Wie kann sqlite für Funktionen zum Rückgängigmachen/Wiederherstellen verwendet werden?
Hat jemand sqlite für Undo/Redo Funktionen verwendet? Wie geht es dir?
Klarstellung:
ich bewusst den Stack-Ansatz war, habe ich auch eine Anwendung mit diesem Ansatz umgesetzt. Das Problem, auf das ich stieß, war, dass es nach einer Weile schwer zu pflegen ist.
Was ich mit sqlite gemeint habe, ist, dass ich meine gesamte In-Memory-Datenstruktur in eine SQLite-Datenbank mappen werde, und lasse die SQLite das Diff und die Revision für mich machen. Geschwindigkeit sollte kein Problem sein, wenn ich eine In-Memory-Datenbank erstellen.
Das war die Idee und ich fragte mich, ob das funktionieren könnte.
Das scheint übertrieben. Was stimmt nicht mit dem normalen Ansatz mit begrenztem Stapel/Befehlsmuster überein? –
http://c2.com/cgi/wiki?AbstractionInversion –
Ich stimme mit Pete überein. Beginnen Sie mit einem Stack-basierten Ansatz; Wenn das nicht funktioniert, sehen Sie, wie Sie jedem Befehl die Möglichkeit geben, sich in einer Datenbank zu serialisieren/zu deserialisieren. Aber wirklich, wenn Sie etwas wirklich seltsames tun, wird der Stack-basierte Ansatz * es * schneiden. –