30template <>
struct iterator_traits<
deskflow::server::Config>
67 void setName(
const std::string_view &newName);
111 using EdgeLinks = std::map<CellEdge, CellEdge>;
114 using const_iterator = EdgeLinks::const_iterator;
116 bool add(
const CellEdge &src,
const CellEdge &dst);
118 void remove(
Direction side,
float position);
119 void remove(
const Name &destinationName);
120 void rename(
const Name &oldName,
const std::string &newName);
122 bool hasEdge(
const CellEdge &)
const;
123 bool overlaps(
const CellEdge &)
const;
125 bool getLink(
Direction side,
float position,
const CellEdge *&src,
const CellEdge *&dst)
const;
127 bool operator==(
const Cell &)
const;
128 bool operator!=(
const Cell &)
const;
130 const_iterator
begin()
const;
131 const_iterator
end()
const;
134 EdgeLinks m_neighbors;
139 using CellMap = std::map<std::string, Cell, deskflow::string::CaselessCmp>;
140 using NameMap = std::map<std::string, std::string, deskflow::string::CaselessCmp>;
168 return &(m_i->first);
190 return (m_i == i.m_i);
194 return (m_i != i.m_i);
219 bool renameScreen(
const std::string &oldName,
const std::string &newName);
242 bool addAlias(
const std::string &canonical,
const std::string &alias);
281 const std::string &srcName,
Direction srcSide,
float srcStart,
float srcEnd,
const std::string &dstName,
282 float dstStart,
float dstEnd
384 std::string
getNeighbor(
const std::string &,
Direction,
float position,
float *positionOut)
const;
468 parseCondition(
const ConfigReadContext &,
const std::string &condition,
const std::vector<std::string> &args);
474 void parseScreens(
const ConfigReadContext &,
const std::string_view &, std::set<std::string> &screens)
const;
475 static const char *getOptionName(
OptionID);
480 NameMap m_nameToCanonicalName;
484 bool m_hasLockToScreenAction =
false;
513 const std::string &
type,
const std::string &line,
const std::string &delim, std::string::size_type &index,
529 static std::string concatArgs(
const ArgList &args);
532 std::istream &m_stream;
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:27
static int type
Definition ArchNetworkWinsock.cpp:44
Direction
Screen edge directions for mouse movement.
Definition DirectionTypes.h:21
uint32_t KeyModifierMask
Modifier key mask.
Definition KeyTypes.h:45
int32_t OptionValue
Option Value.
Definition OptionTypes.h:24
uint32_t OptionID
Option ID.
Definition OptionTypes.h:18
Deskflow Network Protocol Specification and Implementation.
int x
Definition ServerConfig.cpp:26
Event queue interface.
Definition IEventQueue.h:32
Key event data.
Definition IKeyState.h:31
Network address type.
Definition NetworkAddress.h:18
XBase()
Use getWhat() as the result of what()
Definition XBase.cpp:17
Configuration read context.
Definition Config.h:493
uint32_t getLineNumber() const
Definition Config.cpp:1719
bool operator!() const
Definition Config.cpp:1724
OptionValue parseProtocol(const std::string &) const
Definition Config.cpp:1809
bool readLine(std::string &)
Definition Config.cpp:1681
void parseNameWithArgs(const std::string &type, const std::string &line, const std::string &delim, std::string::size_type &index, std::string &name, ArgList &args) const
Definition Config.cpp:1891
OptionValue parseModifierKey(const std::string &) const
Definition Config.cpp:1757
OptionValue parseCorner(const std::string &) const
Definition Config.cpp:1783
std::istream & getStream() const
Definition Config.h:520
OptionValue parseInt(const std::string &) const
Definition Config.cpp:1740
Config::Interval parseInterval(const ArgList &args) const
Definition Config.cpp:1863
IPlatformScreen::ButtonInfo * parseMouse(const std::string &mouse) const
Definition Config.cpp:2023
std::vector< std::string > ArgList
Definition Config.h:495
ConfigReadContext(std::istream &, int32_t firstLine=1)
Definition Config.cpp:1676
IPlatformScreen::KeyInfo * parseKeystroke(const std::string &keystroke) const
Definition Config.cpp:1996
KeyModifierMask parseModifier(const std::string &modifiers) const
Definition Config.cpp:2044
OptionValue parseCorners(const std::string &) const
Definition Config.cpp:1819
~ConfigReadContext()=default
OptionValue parseBoolean(const std::string &) const
Definition Config.cpp:1729
float inverseTransform(float x) const
Definition Config.cpp:1420
bool isInside(float x) const
Definition Config.cpp:1410
std::string getName() const
Definition Config.cpp:1389
float transform(float x) const
Definition Config.cpp:1415
bool operator<(const CellEdge &) const
Definition Config.cpp:1425
bool operator!=(const CellEdge &) const
Definition Config.cpp:1441
bool overlaps(const CellEdge &) const
Definition Config.cpp:1399
Direction getSide() const
Definition Config.cpp:1394
Interval getInterval() const
Definition Config.cpp:1379
void setName(const std::string_view &newName)
Definition Config.cpp:1384
CellEdge(Direction side, float position)
Definition Config.cpp:1347
bool operator==(const CellEdge &) const
Definition Config.cpp:1436
const_iterator operator++(int)
Definition Config.h:175
~const_iterator()=default
std::string operator*() const
Definition Config.h:162
const_iterator operator--(int)
Definition Config.h:184
const std::string * operator->() const
Definition Config.h:166
const_iterator & operator=(const const_iterator &i)
Definition Config.h:157
bool operator==(const const_iterator &i) const
Definition Config.h:188
const_iterator & operator--()
Definition Config.h:179
const_iterator & operator++()
Definition Config.h:170
bool operator!=(const const_iterator &i) const
Definition Config.h:192
const_iterator(const const_iterator &src)=default
const_iterator(const internal_const_iterator &i)
Definition Config.h:150
Server configuration.
Definition Config.h:53
friend std::ostream & operator<<(std::ostream &, const Config &)
Write configuration.
Definition Config.cpp:1595
static std::string formatInterval(const Interval &)
Get interval as string.
Definition Config.cpp:572
void removeAllAliases()
Remove all aliases.
Definition Config.cpp:188
bool hasNeighbor(const std::string &, Direction) const
Check for neighbor.
Definition Config.cpp:435
bool removeOptions(const std::string &name)
Remove a screen options.
Definition Config.cpp:297
bool addScreen(const std::string &name)
Add screen.
Definition Config.cpp:40
void read(ConfigReadContext &context)
Read configuration.
Definition Config.cpp:549
void setDeskflowAddress(const NetworkAddress &)
Set server address.
Definition Config.cpp:250
std::pair< float, float > Interval
Definition Config.h:56
virtual bool isScreen(const std::string &name) const
Test for screen name.
Definition Config.cpp:388
bool removeOption(const std::string &name, OptionID option)
Remove a screen option.
Definition Config.cpp:276
const NetworkAddress & getDeskflowAddress() const
Get the server address.
Definition Config.cpp:467
CellMap::const_iterator internal_const_iterator
Definition Config.h:144
bool addOption(const std::string &name, OptionID option, OptionValue value)
Add a screen option.
Definition Config.cpp:255
bool operator!=(const Config &) const
Compare configurations.
Definition Config.cpp:544
bool addAlias(const std::string &canonical, const std::string &alias)
Add alias.
Definition Config.cpp:132
const_iterator begin() const
Get beginning (canonical) screen name iterator.
Definition Config.cpp:368
bool removeAliases(const std::string &canonical)
Remove aliases.
Definition Config.cpp:169
bool removeAlias(const std::string &alias)
Remove alias.
Definition Config.cpp:150
bool disconnect(const std::string &srcName, Direction srcSide)
Disconnect screens.
Definition Config.cpp:218
const_iterator end() const
Get ending (canonical) screen name iterator.
Definition Config.cpp:373
bool connect(const std::string &srcName, Direction srcSide, float srcStart, float srcEnd, const std::string &dstName, float dstStart, float dstEnd)
Connect screens.
Definition Config.cpp:199
const ScreenOptions * getOptions(const std::string &name) const
Get the screen options.
Definition Config.cpp:472
all_const_iterator endAll() const
Get ending screen name iterator.
Definition Config.cpp:383
virtual InputFilter * getInputFilter()
Get the hot key input filter.
Definition Config.cpp:567
bool renameScreen(const std::string &oldName, const std::string &newName)
Rename screen.
Definition Config.cpp:56
std::string getNeighbor(const std::string &, Direction, float position, float *positionOut) const
Get neighbor.
Definition Config.cpp:408
void removeScreen(const std::string &name)
Remove screen.
Definition Config.cpp:98
all_const_iterator beginAll() const
Get beginning screen name iterator.
Definition Config.cpp:378
virtual ~Config()=default
Cell::const_iterator link_const_iterator
Definition Config.h:143
Config(IEventQueue *events)
Definition Config.cpp:35
static const char * dirName(Direction)
Get direction name.
Definition Config.cpp:558
bool operator==(const Config &) const
Compare configurations.
Definition Config.cpp:494
link_const_iterator beginNeighbor(const std::string &) const
Get beginning neighbor iterator.
Definition Config.cpp:453
link_const_iterator endNeighbor(const std::string &) const
Get ending neighbor iterator.
Definition Config.cpp:460
NameMap::const_iterator all_const_iterator
Definition Config.h:145
void removeAllScreens()
Remove all screens.
Definition Config.cpp:126
std::map< OptionID, OptionValue > ScreenOptions
Definition Config.h:55
bool hasLockToScreenAction() const
Check for lock to screen action.
Definition Config.cpp:489
std::string getCanonicalName(const std::string &name) const
Get canonical name.
Definition Config.cpp:398
bool isValidScreenName(const std::string &name) const
Test screen name validity.
Definition Config.cpp:318
friend std::istream & operator>>(std::istream &, Config &)
Read configuration.
Definition Config.cpp:1588
bool isCanonicalName(const std::string &name) const
Test for canonical screen name.
Definition Config.cpp:393
std::string getWhat() const override
Get a human readable string describing the exception.
Definition Config.cpp:2092
~XConfigRead() override=default
XConfigRead(const ConfigReadContext &context, const std::string &)
Definition Config.cpp:2077
Definition EventTypes.h:11
ptrdiff_t difference_type
Definition Config.h:33
std::string * pointer
Definition Config.h:35
std::string & reference
Definition Config.h:36
std::string value_type
Definition Config.h:32
bidirectional_iterator_tag iterator_category
Definition Config.h:34