/* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License, as * published by the Free Software Foundation; either version 2.1 or 3.0 * of the License. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR * PURPOSE. See the applicable version of the GNU Lesser General Public * License for more details. * * You should have received a copy of both the GNU Lesser General Public * License along with this program. If not, see * * Authored by: Daniel d'Andrada * */ #ifndef GEIS_MOCK_H #define GEIS_MOCK_H #include #include #include #include #include /* helper class */ class GeisAttributes { public: GeisAttr GetByName(GeisString name); GeisAttr GetByIndex(GeisSize index); GeisSize Count(); void AddBoolean(const char *name, GeisBoolean value); void AddFloat(const char *name, GeisFloat value); void AddInteger(const char *name, GeisInteger value); void AddPointer(const char *name, void *value); std::vector< std::unique_ptr > vector; }; struct _GeisAttr { GeisAttrType type; std::string name; GeisBoolean b; GeisFloat f; GeisInteger i; std::string s; void* p; }; struct GeisStructWithAttributes { GeisAttributes attributes; bool GetBoolean(const char *name) { return attributes.GetByName(name)->b; } float GetFloat(const char *name) { return attributes.GetByName(name)->f; } int GetInteger(const char *name) { return attributes.GetByName(name)->i; } std::string GetString(const char *name) { return attributes.GetByName(name)->s; } void* GetPointer(const char *name) { return attributes.GetByName(name)->p; } }; struct _Geis { int fd; std::list pending_events; }; struct _GeisGestureClass : GeisStructWithAttributes { int id; std::string name; }; struct _GeisEvent : GeisStructWithAttributes { GeisEventType type; }; struct _GeisDevice : GeisStructWithAttributes { int id; }; struct _GeisGroup { int id; std::vector vector; }; struct _GeisGroupSet { std::vector vector; }; struct _GeisTouch : GeisStructWithAttributes { int id; }; struct _GeisTouchSet { std::vector vector; }; struct _GeisFrame : GeisStructWithAttributes { int id; std::set class_ids; }; struct _GeisSubscription { int id; std::string name; std::vector filters; }; struct _GeisFilter { int foo; }; #endif