Isomet Modular Synthesiser (iMS) API  v1.4.2
iMS API
ConnectionList.h
Go to the documentation of this file.
1 /*-----------------------------------------------------------------------------
2 / Title : Connection List Header
3 / Project : Isomet Modular Synthesiser System
4 /------------------------------------------------------------------------------
5 / File : $URL: http://nutmeg.qytek.lan/svn/sw/trunk/09-Isomet/iMS_SDK/API/ConnectionManager/h/ConnectionList.h $
6 / Author : $Author: dave $
7 / Company : Isomet (UK) Ltd
8 / Created : 2015-04-09
9 / Last update: $Date: 2017-09-11 23:55:34 +0100 (Mon, 11 Sep 2017) $
10 / Platform :
11 / Standard : C++11
12 / Revision : $Rev: 300 $
13 /------------------------------------------------------------------------------
14 / Description:
15 /------------------------------------------------------------------------------
16 / Copyright (c) 2015 Isomet (UK) Ltd. All Rights Reserved.
17 /------------------------------------------------------------------------------
18 / Revisions :
19 / Date Version Author Description
20 / 2015-04-09 1.0 dc Created
21 /
22 /----------------------------------------------------------------------------*/
23 
40 
41 #ifndef IMS_CONNECTION_LIST_H__
42 #define IMS_CONNECTION_LIST_H__
43 
44 #include "IMSSystem.h"
45 
46 #include <map>
47 #include <list>
48 
50 #if defined _WIN32 || defined __CYGWIN__
51  #ifdef __GNUC__
52  #define DLL_EXPORT __attribute__ ((dllexport))
53  #define DLL_IMPORT __attribute__ ((dllimport))
54  #else
55  #define DLL_EXPORT __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
56  #define DLL_IMPORT __declspec(dllimport) // Note: actually gcc seems to also supports this syntax.
57  #endif
58  #define DLL_LOCAL
59 #else
60  #if __GNUC__ >= 4
61  #define DLL_EXPORT __attribute__ ((visibility ("default")))
62  #define DLL_IMPORT __attribute__ ((visibility ("default")))
63  #define DLL_LOCAL __attribute__ ((visibility ("hidden")))
64  #else
65  #define DLL_EXPORT
66  #define DLL_IMPORT
67  #define DLL_LOCAL
68  #endif
69 #endif
70 
71 #if defined(_EXPORTING_IMS)
72  #define LIBSPEC DLL_EXPORT
73  #define LIBLOCAL DLL_LOCAL
74  #define EXPIMP_TEMPLATE
75 #elif defined(_STATIC_IMS)
76  #define LIBSPEC
77  #define LIBLOCAL
78  #define EXPIMP_TEMPLATE
79 #else
80  #define LIBSPEC DLL_IMPORT
81  #define LIBLOCAL DLL_LOCAL
82  #define EXPIMP_TEMPLATE extern
83 #endif
84 
86 namespace iMS
87 {
88  // This forward declaration is required for the typedef
89  class IConnectionManager;
90 
212  class LIBSPEC ConnectionList
213  {
214  public:
216  ConnectionList();
218  ~ConnectionList();
219 
237  {
247  std::list<std::string> PortMask;
248 
252  ConnectionConfig(bool inc = true, std::list<std::string> mask = std::list<std::string>());
253  };
256  typedef std::map<std::string, ConnectionConfig> ConnectionConfigMap;
257 
259 
260  ConnectionConfigMap& config();
284  const std::list<std::string>& modules() const;
303  std::vector<IMSSystem> scan();
305  private:
306  class Impl;
307  Impl *pImpl;
308  };
309 
310 }
311 
312 #undef EXPIMP_TEMPLATE
313 #undef LIBSPEC
314 #endif // CONNECTION_MANAGER_H
std::list< std::string > PortMask
Definition: ConnectionList.h:247
Controls the behaviour of a Connection Module during its discovery process.
Definition: ConnectionList.h:236
std::map< std::string, ConnectionConfig > ConnectionConfigMap
Type of the internal object that links Connection Modules to their Configuration structs.
Definition: ConnectionList.h:256
The entire API is encapsulated by the iMS namespace.
Definition: Auxiliary.h:95
Creates iMS Connection Interfaces and scans them to discover available iMS Systems.
Definition: ConnectionList.h:212
Classes within this group are used to store information about an iMS System and to Connect / Disconne...
bool IncludeInScan
Definition: ConnectionList.h:240