summaryrefslogtreecommitdiff
path: root/src/buffer.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-11-20 19:47:56 +0100
committerMaxime Coste <frrrwww@gmail.com>2012-11-20 19:47:56 +0100
commit8bbfbc8c72330dded76c5c3bd6a6a67724739639 (patch)
treeefc8a3bd822c97c9240b1bde971504fdef7e6f33 /src/buffer.hh
parent0b14f387d439c5c1e29133e28ee3da4ab868757a (diff)
Buffer: replace Buffer::Type with Buffer::Flags
Diffstat (limited to 'src/buffer.hh')
-rw-r--r--src/buffer.hh44
1 files changed, 37 insertions, 7 deletions
diff --git a/src/buffer.hh b/src/buffer.hh
index 807f8acd..0d1ffa92 100644
--- a/src/buffer.hh
+++ b/src/buffer.hh
@@ -95,20 +95,22 @@ public:
class Buffer : public SafeCountable
{
public:
- enum class Type
+ enum class Flags
{
- File,
- NewFile,
- Scratch
+ None = 0,
+ File = 1,
+ New = 2,
+ Fifo = 4
};
- Buffer(String name, Type type, String initial_content = "\n");
+ Buffer(String name, Flags flags, String initial_content = "\n");
Buffer(const Buffer&) = delete;
Buffer(Buffer&&) = delete;
Buffer& operator= (const Buffer&) = delete;
~Buffer();
- Type type() const { return m_type; }
+ Flags flags() const { return m_flags; }
+ Flags& flags() { return m_flags; }
void insert(BufferIterator pos, String content);
void erase(BufferIterator begin, BufferIterator end);
@@ -207,7 +209,7 @@ private:
void do_erase(const BufferIterator& begin, const BufferIterator& end);
String m_name;
- const Type m_type;
+ Flags m_flags;
struct Modification;
typedef std::vector<Modification> UndoGroup;
@@ -232,6 +234,34 @@ private:
HookManager m_hook_manager;
};
+constexpr Buffer::Flags operator|(Buffer::Flags lhs, Buffer::Flags rhs)
+{
+ return (Buffer::Flags)((int) lhs | (int) rhs);
+}
+
+inline Buffer::Flags& operator|=(Buffer::Flags& lhs, Buffer::Flags rhs)
+{
+ (int&) lhs |= (int) rhs;
+ return lhs;
+}
+
+constexpr bool operator&(Buffer::Flags lhs, Buffer::Flags rhs)
+{
+ return ((int) lhs & (int) rhs) != 0;
+}
+
+inline Buffer::Flags& operator&=(Buffer::Flags& lhs, Buffer::Flags rhs)
+{
+ (int&) lhs &= (int) rhs;
+ return lhs;
+}
+
+constexpr Buffer::Flags operator~(Buffer::Flags lhs)
+{
+ return (Buffer::Flags)(~(int)lhs);
+}
+
+
}
#include "buffer_iterator.inl.hh"