summaryrefslogtreecommitdiff
path: root/undoaction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'undoaction.cpp')
-rw-r--r--undoaction.cpp62
1 files changed, 56 insertions, 6 deletions
diff --git a/undoaction.cpp b/undoaction.cpp
index 5d2e5268..8b596888 100644
--- a/undoaction.cpp
+++ b/undoaction.cpp
@@ -25,13 +25,63 @@ using namespace Json;
using namespace std;
-UndoAction::UndoAction(const BNUndoAction& action)
+UndoAction::UndoAction(BNUndoAction* action)
{
- actionType = action.actionType;
- summaryText = action.summaryText;
- summaryTokens.reserve(action.summaryTokenCount);
- for (size_t i = 0; i < action.summaryTokenCount; i++)
+ m_object = action;
+}
+
+
+std::string UndoAction::GetSummaryText()
+{
+ char* summary = BNUndoActionGetSummaryText(m_object);
+ std::string result = summary;
+ BNFreeString(summary);
+ return result;
+}
+
+
+vector<InstructionTextToken> UndoAction::GetSummary()
+{
+ size_t count = 0;
+ BNInstructionTextToken* result = BNUndoActionGetSummary(m_object, &count);
+ vector<InstructionTextToken> newTokens;
+ return InstructionTextToken::ConvertAndFreeInstructionTextTokenList(result, count);
+}
+
+
+UndoEntry::UndoEntry(BNUndoEntry* entry)
+{
+ m_object = entry;
+}
+
+
+std::string UndoEntry::GetId()
+{
+ char* id = BNUndoEntryGetId(m_object);
+ std::string result = id;
+ BNFreeString(id);
+ return result;
+}
+
+
+std::vector<Ref<UndoAction>> UndoEntry::GetActions()
+{
+ size_t count;
+
+ BNUndoAction** actions = BNUndoEntryGetActions(m_object, &count);
+ std::vector<Ref<UndoAction>> result;
+ result.reserve(count);
+ for (size_t i = 0; i < count; i++)
{
- summaryTokens.push_back(action.summaryTokens[i]);
+ result.push_back(new UndoAction(BNNewUndoActionReference(actions[i])));
}
+
+ BNFreeUndoActionList(actions, count);
+ return result;
+}
+
+
+uint64_t UndoEntry::GetTimestamp()
+{
+ return BNUndoEntryGetTimestamp(m_object);
}