aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CommandListBuilder.cxx14
-rw-r--r--src/CommandListBuilder.hxx43
2 files changed, 35 insertions, 22 deletions
diff --git a/src/CommandListBuilder.cxx b/src/CommandListBuilder.cxx
index 13cf4eea..55b82a23 100644
--- a/src/CommandListBuilder.cxx
+++ b/src/CommandListBuilder.cxx
@@ -25,23 +25,23 @@
void
CommandListBuilder::Reset()
{
- for (GSList *tmp = cmd_list; tmp != NULL; tmp = g_slist_next(tmp))
+ for (GSList *tmp = list; tmp != NULL; tmp = g_slist_next(tmp))
g_free(tmp->data);
- g_slist_free(cmd_list);
+ g_slist_free(list);
- cmd_list = nullptr;
- cmd_list_OK = -1;
+ list = nullptr;
+ mode = Mode::DISABLED;
}
bool
CommandListBuilder::Add(const char *cmd)
{
size_t len = strlen(cmd) + 1;
- cmd_list_size += len;
- if (cmd_list_size > client_max_command_list_size)
+ size += len;
+ if (size > client_max_command_list_size)
return false;
- cmd_list = g_slist_prepend(cmd_list, g_strdup(cmd));
+ list = g_slist_prepend(list, g_strdup(cmd));
return true;
}
diff --git a/src/CommandListBuilder.hxx b/src/CommandListBuilder.hxx
index dbcc15dc..cc9e7b15 100644
--- a/src/CommandListBuilder.hxx
+++ b/src/CommandListBuilder.hxx
@@ -25,23 +25,38 @@
class CommandListBuilder {
/**
- * for when in list mode
+ * print OK after each command execution
*/
- GSList *cmd_list;
+ enum class Mode {
+ /**
+ * Not active.
+ */
+ DISABLED = -1,
+
+ /**
+ * Enabled in normal list mode.
+ */
+ ENABLED = false,
+
+ /**
+ * Enabled in "list_OK" mode.
+ */
+ OK = true,
+ } mode;
/**
- * print OK after each command execution
+ * for when in list mode
*/
- int cmd_list_OK;
+ GSList *list;
/**
- * mem cmd_list consumes
+ * Memory consumed by the list.
*/
- size_t cmd_list_size;
+ size_t size;
public:
CommandListBuilder()
- :cmd_list(nullptr), cmd_list_OK(-1), cmd_list_size(0) {}
+ :mode(Mode::DISABLED), list(nullptr), size(0) {}
~CommandListBuilder() {
Reset();
}
@@ -50,9 +65,7 @@ public:
* Is a command list currently being built?
*/
bool IsActive() const {
- assert(cmd_list_OK >= -1 && cmd_list_OK <= 1);
-
- return cmd_list_OK >= 0;
+ return mode != Mode::DISABLED;
}
/**
@@ -61,7 +74,7 @@ public:
bool IsOKMode() const {
assert(IsActive());
- return (bool)cmd_list_OK;
+ return (bool)mode;
}
/**
@@ -73,10 +86,10 @@ public:
* Begin building a command list.
*/
void Begin(bool ok) {
- assert(cmd_list == nullptr);
- assert(cmd_list_OK == -1);
+ assert(list == nullptr);
+ assert(mode == Mode::DISABLED);
- cmd_list_OK = (int)ok;
+ mode = (Mode)ok;
}
/**
@@ -93,7 +106,7 @@ public:
/* for scalability reasons, we have prepended each new
command; now we have to reverse it to restore the
correct order */
- return cmd_list = g_slist_reverse(cmd_list);
+ return list = g_slist_reverse(list);
}
};