From 8db5ff97ffe34aa42f71b5c8aebfa0878e5fde89 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 4 Jul 2020 16:58:08 +0200 Subject: Add error message support and reporting on all commands. --- src/nodemanager.h | 172 +++++------------------------------------------------- 1 file changed, 14 insertions(+), 158 deletions(-) (limited to 'src/nodemanager.h') diff --git a/src/nodemanager.h b/src/nodemanager.h index 85b7955..8909eb1 100644 --- a/src/nodemanager.h +++ b/src/nodemanager.h @@ -27,10 +27,8 @@ */ #pragma once -#include #include -#include -#include +#include #include "node.h" #include "nodetree.h" @@ -43,173 +41,31 @@ public: NodeManager(); ~NodeManager(); - void init(std::string filename); + void init(const std::string& filename); - NodeIdList createNode(nodeid_t parentid, nodeid_t id, nodeid_t insertbeforeid) throw (std::exception); - NodeIdList updateNode(nodeid_t id, const std::string &name, - const std::string &value) throw (std::exception); - NodeIdList removeNode(nodeid_t id) throw (std::exception); + NodeIdList createNode(nodeid_t parentid, nodeid_t id, + nodeid_t insertbeforeid); - NodeIdListPair moveNode(nodeid_t id, nodeid_t newParent, nodeid_t beforeId) throw (std::exception); + NodeIdList updateNode(nodeid_t id, const std::string& name, + const std::string& value); - NodeIdList subNodes(nodeid_t) throw (std::exception); + NodeIdList removeNode(nodeid_t id); - NodeTree tree; + NodeIdListPair moveNode(nodeid_t id, nodeid_t newParent, nodeid_t beforeId); - node_t node(nodeid_t t); + NodeIdList subNodes(nodeid_t id); - void flushNodes(); + node_t node(nodeid_t t); nodeid_t createId(); - bool hasId(nodeid_t id); private: - // NodeIdList ancestorList(nodeid_t node); - nodeid_t idCount; - node_t nextNode(); + void flushNodes(); + bool hasId(nodeid_t id); + bool isProtected(nodeid_t id) const; std::string file; + NodeTree tree; }; -#ifndef FOOBAR extern NodeManager node_manager; -#endif - - -#if 0 - -/* -Node: - id - subnodes -// tags - title - description -// primary_assignment -// secondary_assignment - - -Protocol: - -Server -> client: - update [id] [title] [description]; - move [id] [x] [y]; - add [id] [title] [description] [x] [y]; - del [id] - -Client -> server: - update [id] [title] [description]; - move [id] [x] [y]; - add [title] [description] [x] [y]; - del [id] - -title and description are " encapsulated utf-8 string with " escaped with a backslash. -x and y are integers as strings -id are an integer as a string - */ - -/* -typedef struct { - int x, y; - int id; - std::string title; - std::string desc; -} node_t; -*/ -/* -protocol: - add_node title description parent_id - del_node id - update_node id title description - move_node id parent - copy_node id parent -*/ - - - -//typedef std::list NodeList; - -class CompareByParentid -{ -public: - bool operator()(const node_t &a, const node_t &b) const - { - return a.parent_id < b.parent_id; - } -}; - -class NodeList - : public std::list -{ -public: - NodeList() {} - ~NodeList(){} - - void insert(node_t t) - { - if(t.id == t.parent_id) - { - return; - } - printf("inserting node %d with parent %d\n", t.id, t.parent_id); - - if(t.parent_id == -1) - { - std::list::push_front(t); - return; - } - - std::list::iterator it; - for(it = begin(); it != end(); ++it) - { - printf("\tcomparing %d and %d\n", t.parent_id, it->id); - if(t.parent_id == it->id) - { - break; - } - } - assert(it != end()); - - std::list::insert(++it, t); - - //std::list::push_back(t); - //std::list::sort(CompareByParentid()); - } - - void move(node_t t) - { - std::list::iterator it; - for(it = begin(); it != end(); it++) - { - if(t.id == it->id) - { - break; - } - } - assert(it != end()); - //if(it != end()) - //{ - std::list::erase(it); - //} - insert(t); - } - - void push_back(node_t t) - { - insert(t); - } - -private: - std::list list; -}; - - -extern NodeList nodelist; - -//typedef std::priority_queue, CompareByParentid> NodeList; - -node_t create_node(std::string title, std::string desc, /*int x, int y*/ int parent_id); - -NodeList load_nodelist_from_file(std::string file); -bool save_nodelist_to_file(NodeList t, std::string file); -#endif/*0*/ -- cgit v1.2.3