[gnome-builder] buffer: make IdeBufferLineChanges a GFlags
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] buffer: make IdeBufferLineChanges a GFlags
- Date: Wed, 31 Jan 2018 00:36:44 +0000 (UTC)
commit 4f81d5ea234d1549d685bd0ebdb14944654fd151
Author: Christian Hergert <chergert redhat com>
Date: Tue Jan 30 16:36:08 2018 -0800
buffer: make IdeBufferLineChanges a GFlags
This makes the line changes a GFlags so that we can bitwise-or some of the
flags together. Additionly, we make the bits match the LineFlags enum so
that we can do a direct copy of the bits into the compiled flags value.
Fixes #388
src/libide/buffers/ide-buffer-change-monitor.h | 6 +++---
src/libide/buffers/ide-buffer.c | 26 ++++++++-----------------
src/plugins/git/ide-git-buffer-change-monitor.c | 7 +++----
3 files changed, 14 insertions(+), 25 deletions(-)
---
diff --git a/src/libide/buffers/ide-buffer-change-monitor.h b/src/libide/buffers/ide-buffer-change-monitor.h
index b39d1025a..28f8224a7 100644
--- a/src/libide/buffers/ide-buffer-change-monitor.h
+++ b/src/libide/buffers/ide-buffer-change-monitor.h
@@ -33,9 +33,9 @@ G_DECLARE_DERIVABLE_TYPE (IdeBufferChangeMonitor, ide_buffer_change_monitor, IDE
typedef enum
{
IDE_BUFFER_LINE_CHANGE_NONE = 0,
- IDE_BUFFER_LINE_CHANGE_ADDED = 1,
- IDE_BUFFER_LINE_CHANGE_CHANGED = 2,
- IDE_BUFFER_LINE_CHANGE_DELETED = 3,
+ IDE_BUFFER_LINE_CHANGE_ADDED = 1 << 0,
+ IDE_BUFFER_LINE_CHANGE_CHANGED = 1 << 1,
+ IDE_BUFFER_LINE_CHANGE_DELETED = 1 << 2,
} IdeBufferLineChange;
struct _IdeBufferChangeMonitorClass
diff --git a/src/libide/buffers/ide-buffer.c b/src/libide/buffers/ide-buffer.c
index 35d1b38cc..fee1d6cd3 100644
--- a/src/libide/buffers/ide-buffer.c
+++ b/src/libide/buffers/ide-buffer.c
@@ -2064,24 +2064,14 @@ ide_buffer_get_line_flags (IdeBuffer *self,
{
change = ide_buffer_change_monitor_get_change (priv->change_monitor, line);
- switch (change)
- {
- case IDE_BUFFER_LINE_CHANGE_ADDED:
- flags |= IDE_BUFFER_LINE_FLAGS_ADDED;
- break;
-
- case IDE_BUFFER_LINE_CHANGE_CHANGED:
- flags |= IDE_BUFFER_LINE_FLAGS_CHANGED;
- break;
-
- case IDE_BUFFER_LINE_CHANGE_DELETED:
- flags |= IDE_BUFFER_LINE_FLAGS_DELETED;
- break;
-
- case IDE_BUFFER_LINE_CHANGE_NONE:
- default:
- break;
- }
+ {
+ G_STATIC_ASSERT ((int)IDE_BUFFER_LINE_CHANGE_ADDED == (int)IDE_BUFFER_LINE_FLAGS_ADDED);
+ G_STATIC_ASSERT ((int)IDE_BUFFER_LINE_CHANGE_DELETED == (int)IDE_BUFFER_LINE_FLAGS_DELETED);
+ G_STATIC_ASSERT ((int)IDE_BUFFER_LINE_CHANGE_CHANGED == (int)IDE_BUFFER_LINE_FLAGS_CHANGED);
+ }
+
+ /* Change maps to the same bits in our flags */
+ flags |= (change & 0x7);
}
return flags;
diff --git a/src/plugins/git/ide-git-buffer-change-monitor.c b/src/plugins/git/ide-git-buffer-change-monitor.c
index 698de1a6b..dffe51463 100644
--- a/src/plugins/git/ide-git-buffer-change-monitor.c
+++ b/src/plugins/git/ide-git-buffer-change-monitor.c
@@ -569,7 +569,7 @@ diff_line_cb (GgitDiffDelta *delta,
case GGIT_DIFF_LINE_ADDITION:
diff_line = find_or_add_line (info->lines, new_lineno);
if (diff_line->change != 0)
- diff_line->change = IDE_BUFFER_LINE_CHANGE_CHANGED;
+ diff_line->change |= IDE_BUFFER_LINE_CHANGE_CHANGED;
else
diff_line->change = IDE_BUFFER_LINE_CHANGE_ADDED;
@@ -586,9 +586,8 @@ diff_line_cb (GgitDiffDelta *delta,
diff_line = find_or_add_line (info->lines, old_lineno);
if (diff_line->change != 0)
- diff_line->change = IDE_BUFFER_LINE_CHANGE_CHANGED;
- else
- diff_line->change = IDE_BUFFER_LINE_CHANGE_DELETED;
+ diff_line->change |= IDE_BUFFER_LINE_CHANGE_CHANGED;
+ diff_line->change |= IDE_BUFFER_LINE_CHANGE_DELETED;
info->hunk_del_count++;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]