]> git.stg.codes - stg.git/blobdiff - include/stg/admins.h
Fix XML-RPC module compilation on C++17-only compilers.
[stg.git] / include / stg / admins.h
index 7536a4a520efb0adeee661a70d6aaf7beb529166..e70b1fe73d7b98c9758c4bec54875a6fb8e38372 100644 (file)
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
-#ifndef ADMINS_H
-#define ADMINS_H
+#pragma once
 
 #include <string>
+#include <functional>
 
-#include "admin.h"
-#include "admin_conf.h"
-
-class ADMINS {
-public:
-    virtual int Add(const std::string & login, const ADMIN * admin) = 0;
-    virtual int Del(const std::string & login, const ADMIN * admin) = 0;
-    virtual int Change(const ADMIN_CONF & ac, const ADMIN * admin) = 0;
-    virtual const ADMIN * GetSysAdmin() const = 0;
-    virtual const ADMIN * GetNoAdmin() const = 0;
-    virtual bool Find(const std::string & l, ADMIN ** admin) = 0;
-    virtual bool Exists(const std::string & login) const = 0;
-    virtual bool Correct(const std::string & login,
-                         const std::string & password,
-                         ADMIN ** admin) = 0;
-    virtual const std::string & GetStrError() const = 0;
-    virtual size_t Count() const = 0;
-
-    virtual int OpenSearch() const = 0;
-    virtual int SearchNext(int, ADMIN_CONF * ac) const = 0;
-    virtual int CloseSearch(int) const = 0;
+namespace STG
+{
+
+struct AdminConf;
+class Admin;
+
+struct Admins
+{
+    virtual ~Admins() = default;
+
+    virtual int add(const std::string& login, const Admin& admin) = 0;
+    virtual int del(const std::string& login, const Admin& admin) = 0;
+    virtual int change(const AdminConf& ac, const Admin& admin) = 0;
+    virtual const Admin& sysAdmin() const = 0;
+    virtual const Admin& noAdmin() const = 0;
+    virtual bool find(const std::string& login, Admin** admin) = 0;
+    virtual bool exists(const std::string& login) const = 0;
+    virtual bool correct(const std::string& login,
+                         const std::string& password,
+                         Admin** admin) = 0;
+    virtual const std::string& strError() const = 0;
+    virtual size_t count() const = 0;
+    virtual void fmap(std::function<void (const Admin&)> callback) const = 0;
 };
 
-#endif
+}