commit 27b7faab635afa8b9c8bdabfc1d7942c670ae663 Author: Jack Andersen Date: Sat Jan 7 13:46:40 2017 -1000 Initial docs diff --git a/Common_8hpp.html b/Common_8hpp.html new file mode 100644 index 0000000..be5c251 --- /dev/null +++ b/Common_8hpp.html @@ -0,0 +1,212 @@ + + + + + + +JBus: include/jbus/Common.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Common.hpp File Reference
+
+
+
#include <functional>
+#include <stdint.h>
+#include <stdlib.h>
+
+Include dependency graph for Common.hpp:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 jbus
 
+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

using jbus::s8 = int8_t
 
using jbus::u8 = uint8_t
 
using jbus::s16 = int16_t
 
using jbus::u16 = uint16_t
 
using jbus::s32 = int32_t
 
using jbus::u32 = uint32_t
 
using jbus::s64 = int64_t
 
using jbus::u64 = uint64_t
 
using jbus::FGBACallback = std::function< void(ThreadLocalEndpoint &endpoint, EJoyReturn status)>
 Standard callback for asynchronous jbus::Endpoint APIs. More...
 
+ + + + + +

+Enumerations

enum  jbus::EJStatFlags {
+  jbus::GBA_JSTAT_MASK = 0x3a, +jbus::GBA_JSTAT_FLAGS_SHIFT = 4, +jbus::GBA_JSTAT_FLAGS_MASK = 0x30, +jbus::GBA_JSTAT_PSF1 = 0x20, +
+  jbus::GBA_JSTAT_PSF0 = 0x10, +jbus::GBA_JSTAT_SEND = 0x08, +jbus::GBA_JSTAT_RECV = 0x02 +
+ }
 
enum  jbus::EJoyReturn {
+  jbus::GBA_READY = 0, +jbus::GBA_NOT_READY = 1, +jbus::GBA_BUSY = 2, +jbus::GBA_JOYBOOT_UNKNOWN_STATE = 3, +
+  jbus::GBA_JOYBOOT_ERR_INVALID = 4 +
+ }
 
+ + + + + + + + + + +

+Functions

u64 jbus::GetGCTicks ()
 Get host system's timebase scaled into Dolphin ticks. More...
 
void jbus::WaitGCTicks (u64 ticks)
 Wait an approximate Dolphin tick duration (avoid using, it's rather inaccurate). More...
 
void jbus::Initialize ()
 Initialize platform specifics of JBus library. More...
 
+
+
+ + + + diff --git a/Common_8hpp.js b/Common_8hpp.js new file mode 100644 index 0000000..9e4e7bc --- /dev/null +++ b/Common_8hpp.js @@ -0,0 +1,31 @@ +var Common_8hpp = +[ + [ "FGBACallback", "Common_8hpp.html#ae1577e03ea8c6e27361cb389c992280d", null ], + [ "s16", "Common_8hpp.html#aa767fe4f71e145e2c0b12eccbeb83071", null ], + [ "s32", "Common_8hpp.html#a33e5022738a0799c066372ce74d04c37", null ], + [ "s64", "Common_8hpp.html#a69133321c9f11f1fa0e49c072244d377", null ], + [ "s8", "Common_8hpp.html#a416b65eae1b2ff9ab63c4c71ff857ea4", null ], + [ "u16", "Common_8hpp.html#aff2760609de15f92daafbdff7be79b33", null ], + [ "u32", "Common_8hpp.html#ae4a7d015f3b8913ec0b563caa0a53221", null ], + [ "u64", "Common_8hpp.html#a36fb1f7488218c972a50b1f9dd547b81", null ], + [ "u8", "Common_8hpp.html#a19d112b8b9f912fca094b41ce26c4fef", null ], + [ "EJoyReturn", "Common_8hpp.html#a7118bfa3cb9d51e588418220bca20117", [ + [ "GBA_READY", "Common_8hpp.html#a7118bfa3cb9d51e588418220bca20117a1e5f181b31229228f6741a4e3106c3fd", null ], + [ "GBA_NOT_READY", "Common_8hpp.html#a7118bfa3cb9d51e588418220bca20117aac3cd7dd0e4cb525e5045cb9e9c1f09a", null ], + [ "GBA_BUSY", "Common_8hpp.html#a7118bfa3cb9d51e588418220bca20117a97f6047ad685bdd832831954ab4454a0", null ], + [ "GBA_JOYBOOT_UNKNOWN_STATE", "Common_8hpp.html#a7118bfa3cb9d51e588418220bca20117a5f890238a7828bd688477a32fdef34db", null ], + [ "GBA_JOYBOOT_ERR_INVALID", "Common_8hpp.html#a7118bfa3cb9d51e588418220bca20117abdeee79304d78d822a4b5f5b71f5ddad", null ] + ] ], + [ "EJStatFlags", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9", [ + [ "GBA_JSTAT_MASK", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9a073fa6fd8ff5ae41567160cf897db7c1", null ], + [ "GBA_JSTAT_FLAGS_SHIFT", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9a92d3659e0d24e5242af71dbfa1a25b20", null ], + [ "GBA_JSTAT_FLAGS_MASK", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9a78506d78e40b43d15ff101f4efa00269", null ], + [ "GBA_JSTAT_PSF1", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9a93e801d066708e0c98eec71c42803f94", null ], + [ "GBA_JSTAT_PSF0", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9a9d1af0345a227524011d9845c0c3c4f8", null ], + [ "GBA_JSTAT_SEND", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9afe5cad6728edc3ab4aab7b0a9375350c", null ], + [ "GBA_JSTAT_RECV", "Common_8hpp.html#a6a14af068c46e5eaac52e4c6ae081ab9a814553611e2f05ce7daede703c9b0a20", null ] + ] ], + [ "GetGCTicks", "Common_8hpp.html#a5944719111a14f5920ec765e5dcf71db", null ], + [ "Initialize", "Common_8hpp.html#ae0b3017c3755ceb8c9dd580965b8bc04", null ], + [ "WaitGCTicks", "Common_8hpp.html#a918fbee6d761952c56c4914c900c2876", null ] +]; \ No newline at end of file diff --git a/Common_8hpp__dep__incl.map b/Common_8hpp__dep__incl.map new file mode 100644 index 0000000..ae7f640 --- /dev/null +++ b/Common_8hpp__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/Common_8hpp__dep__incl.md5 b/Common_8hpp__dep__incl.md5 new file mode 100644 index 0000000..88c0722 --- /dev/null +++ b/Common_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +0343019ac32ec09009aa117f2b9b0171 \ No newline at end of file diff --git a/Common_8hpp__dep__incl.png b/Common_8hpp__dep__incl.png new file mode 100644 index 0000000..175a96a Binary files /dev/null and b/Common_8hpp__dep__incl.png differ diff --git a/Common_8hpp__incl.map b/Common_8hpp__incl.map new file mode 100644 index 0000000..2b114f5 --- /dev/null +++ b/Common_8hpp__incl.map @@ -0,0 +1,2 @@ + + diff --git a/Common_8hpp__incl.md5 b/Common_8hpp__incl.md5 new file mode 100644 index 0000000..2f0ed04 --- /dev/null +++ b/Common_8hpp__incl.md5 @@ -0,0 +1 @@ +d4502d6f2dfbc57ec5a7369036857844 \ No newline at end of file diff --git a/Common_8hpp__incl.png b/Common_8hpp__incl.png new file mode 100644 index 0000000..20cbca8 Binary files /dev/null and b/Common_8hpp__incl.png differ diff --git a/Common_8hpp_source.html b/Common_8hpp_source.html new file mode 100644 index 0000000..f2a002f --- /dev/null +++ b/Common_8hpp_source.html @@ -0,0 +1,151 @@ + + + + + + +JBus: include/jbus/Common.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Common.hpp
+
+
+Go to the documentation of this file.
1 #ifndef JBUS_COMMON_HPP
2 #define JBUS_COMMON_HPP
3 
4 #include <functional>
5 #include <stdint.h>
6 #include <stdlib.h>
7 
8 namespace jbus
9 {
10 
11 using s8 = int8_t;
12 using u8 = uint8_t;
13 using s16 = int16_t;
14 using u16 = uint16_t;
15 using s32 = int32_t;
16 using u32 = uint32_t;
17 using s64 = int64_t;
18 using u64 = uint64_t;
19 
20 #ifndef DOXYGEN_SHOULD_SKIP_THIS
21 
22 #undef bswap16
23 #undef bswap32
24 #undef bswap64
25 
26 /* Type-sensitive byte swappers */
27 template <typename T>
28 static inline T bswap16(T val)
29 {
30 #if __GNUC__
31  return __builtin_bswap16(val);
32 #elif _WIN32
33  return _byteswap_ushort(val);
34 #else
35  return (val = (val << 8) | ((val >> 8) & 0xFF));
36 #endif
37 }
38 
39 template <typename T>
40 static inline T bswap32(T val)
41 {
42 #if __GNUC__
43  return __builtin_bswap32(val);
44 #elif _WIN32
45  return _byteswap_ulong(val);
46 #else
47  val = (val & 0x0000FFFF) << 16 | (val & 0xFFFF0000) >> 16;
48  val = (val & 0x00FF00FF) << 8 | (val & 0xFF00FF00) >> 8;
49  return val;
50 #endif
51 }
52 
53 template <typename T>
54 static inline T bswap64(T val)
55 {
56 #if __GNUC__
57  return __builtin_bswap64(val);
58 #elif _WIN32
59  return _byteswap_uint64(val);
60 #else
61  return ((val & 0xFF00000000000000ULL) >> 56) |
62  ((val & 0x00FF000000000000ULL) >> 40) |
63  ((val & 0x0000FF0000000000ULL) >> 24) |
64  ((val & 0x000000FF00000000ULL) >> 8) |
65  ((val & 0x00000000FF000000ULL) << 8) |
66  ((val & 0x0000000000FF0000ULL) << 24) |
67  ((val & 0x000000000000FF00ULL) << 40) |
68  ((val & 0x00000000000000FFULL) << 56);
69 #endif
70 }
71 
72 
73 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
74 static inline int16_t SBig(int16_t val) {return bswap16(val);}
75 static inline uint16_t SBig(uint16_t val) {return bswap16(val);}
76 static inline int32_t SBig(int32_t val) {return bswap32(val);}
77 static inline uint32_t SBig(uint32_t val) {return bswap32(val);}
78 static inline int64_t SBig(int64_t val) {return bswap64(val);}
79 static inline uint64_t SBig(uint64_t val) {return bswap64(val);}
80 static inline float SBig(float val)
81 {
82  int32_t ival = bswap32(*((int32_t*)(&val)));
83  return *((float*)(&ival));
84 }
85 static inline double SBig(double val)
86 {
87  int64_t ival = bswap64(*((int64_t*)(&val)));
88  return *((double*)(&ival));
89 }
90 #ifndef SBIG
91 #define SBIG(q) ( ( (q) & 0x000000FF ) << 24 | ( (q) & 0x0000FF00 ) << 8 \
92  | ( (q) & 0x00FF0000 ) >> 8 | ( (q) & 0xFF000000 ) >> 24 )
93 #endif
94 
95 static inline int16_t SLittle(int16_t val) {return val;}
96 static inline uint16_t SLittle(uint16_t val) {return val;}
97 static inline int32_t SLittle(int32_t val) {return val;}
98 static inline uint32_t SLittle(uint32_t val) {return val;}
99 static inline int64_t SLittle(int64_t val) {return val;}
100 static inline uint64_t SLittle(uint64_t val) {return val;}
101 static inline float SLittle(float val) {return val;}
102 static inline double SLittle(double val) {return val;}
103 #ifndef SLITTLE
104 #define SLITTLE(q) (q)
105 #endif
106 #else
107 static inline int16_t SLittle(int16_t val) {return bswap16(val);}
108 static inline uint16_t SLittle(uint16_t val) {return bswap16(val);}
109 static inline int32_t SLittle(int32_t val) {return bswap32(val);}
110 static inline uint32_t SLittle(uint32_t val) {return bswap32(val);}
111 static inline int64_t SLittle(int64_t val) {return bswap64(val);}
112 static inline uint64_t SLittle(uint64_t val) {return bswap64(val);}
113 static inline float SLittle(float val)
114 {
115  int32_t ival = bswap32(*((int32_t*)(&val)));
116  return *((float*)(&ival));
117 }
118 static inline double SLittle(double val)
119 {
120  int64_t ival = bswap64(*((int64_t*)(&val)));
121  return *((double*)(&ival));
122 }
123 #ifndef SLITTLE
124 #define SLITTLE(q) ( ( (q) & 0x000000FF ) << 24 | ( (q) & 0x0000FF00 ) << 8 \
125  | ( (q) & 0x00FF0000 ) >> 8 | ( (q) & 0xFF000000 ) >> 24 )
126 #endif
127 
128 static inline int16_t SBig(int16_t val) {return val;}
129 static inline uint16_t SBig(uint16_t val) {return val;}
130 static inline int32_t SBig(int32_t val) {return val;}
131 static inline uint32_t SBig(uint32_t val) {return val;}
132 static inline int64_t SBig(int64_t val) {return val;}
133 static inline uint64_t SBig(uint64_t val) {return val;}
134 static inline float SBig(float val) {return val;}
135 static inline double SBig(double val) {return val;}
136 #ifndef SBIG
137 #define SBIG(q) (q)
138 #endif
139 #endif
140 
141 class Endpoint;
142 class ThreadLocalEndpoint;
143 
144 #endif
145 
147 {
155 };
156 
158 {
161  GBA_BUSY = 2,
164 };
165 
169 using FGBACallback = std::function<void(ThreadLocalEndpoint& endpoint, EJoyReturn status)>;
170 
173 u64 GetGCTicks();
174 
177 void WaitGCTicks(u64 ticks);
178 
181 static constexpr u64 GetGCTicksPerSec() { return 486000000ull; }
182 
184 void Initialize();
185 
186 }
187 
188 #endif // JBUS_COMMON_HPP
uint16_t u16
Definition: Common.hpp:14
+
int8_t s8
Definition: Common.hpp:11
+
Definition: Common.hpp:149
+
int64_t s64
Definition: Common.hpp:17
+
std::function< void(ThreadLocalEndpoint &endpoint, EJoyReturn status)> FGBACallback
Standard callback for asynchronous jbus::Endpoint APIs.
Definition: Common.hpp:169
+
Definition: Common.hpp:148
+
Definition: Common.hpp:160
+
void WaitGCTicks(u64 ticks)
Wait an approximate Dolphin tick duration (avoid using, it&#39;s rather inaccurate).
+
Definition: Common.hpp:154
+
Definition: Common.hpp:159
+
Definition: Common.hpp:153
+
uint8_t u8
Definition: Common.hpp:12
+
Definition: Common.hpp:8
+
Definition: Common.hpp:152
+
EJStatFlags
Definition: Common.hpp:146
+
uint64_t u64
Definition: Common.hpp:18
+
int16_t s16
Definition: Common.hpp:13
+
int32_t s32
Definition: Common.hpp:15
+
u64 GetGCTicks()
Get host system&#39;s timebase scaled into Dolphin ticks.
+
EJoyReturn
Definition: Common.hpp:157
+
Definition: Common.hpp:163
+
Definition: Endpoint.hpp:15
+
uint32_t u32
Definition: Common.hpp:16
+
Definition: Common.hpp:161
+
void Initialize()
Initialize platform specifics of JBus library.
+
Definition: Common.hpp:151
+
Definition: Common.hpp:162
+
Definition: Common.hpp:150
+
Definition: Endpoint.hpp:258
+
+
+ + + + diff --git a/DocMain_8md.html b/DocMain_8md.html new file mode 100644 index 0000000..45c4fe0 --- /dev/null +++ b/DocMain_8md.html @@ -0,0 +1,122 @@ + + + + + + +JBus: DocMain.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
DocMain.md File Reference
+
+
+
+
+ + + + diff --git a/Endpoint_8hpp.html b/Endpoint_8hpp.html new file mode 100644 index 0000000..690e68e --- /dev/null +++ b/Endpoint_8hpp.html @@ -0,0 +1,154 @@ + + + + + + +JBus: include/jbus/Endpoint.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Endpoint.hpp File Reference
+
+
+
#include "Common.hpp"
+#include "Socket.hpp"
+#include "optional.hpp"
+#include <thread>
+#include <mutex>
+
+Include dependency graph for Endpoint.hpp:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  jbus::Endpoint
 
class  jbus::ThreadLocalEndpoint
 
+ + + +

+Namespaces

 jbus
 
+
+
+ + + + diff --git a/Endpoint_8hpp__incl.map b/Endpoint_8hpp__incl.map new file mode 100644 index 0000000..102d30e --- /dev/null +++ b/Endpoint_8hpp__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/Endpoint_8hpp__incl.md5 b/Endpoint_8hpp__incl.md5 new file mode 100644 index 0000000..b745cd0 --- /dev/null +++ b/Endpoint_8hpp__incl.md5 @@ -0,0 +1 @@ +3fc33a9d89d29732729f1dbad9074a96 \ No newline at end of file diff --git a/Endpoint_8hpp__incl.png b/Endpoint_8hpp__incl.png new file mode 100644 index 0000000..5b25e29 Binary files /dev/null and b/Endpoint_8hpp__incl.png differ diff --git a/Endpoint_8hpp_source.html b/Endpoint_8hpp_source.html new file mode 100644 index 0000000..0f9f81c --- /dev/null +++ b/Endpoint_8hpp_source.html @@ -0,0 +1,153 @@ + + + + + + +JBus: include/jbus/Endpoint.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Endpoint.hpp
+
+
+Go to the documentation of this file.
1 #ifndef JBUS_ENDPOINT_HPP
2 #define JBUS_ENDPOINT_HPP
3 
4 #include "Common.hpp"
5 #include "Socket.hpp"
6 #include "optional.hpp"
7 #include <thread>
8 #include <mutex>
9 
10 namespace jbus
11 {
12 
15 class Endpoint
16 {
23  class KawasedoChallenge
24  {
27  struct DSPSecParms
28  {
29  /* Nonce challenge (first read from GBA, hence already little-endian) */
30  u32 x0_gbaChallenge;
31 
32  /* Palette of pulsing logo on GBA during transmission [0,6] */
33  u32 x4_logoPalette;
34 
35  /* Speed and direction of palette interpolation [-4,4] */
36  u32 x8_logoSpeed;
37 
38  /* Length of JoyBoot program to upload */
39  u32 xc_progLength;
40 
41  /* Unwrapped public key */
42  u32 x20_publicKey;
43 
44  /* Message authentication code */
45  u32 x24_authInitCode;
46 
47  void ProcessGBACrypto()
48  {
49  /* Unwrap key from challenge using 'sedo' magic number (to encrypt JoyBoot program) */
50  x20_publicKey = x0_gbaChallenge ^ 0x6f646573;
51 
52  /* Pack palette parameters */
53  u16 paletteSpeedCoded;
54  s16 logoSpeed = static_cast<s8>(x8_logoSpeed);
55  if (logoSpeed < 0)
56  paletteSpeedCoded = ((-logoSpeed + 2) * 2) | (x4_logoPalette << 4);
57  else if (logoSpeed == 0)
58  paletteSpeedCoded = (x4_logoPalette * 2) | 0x70;
59  else /* logo_speed > 0 */
60  paletteSpeedCoded = ((logoSpeed - 1) * 2) | (x4_logoPalette << 4);
61 
62  /* JoyBoot ROMs start with a padded header; this is the length beyond that header */
63  s32 lengthNoHeader = ROUND_UP_8(xc_progLength) - 0x200;
64 
65  /* The JoyBus protocol transmits in 4-byte packets while flipping a state flag;
66  * so the GBA BIOS counts the program length in 8-byte packet-pairs */
67  u16 packetPairCount = (lengthNoHeader < 0) ? 0 : lengthNoHeader / 8;
68  paletteSpeedCoded |= (packetPairCount & 0x4000) >> 14;
69 
70  /* Pack together encoded transmission parameters */
71  u32 t1 = (((packetPairCount << 16) | 0x3f80) & 0x3f80ffff) * 2;
72  t1 += (static_cast<s16>(static_cast<s8>(t1 >> 8)) & packetPairCount) << 16;
73  u32 t2 = ((paletteSpeedCoded & 0xff) << 16) + (t1 & 0xff0000) + ((t1 >> 8) & 0xffff00);
74  u32 t3 = paletteSpeedCoded << 16 | ((t2 << 8) & 0xff000000) | (t1 >> 16) | 0x80808080;
75 
76  /* Wrap with 'Kawa' or 'sedo' (Kawasedo is the author of the BIOS cipher) */
77  x24_authInitCode = t3 ^ ((t3 & 0x200) != 0 ? 0x6f646573 : 0x6177614b);
78  }
79  } xf8_dspHmac;
80 
81  s32 x0_pColor;
82  s32 x4_pSpeed;
83  const u8* x8_progPtr;
84  u32 xc_progLen;
85  u8* x10_statusPtr;
86  FGBACallback x14_callback;
87  u8 x18_readBuf[4];
88  u8 x1c_writeBuf[4];
89  s32 x20_byteInWindow;
90  u64 x28_ticksAfterXf;
91  u32 x30_justStarted;
92  u32 x34_bytesSent;
93  u32 x38_crc;
94  u32 x3c_checkStore[7];
95  s32 x58_currentKey;
96  s32 x5c_initMessage;
97  s32 x60_gameId;
98  u32 x64_totalBytes;
99  bool m_started = true;
100 
101  void _0Reset(ThreadLocalEndpoint& endpoint, EJoyReturn status);
102  void _1GetStatus(ThreadLocalEndpoint& endpoint, EJoyReturn status);
103  void _2ReadChallenge(ThreadLocalEndpoint& endpoint, EJoyReturn status);
104  void _3DSPCrypto(ThreadLocalEndpoint& endpoint, EJoyReturn status);
105  void _DSPCryptoInit();
106  void _DSPCryptoDone(ThreadLocalEndpoint& endpoint);
107  void _4TransmitProgram(ThreadLocalEndpoint& endpoint, EJoyReturn status);
108  void _5StartBootPoll(ThreadLocalEndpoint& endpoint, EJoyReturn status);
109  void _6BootPoll(ThreadLocalEndpoint& endpoint, EJoyReturn status);
110  void _7BootAcknowledge(ThreadLocalEndpoint& endpoint, EJoyReturn status);
111  void _8BootDone(ThreadLocalEndpoint& endpoint, EJoyReturn status);
112 
113  auto bindThis(void(KawasedoChallenge::*ptmf)(ThreadLocalEndpoint&, EJoyReturn))
114  {
115  return std::bind(ptmf, this, std::placeholders::_1, std::placeholders::_2);
116  }
117 
118  public:
119  KawasedoChallenge(Endpoint& endpoint, s32 paletteColor, s32 paletteSpeed,
120  const u8* programp, s32 length, u8* status, FGBACallback&& callback);
121  bool started() const { return m_started; }
122  u8 percentComplete() const
123  {
124  if (!x64_totalBytes)
125  return 0;
126  return x34_bytesSent * 100 / x64_totalBytes;
127  }
128  bool isDone() const { return !x14_callback; }
129  };
130 
131  friend class ThreadLocalEndpoint;
132 
133  enum EJoybusCmds
134  {
135  CMD_RESET = 0xff,
136  CMD_STATUS = 0x00,
137  CMD_READ = 0x14,
138  CMD_WRITE = 0x15
139  };
140 
141  static const u64 BITS_PER_SECOND = 115200;
142  static const u64 BYTES_PER_SECOND = BITS_PER_SECOND / 8;
143 
144  net::Socket m_dataSocket;
145  net::Socket m_clockSocket;
146  std::thread m_transferThread;
147  std::mutex m_syncLock;
148  std::condition_variable m_syncCv;
149  std::condition_variable m_issueCv;
150  std::experimental::optional<KawasedoChallenge> m_joyBoot;
151  FGBACallback m_callback;
152  u8 m_buffer[5];
153  u8* m_readDstPtr = nullptr;
154  u8* m_statusPtr = nullptr;
155  u64 m_lastGCTick = 0;
156  u8 m_lastCmd = 0;
157  u8 m_chan;
158  bool m_booted = false;
159  bool m_cmdIssued = false;
160  bool m_running = true;
161 
162  void clockSync();
163  void send(const u8* buffer);
164  size_t receive(u8* buffer);
165  size_t runBuffer(u8* buffer, std::unique_lock<std::mutex>& lk);
166  bool idleGetStatus(std::unique_lock<std::mutex>& lk);
167  void transferProc();
168  void transferWakeup(ThreadLocalEndpoint& endpoint, u8 status);
169 
170  auto bindSync()
171  {
172  return std::bind(&Endpoint::transferWakeup, this,
173  std::placeholders::_1, std::placeholders::_2);
174  }
175 
176 public:
180  void stop();
181 
185  EJoyReturn GBAGetProcessStatus(u8& percentOut);
186 
191  EJoyReturn GBAGetStatusAsync(u8* status, FGBACallback&& callback);
192 
196  EJoyReturn GBAGetStatus(u8* status);
197 
202  EJoyReturn GBAResetAsync(u8* status, FGBACallback&& callback);
203 
207  EJoyReturn GBAReset(u8* status);
208 
214  EJoyReturn GBAReadAsync(u8* dst, u8* status, FGBACallback&& callback);
215 
220  EJoyReturn GBARead(u8* dst, u8* status);
221 
227  EJoyReturn GBAWriteAsync(const u8* src, u8* status, FGBACallback&& callback);
228 
233  EJoyReturn GBAWrite(const u8* src, u8* status);
234 
243  EJoyReturn GBAJoyBootAsync(s32 paletteColor, s32 paletteSpeed,
244  const u8* programp, s32 length, u8* status,
245  FGBACallback&& callback);
246 
249  int GetChan() const { return m_chan; }
250 
251  Endpoint(u8 chan, net::Socket&& data, net::Socket&& clock);
252  ~Endpoint();
253 };
254 
259 {
260  friend class Endpoint;
261  Endpoint& m_ep;
262  ThreadLocalEndpoint(Endpoint& ep) : m_ep(ep) {}
263 
264 public:
269  EJoyReturn GBAGetStatusAsync(u8* status, FGBACallback&& callback);
270 
275  EJoyReturn GBAResetAsync(u8* status, FGBACallback&& callback);
276 
282  EJoyReturn GBAReadAsync(u8* dst, u8* status, FGBACallback&& callback);
283 
289  EJoyReturn GBAWriteAsync(const u8* src, u8* status, FGBACallback&& callback);
290 
293  int GetChan() const { return m_ep.GetChan(); }
294 };
295 
296 }
297 
298 #endif // JBUS_ENDPOINT_HPP
EJoyReturn GBARead(u8 *dst, u8 *status)
Send READ command to GBA synchronously.
+
uint16_t u16
Definition: Common.hpp:14
+
EJoyReturn GBAGetStatus(u8 *status)
Get JOYSTAT register from GBA synchronously.
+
int GetChan() const
Get virtual SI channel assigned to this endpoint.
Definition: Endpoint.hpp:293
+
int8_t s8
Definition: Common.hpp:11
+
std::function< void(ThreadLocalEndpoint &endpoint, EJoyReturn status)> FGBACallback
Standard callback for asynchronous jbus::Endpoint APIs.
Definition: Common.hpp:169
+
uint8_t u8
Definition: Common.hpp:12
+
friend class ThreadLocalEndpoint
Definition: Endpoint.hpp:131
+
Definition: Common.hpp:8
+
Definition: Socket.hpp:103
+
EJoyReturn GBAWriteAsync(const u8 *src, u8 *status, FGBACallback &&callback)
Send WRITE command to GBA asynchronously.
+
uint64_t u64
Definition: Common.hpp:18
+
Endpoint(u8 chan, net::Socket &&data, net::Socket &&clock)
+ +
int16_t s16
Definition: Common.hpp:13
+
int32_t s32
Definition: Common.hpp:15
+
EJoyReturn GBAGetStatusAsync(u8 *status, FGBACallback &&callback)
Get JOYSTAT register from GBA asynchronously.
+
EJoyReturn GBAReadAsync(u8 *dst, u8 *status, FGBACallback &&callback)
Send READ command to GBA asynchronously.
+
EJoyReturn GBAJoyBootAsync(s32 paletteColor, s32 paletteSpeed, const u8 *programp, s32 length, u8 *status, FGBACallback &&callback)
Initiate JoyBoot sequence on this endpoint.
+
EJoyReturn GBAWrite(const u8 *src, u8 *status)
Send WRITE command to GBA synchronously.
+
EJoyReturn
Definition: Common.hpp:157
+
Definition: Endpoint.hpp:15
+ +
uint32_t u32
Definition: Common.hpp:16
+
void stop()
Request stop of I/O thread and block until joined. Further use of this Endpoint is undefined behavior...
+
EJoyReturn GBAReset(u8 *status)
Send RESET command to GBA synchronously.
+
int GetChan() const
Get virtual SI channel assigned to this endpoint.
Definition: Endpoint.hpp:249
+ +
EJoyReturn GBAResetAsync(u8 *status, FGBACallback &&callback)
Send RESET command to GBA asynchronously.
+
EJoyReturn GBAGetProcessStatus(u8 &percentOut)
Get status of last asynchronous operation.
+
Definition: Endpoint.hpp:258
+
+
+ + + + diff --git a/Listener_8hpp.html b/Listener_8hpp.html new file mode 100644 index 0000000..8d634d3 --- /dev/null +++ b/Listener_8hpp.html @@ -0,0 +1,152 @@ + + + + + + +JBus: include/jbus/Listener.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Listener.hpp File Reference
+
+
+
#include "Common.hpp"
+#include "Socket.hpp"
+#include <thread>
+#include <queue>
+#include <mutex>
+
+Include dependency graph for Listener.hpp:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  jbus::Listener
 
+ + + +

+Namespaces

 jbus
 
+
+
+ + + + diff --git a/Listener_8hpp__incl.map b/Listener_8hpp__incl.map new file mode 100644 index 0000000..f8e4495 --- /dev/null +++ b/Listener_8hpp__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/Listener_8hpp__incl.md5 b/Listener_8hpp__incl.md5 new file mode 100644 index 0000000..ed91de0 --- /dev/null +++ b/Listener_8hpp__incl.md5 @@ -0,0 +1 @@ +a4ed56c034495df77a661fd555a6ba6f \ No newline at end of file diff --git a/Listener_8hpp__incl.png b/Listener_8hpp__incl.png new file mode 100644 index 0000000..82d32a0 Binary files /dev/null and b/Listener_8hpp__incl.png differ diff --git a/Listener_8hpp_source.html b/Listener_8hpp_source.html new file mode 100644 index 0000000..2368d66 --- /dev/null +++ b/Listener_8hpp_source.html @@ -0,0 +1,131 @@ + + + + + + +JBus: include/jbus/Listener.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Listener.hpp
+
+
+Go to the documentation of this file.
1 #ifndef JBUS_LISTENER_HPP
2 #define JBUS_LISTENER_HPP
3 
4 #include "Common.hpp"
5 #include "Socket.hpp"
6 #include <thread>
7 #include <queue>
8 #include <mutex>
9 
10 namespace jbus
11 {
12 
14 class Listener
15 {
16  net::Socket m_dataServer = {false};
17  net::Socket m_clockServer = {false};
18  std::thread m_listenerThread;
19  std::mutex m_queueLock;
20  std::queue<std::unique_ptr<Endpoint>> m_endpointQueue;
21  bool m_running = false;
22 
23  static const uint32_t DataPort = 0xd6ba;
24  static const uint32_t ClockPort = 0xc10c;
25 
26  void listenerProc();
27 
28 public:
30  void start();
31 
33  void stop();
34 
37  std::unique_ptr<Endpoint> accept();
38 
39  ~Listener();
40 };
41 
42 }
43 
44 #endif // JBUS_LISTENER_HPP
Definition: Listener.hpp:14
+
void start()
Start listener thread.
+
Definition: Common.hpp:8
+
Definition: Socket.hpp:103
+ + +
std::unique_ptr< Endpoint > accept()
Pop jbus::Endpoint off Listener&#39;s queue.
+
void stop()
Request stop of listener thread and block until joined.
+ +
+
+ + + + diff --git a/Socket_8hpp.html b/Socket_8hpp.html new file mode 100644 index 0000000..0f21e78 --- /dev/null +++ b/Socket_8hpp.html @@ -0,0 +1,170 @@ + + + + + + +JBus: include/jbus/Socket.hpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Socket.hpp File Reference
+
+
+
#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <string>
+#include "Common.hpp"
+
+Include dependency graph for Socket.hpp:
+
+
+ + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  jbus::net::IPAddress
 
class  jbus::net::Socket
 
+ + + + + +

+Namespaces

 jbus
 
 jbus::net
 
+
+
+ + + + diff --git a/Socket_8hpp.js b/Socket_8hpp.js new file mode 100644 index 0000000..cf0c2e9 --- /dev/null +++ b/Socket_8hpp.js @@ -0,0 +1,5 @@ +var Socket_8hpp = +[ + [ "IPAddress", "classjbus_1_1net_1_1IPAddress.html", "classjbus_1_1net_1_1IPAddress" ], + [ "Socket", "classjbus_1_1net_1_1Socket.html", "classjbus_1_1net_1_1Socket" ] +]; \ No newline at end of file diff --git a/Socket_8hpp__dep__incl.map b/Socket_8hpp__dep__incl.map new file mode 100644 index 0000000..f908038 --- /dev/null +++ b/Socket_8hpp__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/Socket_8hpp__dep__incl.md5 b/Socket_8hpp__dep__incl.md5 new file mode 100644 index 0000000..0fec34a --- /dev/null +++ b/Socket_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +3ade9fa685eb5dfb338beead7f74a6cb \ No newline at end of file diff --git a/Socket_8hpp__dep__incl.png b/Socket_8hpp__dep__incl.png new file mode 100644 index 0000000..b45bfa6 Binary files /dev/null and b/Socket_8hpp__dep__incl.png differ diff --git a/Socket_8hpp__incl.map b/Socket_8hpp__incl.map new file mode 100644 index 0000000..bc3da19 --- /dev/null +++ b/Socket_8hpp__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/Socket_8hpp__incl.md5 b/Socket_8hpp__incl.md5 new file mode 100644 index 0000000..03eb442 --- /dev/null +++ b/Socket_8hpp__incl.md5 @@ -0,0 +1 @@ +6e52ae1bcc85ab55b0fa4919d6ff426a \ No newline at end of file diff --git a/Socket_8hpp__incl.png b/Socket_8hpp__incl.png new file mode 100644 index 0000000..65f1a60 Binary files /dev/null and b/Socket_8hpp__incl.png differ diff --git a/Socket_8hpp_source.html b/Socket_8hpp_source.html new file mode 100644 index 0000000..4aab8e9 --- /dev/null +++ b/Socket_8hpp_source.html @@ -0,0 +1,145 @@ + + + + + + +JBus: include/jbus/Socket.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Socket.hpp
+
+
+Go to the documentation of this file.
1 #ifndef JBUS_SOCKET_HPP
2 #define JBUS_SOCKET_HPP
3 
4 #ifndef _WIN32
5 #include <sys/socket.h>
6 #include <netinet/in.h>
7 #include <netinet/tcp.h>
8 #include <arpa/inet.h>
9 #include <netdb.h>
10 #include <unistd.h>
11 #include <errno.h>
12 #else
13 #include <winsock2.h>
14 #include <Ws2tcpip.h>
15 #endif
16 
17 #include <sys/types.h>
18 #include <fcntl.h>
19 #include <string>
20 
21 #include "Common.hpp"
22 
23 namespace jbus
24 {
25 namespace net
26 {
27 
28 /* Define the low-level send/receive flags, which depend on the OS */
29 #ifdef __linux__
30 static const int _flags = MSG_NOSIGNAL;
31 #else
32 static const int _flags = 0;
33 #endif
34 
36 class IPAddress
37 {
38  uint32_t m_address = 0;
39  bool m_valid = false;
40 
41  void resolve(const std::string& address)
42  {
43  m_address = 0;
44  m_valid = false;
45 
46  if (address == "255.255.255.255")
47  {
48  /* The broadcast address needs to be handled explicitly,
49  * because it is also the value returned by inet_addr on error */
50  m_address = INADDR_BROADCAST;
51  m_valid = true;
52  }
53  else if (address == "0.0.0.0")
54  {
55  m_address = INADDR_ANY;
56  m_valid = true;
57  }
58  else
59  {
60  /* Try to convert the address as a byte representation ("xxx.xxx.xxx.xxx") */
61  struct in_addr addr;
62  if (inet_pton(AF_INET, address.c_str(), &addr) == 1)
63  {
64  m_address = addr.s_addr;
65  m_valid = true;
66  }
67  else
68  {
69  /* Not a valid address, try to convert it as a host name */
70  addrinfo hints;
71  memset(&hints, 0, sizeof(hints));
72  hints.ai_family = AF_INET;
73  addrinfo* result = NULL;
74  if (getaddrinfo(address.c_str(), NULL, &hints, &result) == 0)
75  {
76  if (result)
77  {
78  addr = reinterpret_cast<sockaddr_in*>(result->ai_addr)->sin_addr;
79  freeaddrinfo(result);
80  m_address = addr.s_addr;
81  m_valid = true;
82  }
83  }
84  }
85  }
86  }
87 
88 public:
89  IPAddress(const std::string& address)
90  {
91  resolve(address);
92  }
93 
94  uint32_t toInteger() const
95  {
96  return ntohl(m_address);
97  }
98 
99  operator bool() const { return m_valid; }
100 };
101 
103 class Socket
104 {
105 #ifndef _WIN32
106  using SocketTp = int;
107 #else
108  using SocketTp = SOCKET;
109 #endif
110  SocketTp m_socket = -1;
111  bool m_isBlocking;
112 
113  static sockaddr_in createAddress(uint32_t address, unsigned short port)
114  {
115  sockaddr_in addr;
116  memset(&addr, 0, sizeof(addr));
117  addr.sin_addr.s_addr = htonl(address);
118  addr.sin_family = AF_INET;
119  addr.sin_port = htons(port);
120 
121 #ifdef __APPLE__
122  addr.sin_len = sizeof(addr);
123 #endif
124 
125  return addr;
126  }
127 
128  bool openSocket()
129  {
130  if (isOpen())
131  return false;
132 
133  m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
134  if (m_socket == -1)
135  {
136  fprintf(stderr, "Can't allocate socket\n");
137  return false;
138  }
139 
140  int one = 1;
141  setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&one), sizeof(one));
142 #ifdef __APPLE__
143  setsockopt(m_socket, SOL_SOCKET, SO_NOSIGPIPE, reinterpret_cast<char*>(&one), sizeof(one));
144 #endif
145 
146  setBlocking(m_isBlocking);
147 
148  return true;
149  }
150 
151  void setRemoteSocket(int remSocket)
152  {
153  close();
154  m_socket = remSocket;
155  setBlocking(m_isBlocking);
156  }
157 
158 public:
159  enum class EResult
160  {
161  OK,
162  Error,
163  Busy
164  };
165 
166 #ifdef _WIN32
167  static EResult LastWSAError()
168  {
169  switch (WSAGetLastError())
170  {
171  case WSAEWOULDBLOCK:
172  case WSAEALREADY:
173  return EResult::Busy;
174  default:
175  return EResult::Error;
176  }
177  }
178 #endif
179 
180  Socket(bool blocking)
181  : m_isBlocking(blocking) {}
182  ~Socket() { close(); }
183 
184  Socket(const Socket& other) = delete;
185  Socket& operator=(const Socket& other) = delete;
186  Socket(Socket&& other)
187  : m_socket(other.m_socket), m_isBlocking(other.m_isBlocking)
188  {
189  other.m_socket = -1;
190  }
192  {
193  close();
194  m_socket = other.m_socket;
195  other.m_socket = -1;
196  m_isBlocking = other.m_isBlocking;
197  return *this;
198  }
199 
200  void setBlocking(bool blocking)
201  {
202  m_isBlocking = blocking;
203 #ifndef _WIN32
204  int status = fcntl(m_socket, F_GETFL);
205  if (m_isBlocking)
206  fcntl(m_socket, F_SETFL, status & ~O_NONBLOCK);
207  else
208  fcntl(m_socket, F_SETFL, status | O_NONBLOCK);
209 #else
210  u_long b = blocking ? 0 : 1;
211  ioctlsocket(m_socket, FIONBIO, &b);
212 #endif
213  }
214 
215  bool isOpen() const { return m_socket != -1; }
216  bool openAndListen(const IPAddress& address, uint32_t port)
217  {
218  if (!openSocket())
219  return false;
220 
221  sockaddr_in addr = createAddress(address.toInteger(), port);
222  if (bind(m_socket, reinterpret_cast<sockaddr*>(&addr), sizeof(addr)) == -1)
223  {
224  /* Not likely to happen, but... */
225  fprintf(stderr, "Failed to bind listener socket to port %d\n", port);
226  return false;
227  }
228 
229  if (::listen(m_socket, 0) == -1)
230  {
231  /* Oops, socket is deaf */
232  fprintf(stderr, "Failed to listen to port %d\n", port);
233  return false;
234  }
235 
236  return true;
237  }
238 
239  EResult accept(Socket& remoteSocketOut, sockaddr_in& fromAddress)
240  {
241  if (!isOpen())
242  return EResult::Error;
243 
244  /* Accept a new connection */
245  socklen_t length = sizeof(sockaddr_in);
246  int remoteSocket = ::accept(m_socket, reinterpret_cast<sockaddr*>(&fromAddress), &length);
247 
248  /* Check for errors */
249  if (remoteSocket == -1)
250  {
251 #ifndef _WIN32
252  EResult res = (errno == EAGAIN) ? EResult::Busy : EResult::Error;
253  if (res == EResult::Error)
254  fprintf(stderr, "Failed to accept incoming connection: %s\n", strerror(errno));
255 #else
256  EResult res = LastWSAError();
257  if (res == EResult::Error)
258  fprintf(stderr, "Failed to accept incoming connection\n");
259 #endif
260  return res;
261  }
262 
263  /* Initialize the new connected socket */
264  remoteSocketOut.setRemoteSocket(remoteSocket);
265 
266  return EResult::OK;
267  }
268 
269  EResult accept(Socket& remoteSocketOut)
270  {
271  sockaddr_in fromAddress;
272  return accept(remoteSocketOut, fromAddress);
273  }
274 
275  EResult accept(Socket& remoteSocketOut, std::string& fromHostname)
276  {
277  sockaddr_in fromAddress;
278  socklen_t len = sizeof(fromAddress);
279  char name[NI_MAXHOST];
280  EResult res = accept(remoteSocketOut, fromAddress);
281  if (res == EResult::OK)
282  if (getnameinfo((sockaddr*)&fromAddress, len, name, NI_MAXHOST, nullptr, 0, 0) == 0)
283  fromHostname.assign(name);
284  return res;
285  }
286 
287  void close()
288  {
289  if (!isOpen())
290  return;
291 #ifndef _WIN32
292  ::close(m_socket);
293 #else
294  closesocket(m_socket);
295 #endif
296  m_socket = -1;
297  }
298 
299  EResult send(const void* buf, size_t len, size_t& transferred)
300  {
301  transferred = 0;
302  if (!isOpen())
303  return EResult::Error;
304 
305  if (!buf || !len)
306  return EResult::Error;
307 
308  /* Loop until every byte has been sent */
309  int result = 0;
310  for (size_t sent = 0; sent < len; sent += result)
311  {
312  /* Send a chunk of data */
313  result = ::send(m_socket, static_cast<const char*>(buf) + sent, len - sent, _flags);
314 
315  /* Check for errors */
316  if (result < 0)
317 #ifndef _WIN32
318  return (errno == EAGAIN) ? EResult::Busy : EResult::Error;
319 #else
320  return LastWSAError();
321 #endif
322  }
323 
324  transferred = len;
325  return EResult::OK;
326  }
327 
328  EResult send(const void* buf, size_t len)
329  {
330  size_t transferred;
331  return send(buf, len, transferred);
332  }
333 
334  EResult recv(void* buf, size_t len, size_t& transferred)
335  {
336  transferred = 0;
337  if (!isOpen())
338  return EResult::Error;
339 
340  if (!buf)
341  return EResult::Error;
342 
343  if (!len)
344  return EResult::OK;
345 
346  /* Receive a chunk of bytes */
347  int result = ::recv(m_socket, static_cast<char*>(buf), static_cast<int>(len), _flags);
348 
349  if (result < 0)
350 #ifndef _WIN32
351  return (errno == EAGAIN) ? EResult::Busy : EResult::Error;
352 #else
353  return LastWSAError();
354 #endif
355  else if (result == 0)
356  return EResult::Error;
357 
358  transferred = result;
359  return EResult::OK;
360  }
361 
362  EResult recv(void* buf, size_t len)
363  {
364  size_t transferred;
365  return recv(buf, len, transferred);
366  }
367 
368  operator bool() const { return isOpen(); }
369 
370  SocketTp GetInternalSocket() const { return m_socket; }
371 };
372 
373 }
374 }
375 
376 #endif // JBUS_SOCKET_HPP
SocketTp GetInternalSocket() const
Definition: Socket.hpp:370
+
EResult send(const void *buf, size_t len, size_t &transferred)
Definition: Socket.hpp:299
+
bool openAndListen(const IPAddress &address, uint32_t port)
Definition: Socket.hpp:216
+
EResult recv(void *buf, size_t len)
Definition: Socket.hpp:362
+
Definition: Common.hpp:8
+
Definition: Socket.hpp:103
+
bool isOpen() const
Definition: Socket.hpp:215
+
EResult recv(void *buf, size_t len, size_t &transferred)
Definition: Socket.hpp:334
+
void close()
Definition: Socket.hpp:287
+
~Socket()
Definition: Socket.hpp:182
+
Definition: Socket.hpp:36
+
Socket & operator=(Socket &&other)
Definition: Socket.hpp:191
+
EResult accept(Socket &remoteSocketOut)
Definition: Socket.hpp:269
+
uint32_t toInteger() const
Definition: Socket.hpp:94
+
Socket(Socket &&other)
Definition: Socket.hpp:186
+
EResult send(const void *buf, size_t len)
Definition: Socket.hpp:328
+
EResult accept(Socket &remoteSocketOut, sockaddr_in &fromAddress)
Definition: Socket.hpp:239
+ +
EResult
Definition: Socket.hpp:159
+
Socket(bool blocking)
Definition: Socket.hpp:180
+
void setBlocking(bool blocking)
Definition: Socket.hpp:200
+
EResult accept(Socket &remoteSocketOut, std::string &fromHostname)
Definition: Socket.hpp:275
+
IPAddress(const std::string &address)
Definition: Socket.hpp:89
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..f30c994 --- /dev/null +++ b/annotated.html @@ -0,0 +1,134 @@ + + + + + + +JBus: Class List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + +
 Njbus
 Nnet
 CIPAddress
 CSocket
 CEndpoint
 CListener
 CThreadLocalEndpoint
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 0000000..1c6b274 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,4 @@ +var annotated_dup = +[ + [ "jbus", "namespacejbus.html", "namespacejbus" ] +]; \ No newline at end of file diff --git a/arrowdown.png b/arrowdown.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/arrowdown.png differ diff --git a/arrowright.png b/arrowright.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/arrowright.png differ diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/bdwn.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..1b1466b --- /dev/null +++ b/classes.html @@ -0,0 +1,136 @@ + + + + + + +JBus: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
E | I | L | S | T
+ + + + + +
  E  
+
  I  
+
  L  
+
  S  
+
  T  
+
Endpoint (jbus)   IPAddress (jbus::net)   Listener (jbus)   Socket (jbus::net)   ThreadLocalEndpoint (jbus)   
+
E | I | L | S | T
+
+
+ + + + diff --git a/classjbus_1_1Endpoint-members.html b/classjbus_1_1Endpoint-members.html new file mode 100644 index 0000000..8756ec9 --- /dev/null +++ b/classjbus_1_1Endpoint-members.html @@ -0,0 +1,141 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
jbus::Endpoint Member List
+
+
+ +

This is the complete list of members for jbus::Endpoint, including all inherited members.

+ + + + + + + + + + + + + + + + +
Endpoint(u8 chan, net::Socket &&data, net::Socket &&clock)jbus::Endpoint
GBAGetProcessStatus(u8 &percentOut)jbus::Endpoint
GBAGetStatus(u8 *status)jbus::Endpoint
GBAGetStatusAsync(u8 *status, FGBACallback &&callback)jbus::Endpoint
GBAJoyBootAsync(s32 paletteColor, s32 paletteSpeed, const u8 *programp, s32 length, u8 *status, FGBACallback &&callback)jbus::Endpoint
GBARead(u8 *dst, u8 *status)jbus::Endpoint
GBAReadAsync(u8 *dst, u8 *status, FGBACallback &&callback)jbus::Endpoint
GBAReset(u8 *status)jbus::Endpoint
GBAResetAsync(u8 *status, FGBACallback &&callback)jbus::Endpoint
GBAWrite(const u8 *src, u8 *status)jbus::Endpoint
GBAWriteAsync(const u8 *src, u8 *status, FGBACallback &&callback)jbus::Endpoint
GetChan() const jbus::Endpointinline
stop()jbus::Endpoint
ThreadLocalEndpoint classjbus::Endpointfriend
~Endpoint()jbus::Endpoint
+
+ + + + diff --git a/classjbus_1_1Endpoint.html b/classjbus_1_1Endpoint.html new file mode 100644 index 0000000..36b217e --- /dev/null +++ b/classjbus_1_1Endpoint.html @@ -0,0 +1,710 @@ + + + + + + +JBus: jbus::Endpoint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus::Endpoint Class Reference
+
+
+ +

#include <Endpoint.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void stop ()
 Request stop of I/O thread and block until joined. Further use of this Endpoint is undefined behavior. The destructor calls this implicitly. More...
 
EJoyReturn GBAGetProcessStatus (u8 &percentOut)
 Get status of last asynchronous operation. More...
 
EJoyReturn GBAGetStatusAsync (u8 *status, FGBACallback &&callback)
 Get JOYSTAT register from GBA asynchronously. More...
 
EJoyReturn GBAGetStatus (u8 *status)
 Get JOYSTAT register from GBA synchronously. More...
 
EJoyReturn GBAResetAsync (u8 *status, FGBACallback &&callback)
 Send RESET command to GBA asynchronously. More...
 
EJoyReturn GBAReset (u8 *status)
 Send RESET command to GBA synchronously. More...
 
EJoyReturn GBAReadAsync (u8 *dst, u8 *status, FGBACallback &&callback)
 Send READ command to GBA asynchronously. More...
 
EJoyReturn GBARead (u8 *dst, u8 *status)
 Send READ command to GBA synchronously. More...
 
EJoyReturn GBAWriteAsync (const u8 *src, u8 *status, FGBACallback &&callback)
 Send WRITE command to GBA asynchronously. More...
 
EJoyReturn GBAWrite (const u8 *src, u8 *status)
 Send WRITE command to GBA synchronously. More...
 
EJoyReturn GBAJoyBootAsync (s32 paletteColor, s32 paletteSpeed, const u8 *programp, s32 length, u8 *status, FGBACallback &&callback)
 Initiate JoyBoot sequence on this endpoint. More...
 
int GetChan () const
 Get virtual SI channel assigned to this endpoint. More...
 
 Endpoint (u8 chan, net::Socket &&data, net::Socket &&clock)
 
 ~Endpoint ()
 
+ + + +

+Friends

class ThreadLocalEndpoint
 
+

Detailed Description

+

Main class for performing JoyBoot and subsequent JoyBus I/O operations. Instances should be obtained though the jbus::Listener::accept method.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
jbus::Endpoint::Endpoint (u8 chan,
net::Socket && data,
net::Socket && clock 
)
+
+ +

+Here is the caller graph for this function:
+
+
+ + + + +
+

+ +
+
+ +
+
+ + + + + + + +
jbus::Endpoint::~Endpoint ()
+
+ +

+Here is the caller graph for this function:
+
+
+ + + + +
+

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
EJoyReturn jbus::Endpoint::GBAGetProcessStatus (u8percentOut)
+
+ +

Get status of last asynchronous operation.

+
Parameters
+ + +
percentOutReference to output transfer percent of GBAJoyBootAsync.
+
+
+
Returns
GBA_READY when idle, or GBA_BUSY when operation in progress.
+ +
+
+ +
+
+ + + + + + + + +
EJoyReturn jbus::Endpoint::GBAGetStatus (u8status)
+
+ +

Get JOYSTAT register from GBA synchronously.

+
Parameters
+ + +
statusDestination pointer for EJStatFlags.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBAGetStatusAsync (u8status,
FGBACallback && callback 
)
+
+ +

Get JOYSTAT register from GBA asynchronously.

+
Parameters
+ + + +
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBAJoyBootAsync (s32 paletteColor,
s32 paletteSpeed,
const u8programp,
s32 length,
u8status,
FGBACallback && callback 
)
+
+ +

Initiate JoyBoot sequence on this endpoint.

+
Parameters
+ + + + + + + +
paletteColorPalette for displaying logo in ROM header [0,6].
paletteSpeedPalette interpolation speed for displaying logo in ROM header [-4,4].
programpPointer to program ROM data.
lengthLength of program ROM data.
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBARead (u8dst,
u8status 
)
+
+ +

Send READ command to GBA synchronously.

+
Parameters
+ + + +
dstDestination pointer for 4-byte packet of data.
statusDestination pointer for EJStatFlags.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBAReadAsync (u8dst,
u8status,
FGBACallback && callback 
)
+
+ +

Send READ command to GBA asynchronously.

+
Parameters
+ + + + +
dstDestination pointer for 4-byte packet of data.
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + +
EJoyReturn jbus::Endpoint::GBAReset (u8status)
+
+ +

Send RESET command to GBA synchronously.

+
Parameters
+ + +
statusDestination pointer for EJStatFlags.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBAResetAsync (u8status,
FGBACallback && callback 
)
+
+ +

Send RESET command to GBA asynchronously.

+
Parameters
+ + + +
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBAWrite (const u8src,
u8status 
)
+
+ +

Send WRITE command to GBA synchronously.

+
Parameters
+ + + +
srcSource pointer for 4-byte packet of data. It is not required to keep resident.
statusDestination pointer for EJStatFlags.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::Endpoint::GBAWriteAsync (const u8src,
u8status,
FGBACallback && callback 
)
+
+ +

Send WRITE command to GBA asynchronously.

+
Parameters
+ + + + +
srcSource pointer for 4-byte packet of data. It is not required to keep resident.
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
int jbus::Endpoint::GetChan () const
+
+inline
+
+ +

Get virtual SI channel assigned to this endpoint.

+
Returns
SI channel
+ +

+Here is the call graph for this function:
+
+
+ + + + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + + +
+

+ +
+
+ +
+
+ + + + + + + +
void jbus::Endpoint::stop ()
+
+ +

Request stop of I/O thread and block until joined. Further use of this Endpoint is undefined behavior. The destructor calls this implicitly.

+ +
+
+

Friends And Related Function Documentation

+ +
+
+ + + + + +
+ + + + +
friend class ThreadLocalEndpoint
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjbus_1_1Endpoint.js b/classjbus_1_1Endpoint.js new file mode 100644 index 0000000..56e5075 --- /dev/null +++ b/classjbus_1_1Endpoint.js @@ -0,0 +1,18 @@ +var classjbus_1_1Endpoint = +[ + [ "Endpoint", "classjbus_1_1Endpoint.html#a39ddcbf5ac7078d59a4d99d291e3f0fa", null ], + [ "~Endpoint", "classjbus_1_1Endpoint.html#ad39f268d3bee438e5176cc7f4cf59675", null ], + [ "GBAGetProcessStatus", "classjbus_1_1Endpoint.html#a50401a9a9d658f1f68e3dde61d5dfbce", null ], + [ "GBAGetStatus", "classjbus_1_1Endpoint.html#a779ba524cf30f41e29fd53a626ba2acf", null ], + [ "GBAGetStatusAsync", "classjbus_1_1Endpoint.html#a4ba9120b99057be42940b797708b790e", null ], + [ "GBAJoyBootAsync", "classjbus_1_1Endpoint.html#aad76a9374e4e151540f678798548a843", null ], + [ "GBARead", "classjbus_1_1Endpoint.html#a775c816f52ca45117759b5b23eb45683", null ], + [ "GBAReadAsync", "classjbus_1_1Endpoint.html#a047d724cc9ccb8253cb8464c24b9ccd4", null ], + [ "GBAReset", "classjbus_1_1Endpoint.html#a9065f6189182596a3f5c498e8ef98b40", null ], + [ "GBAResetAsync", "classjbus_1_1Endpoint.html#a81d86608ffb93b3211a915fa1712beb4", null ], + [ "GBAWrite", "classjbus_1_1Endpoint.html#a6e59373aa28a23097129470deaeb46dd", null ], + [ "GBAWriteAsync", "classjbus_1_1Endpoint.html#a06506d0cfa26d461f239ed761264d7b0", null ], + [ "GetChan", "classjbus_1_1Endpoint.html#acb5167184768ea65d026adc531f237b9", null ], + [ "stop", "classjbus_1_1Endpoint.html#a1cae93f2e1e097b10b34810a0d04333f", null ], + [ "ThreadLocalEndpoint", "classjbus_1_1Endpoint.html#ab5de6af29530791b0b2958002f1d3603", null ] +]; \ No newline at end of file diff --git a/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.map b/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.map new file mode 100644 index 0000000..dcf7667 --- /dev/null +++ b/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.md5 b/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.md5 new file mode 100644 index 0000000..0e675b1 --- /dev/null +++ b/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.md5 @@ -0,0 +1 @@ +824e73d67151deeaf7fbc4f9bdacb8fa \ No newline at end of file diff --git a/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.png b/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.png new file mode 100644 index 0000000..0f2b48d Binary files /dev/null and b/classjbus_1_1Endpoint_a39ddcbf5ac7078d59a4d99d291e3f0fa_icgraph.png differ diff --git a/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.map b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.map new file mode 100644 index 0000000..38ab7a6 --- /dev/null +++ b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.md5 b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.md5 new file mode 100644 index 0000000..f48841c --- /dev/null +++ b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.md5 @@ -0,0 +1 @@ +5461c29e4421ddb263add54dcfaeb124 \ No newline at end of file diff --git a/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.png b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.png new file mode 100644 index 0000000..9f5a281 Binary files /dev/null and b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_cgraph.png differ diff --git a/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.map b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.map new file mode 100644 index 0000000..5788b5c --- /dev/null +++ b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.md5 b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.md5 new file mode 100644 index 0000000..5259306 --- /dev/null +++ b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.md5 @@ -0,0 +1 @@ +88ff3e70d76e39b6d00853d83ccd8818 \ No newline at end of file diff --git a/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.png b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.png new file mode 100644 index 0000000..03f1d09 Binary files /dev/null and b/classjbus_1_1Endpoint_acb5167184768ea65d026adc531f237b9_icgraph.png differ diff --git a/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.map b/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.map new file mode 100644 index 0000000..7a015e8 --- /dev/null +++ b/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.md5 b/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.md5 new file mode 100644 index 0000000..02eb3f2 --- /dev/null +++ b/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.md5 @@ -0,0 +1 @@ +d4c50d26adf2dd5f92ab2ad62f8b9dc0 \ No newline at end of file diff --git a/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.png b/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.png new file mode 100644 index 0000000..99e1c80 Binary files /dev/null and b/classjbus_1_1Endpoint_ad39f268d3bee438e5176cc7f4cf59675_icgraph.png differ diff --git a/classjbus_1_1Listener-members.html b/classjbus_1_1Listener-members.html new file mode 100644 index 0000000..c137193 --- /dev/null +++ b/classjbus_1_1Listener-members.html @@ -0,0 +1,130 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
jbus::Listener Member List
+
+
+ +

This is the complete list of members for jbus::Listener, including all inherited members.

+ + + + + +
accept()jbus::Listener
start()jbus::Listener
stop()jbus::Listener
~Listener()jbus::Listener
+
+ + + + diff --git a/classjbus_1_1Listener.html b/classjbus_1_1Listener.html new file mode 100644 index 0000000..cd592eb --- /dev/null +++ b/classjbus_1_1Listener.html @@ -0,0 +1,218 @@ + + + + + + +JBus: jbus::Listener Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus::Listener Class Reference
+
+
+ +

#include <Listener.hpp>

+ + + + + + + + + + + + + +

+Public Member Functions

void start ()
 Start listener thread. More...
 
void stop ()
 Request stop of listener thread and block until joined. More...
 
std::unique_ptr< Endpointaccept ()
 Pop jbus::Endpoint off Listener's queue. More...
 
 ~Listener ()
 
+

Detailed Description

+

Server interface for accepting incoming connections from GBA emulator instances.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
jbus::Listener::~Listener ()
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
std::unique_ptr<Endpoint> jbus::Listener::accept ()
+
+ +

Pop jbus::Endpoint off Listener's queue.

+
Returns
Endpoint instance, ready to issue commands.
+ +
+
+ +
+
+ + + + + + + +
void jbus::Listener::start ()
+
+ +

Start listener thread.

+ +
+
+ +
+
+ + + + + + + +
void jbus::Listener::stop ()
+
+ +

Request stop of listener thread and block until joined.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjbus_1_1Listener.js b/classjbus_1_1Listener.js new file mode 100644 index 0000000..4454a96 --- /dev/null +++ b/classjbus_1_1Listener.js @@ -0,0 +1,7 @@ +var classjbus_1_1Listener = +[ + [ "~Listener", "classjbus_1_1Listener.html#a979078fd2cb5e4faeaa668dfda8f8e9d", null ], + [ "accept", "classjbus_1_1Listener.html#aca4aeff837a26d69ec7f4dec6572e986", null ], + [ "start", "classjbus_1_1Listener.html#a2fd5a552555c94be0b03bf2c66ea5e2b", null ], + [ "stop", "classjbus_1_1Listener.html#a40c805d7681e609d72acad900579fe76", null ] +]; \ No newline at end of file diff --git a/classjbus_1_1ThreadLocalEndpoint-members.html b/classjbus_1_1ThreadLocalEndpoint-members.html new file mode 100644 index 0000000..c512955 --- /dev/null +++ b/classjbus_1_1ThreadLocalEndpoint-members.html @@ -0,0 +1,132 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
jbus::ThreadLocalEndpoint Member List
+
+
+ +

This is the complete list of members for jbus::ThreadLocalEndpoint, including all inherited members.

+ + + + + + + +
Endpoint classjbus::ThreadLocalEndpointfriend
GBAGetStatusAsync(u8 *status, FGBACallback &&callback)jbus::ThreadLocalEndpoint
GBAReadAsync(u8 *dst, u8 *status, FGBACallback &&callback)jbus::ThreadLocalEndpoint
GBAResetAsync(u8 *status, FGBACallback &&callback)jbus::ThreadLocalEndpoint
GBAWriteAsync(const u8 *src, u8 *status, FGBACallback &&callback)jbus::ThreadLocalEndpoint
GetChan() const jbus::ThreadLocalEndpointinline
+
+ + + + diff --git a/classjbus_1_1ThreadLocalEndpoint.html b/classjbus_1_1ThreadLocalEndpoint.html new file mode 100644 index 0000000..9b09595 --- /dev/null +++ b/classjbus_1_1ThreadLocalEndpoint.html @@ -0,0 +1,377 @@ + + + + + + +JBus: jbus::ThreadLocalEndpoint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus::ThreadLocalEndpoint Class Reference
+
+
+ +

#include <Endpoint.hpp>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

EJoyReturn GBAGetStatusAsync (u8 *status, FGBACallback &&callback)
 Get JOYSTAT register from GBA asynchronously. More...
 
EJoyReturn GBAResetAsync (u8 *status, FGBACallback &&callback)
 Send RESET command to GBA asynchronously. More...
 
EJoyReturn GBAReadAsync (u8 *dst, u8 *status, FGBACallback &&callback)
 Send READ command to GBA asynchronously. More...
 
EJoyReturn GBAWriteAsync (const u8 *src, u8 *status, FGBACallback &&callback)
 Send WRITE command to GBA asynchronously. More...
 
int GetChan () const
 Get virtual SI channel assigned to this endpoint. More...
 
+ + + +

+Friends

class Endpoint
 
+

Detailed Description

+

Lockless wrapper interface for jbus::Endpoint. This class is constructed internally and supplied as a callback argument. It should not be constructed directly.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::ThreadLocalEndpoint::GBAGetStatusAsync (u8status,
FGBACallback && callback 
)
+
+ +

Get JOYSTAT register from GBA asynchronously.

+
Parameters
+ + + +
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::ThreadLocalEndpoint::GBAReadAsync (u8dst,
u8status,
FGBACallback && callback 
)
+
+ +

Send READ command to GBA asynchronously.

+
Parameters
+ + + + +
dstDestination pointer for 4-byte packet of data.
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::ThreadLocalEndpoint::GBAResetAsync (u8status,
FGBACallback && callback 
)
+
+ +

Send RESET command to GBA asynchronously.

+
Parameters
+ + + +
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
EJoyReturn jbus::ThreadLocalEndpoint::GBAWriteAsync (const u8src,
u8status,
FGBACallback && callback 
)
+
+ +

Send WRITE command to GBA asynchronously.

+
Parameters
+ + + + +
srcSource pointer for 4-byte packet of data. It is not required to keep resident.
statusDestination pointer for EJStatFlags.
callbackFunctor to execute when operation completes.
+
+
+
Returns
GBA_READY if submitted, or GBA_NOT_READY if another operation in progress.
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
int jbus::ThreadLocalEndpoint::GetChan () const
+
+inline
+
+ +

Get virtual SI channel assigned to this endpoint.

+
Returns
SI channel
+ +

+Here is the call graph for this function:
+
+
+ + + + + +
+

+ +
+
+

Friends And Related Function Documentation

+ +
+
+ + + + + +
+ + + + +
friend class Endpoint
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjbus_1_1ThreadLocalEndpoint.js b/classjbus_1_1ThreadLocalEndpoint.js new file mode 100644 index 0000000..52381aa --- /dev/null +++ b/classjbus_1_1ThreadLocalEndpoint.js @@ -0,0 +1,9 @@ +var classjbus_1_1ThreadLocalEndpoint = +[ + [ "GBAGetStatusAsync", "classjbus_1_1ThreadLocalEndpoint.html#ad81335c0018a42ef9085d6941c4cddd5", null ], + [ "GBAReadAsync", "classjbus_1_1ThreadLocalEndpoint.html#aa1b9704d834d55b5118d4612dc335f4c", null ], + [ "GBAResetAsync", "classjbus_1_1ThreadLocalEndpoint.html#aab260d6d6686c2c3fc2ff31f57cf436d", null ], + [ "GBAWriteAsync", "classjbus_1_1ThreadLocalEndpoint.html#aa1625ccaf1f817831d56cf32554bc40c", null ], + [ "GetChan", "classjbus_1_1ThreadLocalEndpoint.html#a0899b0293f9eb4b69763d8e1e21e58a9", null ], + [ "Endpoint", "classjbus_1_1ThreadLocalEndpoint.html#a500d74fc41e3ab6b4889a579193566ed", null ] +]; \ No newline at end of file diff --git a/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.map b/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.map new file mode 100644 index 0000000..c41398e --- /dev/null +++ b/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.md5 b/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.md5 new file mode 100644 index 0000000..752ac82 --- /dev/null +++ b/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.md5 @@ -0,0 +1 @@ +306e203de198f43e8fd11cb061057034 \ No newline at end of file diff --git a/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.png b/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.png new file mode 100644 index 0000000..8535310 Binary files /dev/null and b/classjbus_1_1ThreadLocalEndpoint_a0899b0293f9eb4b69763d8e1e21e58a9_cgraph.png differ diff --git a/classjbus_1_1net_1_1IPAddress-members.html b/classjbus_1_1net_1_1IPAddress-members.html new file mode 100644 index 0000000..d6d3c17 --- /dev/null +++ b/classjbus_1_1net_1_1IPAddress-members.html @@ -0,0 +1,129 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
jbus::net::IPAddress Member List
+
+
+ +

This is the complete list of members for jbus::net::IPAddress, including all inherited members.

+ + + + +
IPAddress(const std::string &address)jbus::net::IPAddressinline
operator bool() const jbus::net::IPAddressinline
toInteger() const jbus::net::IPAddressinline
+
+ + + + diff --git a/classjbus_1_1net_1_1IPAddress.html b/classjbus_1_1net_1_1IPAddress.html new file mode 100644 index 0000000..d532127 --- /dev/null +++ b/classjbus_1_1net_1_1IPAddress.html @@ -0,0 +1,226 @@ + + + + + + +JBus: jbus::net::IPAddress Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus::net::IPAddress Class Reference
+
+
+ +

#include <Socket.hpp>

+ + + + + + + + +

+Public Member Functions

 IPAddress (const std::string &address)
 
uint32_t toInteger () const
 
 operator bool () const
 
+

Detailed Description

+

IP address class derived from SFML

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
jbus::net::IPAddress::IPAddress (const std::string & address)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
jbus::net::IPAddress::operator bool () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
uint32_t jbus::net::IPAddress::toInteger () const
+
+inline
+
+ +

+Here is the caller graph for this function:
+
+
+ + + +
+

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjbus_1_1net_1_1IPAddress.js b/classjbus_1_1net_1_1IPAddress.js new file mode 100644 index 0000000..f266f0d --- /dev/null +++ b/classjbus_1_1net_1_1IPAddress.js @@ -0,0 +1,6 @@ +var classjbus_1_1net_1_1IPAddress = +[ + [ "IPAddress", "classjbus_1_1net_1_1IPAddress.html#a7a9262cd458bcf8e63d5b9204edfdde9", null ], + [ "operator bool", "classjbus_1_1net_1_1IPAddress.html#a71d4f132a65595be0d74dd0a9a498696", null ], + [ "toInteger", "classjbus_1_1net_1_1IPAddress.html#a36ccdd7a0630a183c16943a21b3c908c", null ] +]; \ No newline at end of file diff --git a/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.map b/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.map new file mode 100644 index 0000000..de21311 --- /dev/null +++ b/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.md5 b/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.md5 new file mode 100644 index 0000000..9bd82aa --- /dev/null +++ b/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.md5 @@ -0,0 +1 @@ +a1427abc23eb2d5797122b92f2fc00d2 \ No newline at end of file diff --git a/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.png b/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.png new file mode 100644 index 0000000..3b3c3f8 Binary files /dev/null and b/classjbus_1_1net_1_1IPAddress_a36ccdd7a0630a183c16943a21b3c908c_icgraph.png differ diff --git a/classjbus_1_1net_1_1Socket-members.html b/classjbus_1_1net_1_1Socket-members.html new file mode 100644 index 0000000..fd44f6a --- /dev/null +++ b/classjbus_1_1net_1_1Socket-members.html @@ -0,0 +1,146 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
jbus::net::Socket Member List
+
+
+ +

This is the complete list of members for jbus::net::Socket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
accept(Socket &remoteSocketOut, sockaddr_in &fromAddress)jbus::net::Socketinline
accept(Socket &remoteSocketOut)jbus::net::Socketinline
accept(Socket &remoteSocketOut, std::string &fromHostname)jbus::net::Socketinline
close()jbus::net::Socketinline
EResult enum namejbus::net::Socket
GetInternalSocket() const jbus::net::Socketinline
isOpen() const jbus::net::Socketinline
openAndListen(const IPAddress &address, uint32_t port)jbus::net::Socketinline
operator bool() const jbus::net::Socketinline
operator=(const Socket &other)=deletejbus::net::Socket
operator=(Socket &&other)jbus::net::Socketinline
recv(void *buf, size_t len, size_t &transferred)jbus::net::Socketinline
recv(void *buf, size_t len)jbus::net::Socketinline
send(const void *buf, size_t len, size_t &transferred)jbus::net::Socketinline
send(const void *buf, size_t len)jbus::net::Socketinline
setBlocking(bool blocking)jbus::net::Socketinline
Socket(bool blocking)jbus::net::Socketinline
Socket(const Socket &other)=deletejbus::net::Socket
Socket(Socket &&other)jbus::net::Socketinline
~Socket()jbus::net::Socketinline
+
+ + + + diff --git a/classjbus_1_1net_1_1Socket.html b/classjbus_1_1net_1_1Socket.html new file mode 100644 index 0000000..6b430db --- /dev/null +++ b/classjbus_1_1net_1_1Socket.html @@ -0,0 +1,759 @@ + + + + + + +JBus: jbus::net::Socket Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus::net::Socket Class Reference
+
+
+ +

#include <Socket.hpp>

+ + + + +

+Public Types

enum  EResult { EResult::OK, +EResult::Error, +EResult::Busy + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Socket (bool blocking)
 
 ~Socket ()
 
 Socket (const Socket &other)=delete
 
Socketoperator= (const Socket &other)=delete
 
 Socket (Socket &&other)
 
Socketoperator= (Socket &&other)
 
void setBlocking (bool blocking)
 
bool isOpen () const
 
bool openAndListen (const IPAddress &address, uint32_t port)
 
EResult accept (Socket &remoteSocketOut, sockaddr_in &fromAddress)
 
EResult accept (Socket &remoteSocketOut)
 
EResult accept (Socket &remoteSocketOut, std::string &fromHostname)
 
void close ()
 
EResult send (const void *buf, size_t len, size_t &transferred)
 
EResult send (const void *buf, size_t len)
 
EResult recv (void *buf, size_t len, size_t &transferred)
 
EResult recv (void *buf, size_t len)
 
 operator bool () const
 
SocketTp GetInternalSocket () const
 
+

Detailed Description

+

Server-oriented TCP socket class derived from SFML

+

Member Enumeration Documentation

+ +
+
+ + + + + +
+ + + + +
enum jbus::net::Socket::EResult
+
+strong
+
+ + + + +
Enumerator
OK  +
Error  +
Busy  +
+ +
+
+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
jbus::net::Socket::Socket (bool blocking)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
jbus::net::Socket::~Socket ()
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
jbus::net::Socket::Socket (const Socketother)
+
+delete
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
jbus::net::Socket::Socket (Socket && other)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EResult jbus::net::Socket::accept (SocketremoteSocketOut,
sockaddr_in & fromAddress 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
EResult jbus::net::Socket::accept (SocketremoteSocketOut)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EResult jbus::net::Socket::accept (SocketremoteSocketOut,
std::string & fromHostname 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void jbus::net::Socket::close ()
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
SocketTp jbus::net::Socket::GetInternalSocket () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
bool jbus::net::Socket::isOpen () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool jbus::net::Socket::openAndListen (const IPAddressaddress,
uint32_t port 
)
+
+inline
+
+ +

+Here is the call graph for this function:
+
+
+ + + +
+

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
jbus::net::Socket::operator bool () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
Socket& jbus::net::Socket::operator= (const Socketother)
+
+delete
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
Socket& jbus::net::Socket::operator= (Socket && other)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
EResult jbus::net::Socket::recv (void * buf,
size_t len,
size_t & transferred 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EResult jbus::net::Socket::recv (void * buf,
size_t len 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
EResult jbus::net::Socket::send (const void * buf,
size_t len,
size_t & transferred 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EResult jbus::net::Socket::send (const void * buf,
size_t len 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void jbus::net::Socket::setBlocking (bool blocking)
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjbus_1_1net_1_1Socket.js b/classjbus_1_1net_1_1Socket.js new file mode 100644 index 0000000..03b89cd --- /dev/null +++ b/classjbus_1_1net_1_1Socket.js @@ -0,0 +1,27 @@ +var classjbus_1_1net_1_1Socket = +[ + [ "EResult", "classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113f", [ + [ "OK", "classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fae0aa021e21dddbd6d8cecec71e9cf564", null ], + [ "Error", "classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fa902b0d55fddef6f8d651fe1035b7d4bd", null ], + [ "Busy", "classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fad8a942ef2b04672adfafef0ad817a407", null ] + ] ], + [ "Socket", "classjbus_1_1net_1_1Socket.html#a87bf8bdb4a07533dc7eccfd5bb84857d", null ], + [ "~Socket", "classjbus_1_1net_1_1Socket.html#a3d2700e84af823fb63c8119f033a799d", null ], + [ "Socket", "classjbus_1_1net_1_1Socket.html#af2bbe556cdffa7e7e542318164c3496c", null ], + [ "Socket", "classjbus_1_1net_1_1Socket.html#ae55b301ad32ba4a0fe54e7282c2e3e50", null ], + [ "accept", "classjbus_1_1net_1_1Socket.html#afb79caaa1f0d96afb0088f9910c9c633", null ], + [ "accept", "classjbus_1_1net_1_1Socket.html#a4eac487033d8a6b855f5023955c6d1fc", null ], + [ "accept", "classjbus_1_1net_1_1Socket.html#a7775d73e68c92ca6685cc2c9bbad4f99", null ], + [ "close", "classjbus_1_1net_1_1Socket.html#ad981ced8a7a6f1bf5a3e6067df1ada9d", null ], + [ "GetInternalSocket", "classjbus_1_1net_1_1Socket.html#a66864f8061a4d96fb9ceabc808532046", null ], + [ "isOpen", "classjbus_1_1net_1_1Socket.html#a31a6b806331c0856658e08fe9a77b32d", null ], + [ "openAndListen", "classjbus_1_1net_1_1Socket.html#aa6baaf24a436a72735d0561f907864eb", null ], + [ "operator bool", "classjbus_1_1net_1_1Socket.html#a5417fa626737b38ed048595ff0cda452", null ], + [ "operator=", "classjbus_1_1net_1_1Socket.html#a0f73de864690d7637be5ccdd2ab2cd02", null ], + [ "operator=", "classjbus_1_1net_1_1Socket.html#af761a3e1046b017ee919595af021bede", null ], + [ "recv", "classjbus_1_1net_1_1Socket.html#a145c616a39461c9ab57e021a51f746e4", null ], + [ "recv", "classjbus_1_1net_1_1Socket.html#a5563c140f709a91585cafbb27151720a", null ], + [ "send", "classjbus_1_1net_1_1Socket.html#ae3e4995fb077912fa51764053e931bae", null ], + [ "send", "classjbus_1_1net_1_1Socket.html#aeff335671da65f7397f86af7b712384f", null ], + [ "setBlocking", "classjbus_1_1net_1_1Socket.html#a9ee7eee273fdb17fed00972dff0136ee", null ] +]; \ No newline at end of file diff --git a/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.map b/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.map new file mode 100644 index 0000000..9819e25 --- /dev/null +++ b/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.md5 b/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.md5 new file mode 100644 index 0000000..430b112 --- /dev/null +++ b/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.md5 @@ -0,0 +1 @@ +fc14e685d193c229b1cd079dced43d29 \ No newline at end of file diff --git a/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.png b/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.png new file mode 100644 index 0000000..2c43e86 Binary files /dev/null and b/classjbus_1_1net_1_1Socket_aa6baaf24a436a72735d0561f907864eb_cgraph.png differ diff --git a/classstd_1_1experimental_1_1bad__optional__access-members.html b/classstd_1_1experimental_1_1bad__optional__access-members.html new file mode 100644 index 0000000..7577788 --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access-members.html @@ -0,0 +1,128 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::bad_optional_access Member List
+
+
+ +

This is the complete list of members for std::experimental::bad_optional_access, including all inherited members.

+ + + +
bad_optional_access(const string &what_arg) (defined in std::experimental::bad_optional_access)std::experimental::bad_optional_accessinlineexplicit
bad_optional_access(const char *what_arg) (defined in std::experimental::bad_optional_access)std::experimental::bad_optional_accessinlineexplicit
+
+ + + + diff --git a/classstd_1_1experimental_1_1bad__optional__access.html b/classstd_1_1experimental_1_1bad__optional__access.html new file mode 100644 index 0000000..f24f9bc --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access.html @@ -0,0 +1,154 @@ + + + + + + +JBus: std::experimental::bad_optional_access Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::bad_optional_access Class Reference
+
+
+
+Inheritance diagram for std::experimental::bad_optional_access:
+
+
Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for std::experimental::bad_optional_access:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + +

+Public Member Functions

bad_optional_access (const string &what_arg)
 
bad_optional_access (const char *what_arg)
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classstd_1_1experimental_1_1bad__optional__access.js b/classstd_1_1experimental_1_1bad__optional__access.js new file mode 100644 index 0000000..a1f25d9 --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access.js @@ -0,0 +1,5 @@ +var classstd_1_1experimental_1_1bad__optional__access = +[ + [ "bad_optional_access", "classstd_1_1experimental_1_1bad__optional__access.html#a5788e13d3c7419ab5e781274e102d0f2", null ], + [ "bad_optional_access", "classstd_1_1experimental_1_1bad__optional__access.html#a75d7625c06d41839667c6cc9ce144bd1", null ] +]; \ No newline at end of file diff --git a/classstd_1_1experimental_1_1bad__optional__access__coll__graph.map b/classstd_1_1experimental_1_1bad__optional__access__coll__graph.map new file mode 100644 index 0000000..b7b697a --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access__coll__graph.map @@ -0,0 +1,2 @@ + + diff --git a/classstd_1_1experimental_1_1bad__optional__access__coll__graph.md5 b/classstd_1_1experimental_1_1bad__optional__access__coll__graph.md5 new file mode 100644 index 0000000..e6f0b79 --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access__coll__graph.md5 @@ -0,0 +1 @@ +cf53addf05310fe338d5cf347881b488 \ No newline at end of file diff --git a/classstd_1_1experimental_1_1bad__optional__access__coll__graph.png b/classstd_1_1experimental_1_1bad__optional__access__coll__graph.png new file mode 100644 index 0000000..7db4804 Binary files /dev/null and b/classstd_1_1experimental_1_1bad__optional__access__coll__graph.png differ diff --git a/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.map b/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.map new file mode 100644 index 0000000..b7b697a --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.map @@ -0,0 +1,2 @@ + + diff --git a/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.md5 b/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.md5 new file mode 100644 index 0000000..e6f0b79 --- /dev/null +++ b/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.md5 @@ -0,0 +1 @@ +cf53addf05310fe338d5cf347881b488 \ No newline at end of file diff --git a/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.png b/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.png new file mode 100644 index 0000000..7db4804 Binary files /dev/null and b/classstd_1_1experimental_1_1bad__optional__access__inherit__graph.png differ diff --git a/classstd_1_1experimental_1_1optional-members.html b/classstd_1_1experimental_1_1optional-members.html new file mode 100644 index 0000000..a1cdc5b --- /dev/null +++ b/classstd_1_1experimental_1_1optional-members.html @@ -0,0 +1,151 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::optional< T > Member List
+
+
+ +

This is the complete list of members for std::experimental::optional< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
emplace(Args &&...args) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
emplace(initializer_list< U > il, Args &&...args) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator bool() const noexcept (defined in std::experimental::optional< T >)std::experimental::optional< T >inlineexplicit
operator*() const (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator*() (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator->() const (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator->() (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator=(nullopt_t) noexcept (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator=(const optional &rhs) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator=(optional &&rhs) noexcept(is_nothrow_move_assignable< T >::value &&is_nothrow_move_constructible< T >::value) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
operator=(U &&v) -> typename enable_if< is_same< typename decay< U >::type, T >::value, optional & >::type (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional() noexcept (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional(nullopt_t) noexcept (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional(const optional &rhs) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional(optional &&rhs) noexcept(is_nothrow_move_constructible< T >::value) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional(const T &v) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional(T &&v) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
optional(in_place_t, Args &&...args) (defined in std::experimental::optional< T >)std::experimental::optional< T >inlineexplicit
optional(in_place_t, std::initializer_list< U > il, Args &&...args) (defined in std::experimental::optional< T >)std::experimental::optional< T >inlineexplicit
swap(optional< T > &rhs) noexcept(is_nothrow_move_constructible< T >::value &&noexcept(swap(declval< T & >(), declval< T & >()))) (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
value() const (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
value() (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
value_or(V &&v) const (defined in std::experimental::optional< T >)std::experimental::optional< T >inline
value_type typedef (defined in std::experimental::optional< T >)std::experimental::optional< T >
~optional()=default (defined in std::experimental::optional< T >)std::experimental::optional< T >
+
+ + + + diff --git a/classstd_1_1experimental_1_1optional.html b/classstd_1_1experimental_1_1optional.html new file mode 100644 index 0000000..b72a2d9 --- /dev/null +++ b/classstd_1_1experimental_1_1optional.html @@ -0,0 +1,227 @@ + + + + + + +JBus: std::experimental::optional< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::optional< T > Class Template Reference
+
+
+
+Inheritance diagram for std::experimental::optional< T >:
+
+
Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for std::experimental::optional< T >:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Public Types

+typedef T value_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr optional (nullopt_t) noexcept
 
optional (const optional &rhs)
 
optional (optional &&rhs) noexcept(is_nothrow_move_constructible< T >::value)
 
+constexpr optional (const T &v)
 
+constexpr optional (T &&v)
 
+template<class... Args>
constexpr optional (in_place_t, Args &&...args)
 
+template<class U , class... Args, TR2_OPTIONAL_REQUIRES(is_constructible< T, std::initializer_list< U >>) >
OPTIONAL_CONSTEXPR_INIT_LIST optional (in_place_t, std::initializer_list< U > il, Args &&...args)
 
+optionaloperator= (nullopt_t) noexcept
 
+optionaloperator= (const optional &rhs)
 
+optionaloperator= (optional &&rhs) noexcept(is_nothrow_move_assignable< T >::value &&is_nothrow_move_constructible< T >::value)
 
+template<class U >
auto operator= (U &&v) -> typename enable_if< is_same< typename decay< U >::type, T >::value, optional & >::type
 
+template<class... Args>
void emplace (Args &&...args)
 
+template<class U , class... Args>
void emplace (initializer_list< U > il, Args &&...args)
 
+void swap (optional< T > &rhs) noexcept(is_nothrow_move_constructible< T >::value &&noexcept(swap(declval< T & >(), declval< T & >())))
 
+constexpr operator bool () const noexcept
 
+constexpr T const * operator-> () const
 
+T * operator-> ()
 
+constexpr T const & operator* () const
 
+T & operator* ()
 
+constexpr T const & value () const
 
+T & value ()
 
+template<class V >
constexpr T value_or (V &&v) const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classstd_1_1experimental_1_1optional.js b/classstd_1_1experimental_1_1optional.js new file mode 100644 index 0000000..b1547a5 --- /dev/null +++ b/classstd_1_1experimental_1_1optional.js @@ -0,0 +1,28 @@ +var classstd_1_1experimental_1_1optional = +[ + [ "value_type", "classstd_1_1experimental_1_1optional.html#a3b480b4a74492ffdbcc9d8529ed512fc", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#a1584b48b65b92c4666c9899cd8b034e0", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#a4254acbb52e75c196ab02784ce4b1ce2", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#a08324fd562beb2f0a43b242596b47b2b", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#aef3982e3d2d30c05d3d80ede551fda76", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#acd004943841f3f762c73924471addd1b", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#a0eabb5769fc6c11a61bc004b314db7d1", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#a2ced55e1ac58a2e17e74f4fb16820a7d", null ], + [ "optional", "classstd_1_1experimental_1_1optional.html#a88ae319318277006322429fcf6d03c31", null ], + [ "~optional", "classstd_1_1experimental_1_1optional.html#a6a0db9c777d56ec7b35fa86811d0d971", null ], + [ "emplace", "classstd_1_1experimental_1_1optional.html#ad5c534fa356b56697d7d01f731a32467", null ], + [ "emplace", "classstd_1_1experimental_1_1optional.html#a9927a1c12f12cbc2caea910be6ea3cd5", null ], + [ "operator bool", "classstd_1_1experimental_1_1optional.html#a8bcb1dbd9288b316662c0c3b1fd9170f", null ], + [ "operator*", "classstd_1_1experimental_1_1optional.html#a6ff38dd90bcfdf0acac0717ea9f5796d", null ], + [ "operator*", "classstd_1_1experimental_1_1optional.html#aba547a62e0c8e3cc7d3fcf152e31d56e", null ], + [ "operator->", "classstd_1_1experimental_1_1optional.html#a459ac3a0c47d72c69218a70ed8fc2264", null ], + [ "operator->", "classstd_1_1experimental_1_1optional.html#ae600987ec09d6e04e894ddbe5f0a0b3f", null ], + [ "operator=", "classstd_1_1experimental_1_1optional.html#a18ebe94413663ea3b18d9e8d98fbc9af", null ], + [ "operator=", "classstd_1_1experimental_1_1optional.html#a79fc2baa94eb20e81898e351edbe984f", null ], + [ "operator=", "classstd_1_1experimental_1_1optional.html#a458e0eb811fd30159370230cb977ab7a", null ], + [ "operator=", "classstd_1_1experimental_1_1optional.html#a8d17cbbd6737f5a64415f7e61534076b", null ], + [ "swap", "classstd_1_1experimental_1_1optional.html#a42242463d92f5b331723593bf9fe495d", null ], + [ "value", "classstd_1_1experimental_1_1optional.html#a94cc196c43607d963e5b087324a810cb", null ], + [ "value", "classstd_1_1experimental_1_1optional.html#a2278733d39a8c6b6c032f080b5ca0644", null ], + [ "value_or", "classstd_1_1experimental_1_1optional.html#ad1746983c31e82f8d94623b50997cf59", null ] +]; \ No newline at end of file diff --git a/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4-members.html b/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4-members.html new file mode 100644 index 0000000..fcd831c --- /dev/null +++ b/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4-members.html @@ -0,0 +1,145 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::optional< T & > Member List
+
+
+ +

This is the complete list of members for std::experimental::optional< T & >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
emplace(T &v) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
emplace(T &&)=delete (defined in std::experimental::optional< T & >)std::experimental::optional< T & >
operator bool() const noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inlineexplicit
operator*() const (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
operator->() const (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
operator=(nullopt_t) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
operator=(U &&rhs) noexcept-> typename enable_if< is_same< typename decay< U >::type, optional< T & >>::value, optional & >::type (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
operator=(U &&rhs) noexcept-> typename enable_if< !is_same< typename decay< U >::type, optional< T & >>::value, optional & >::type=delete (defined in std::experimental::optional< T & >)std::experimental::optional< T & >
optional() noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
optional(nullopt_t) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
optional(T &v) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
optional(T &&)=delete (defined in std::experimental::optional< T & >)std::experimental::optional< T & >
optional(const optional &rhs) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
optional(in_place_t, T &v) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inlineexplicit
optional(in_place_t, T &&)=delete (defined in std::experimental::optional< T & >)std::experimental::optional< T & >explicit
swap(optional< T & > &rhs) noexcept (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
value() const (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
value_or(V &&v) const (defined in std::experimental::optional< T & >)std::experimental::optional< T & >inline
~optional()=default (defined in std::experimental::optional< T & >)std::experimental::optional< T & >
+
+ + + + diff --git a/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html b/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html new file mode 100644 index 0000000..29688b1 --- /dev/null +++ b/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html @@ -0,0 +1,188 @@ + + + + + + +JBus: std::experimental::optional< T & > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::optional< T & > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr optional (nullopt_t) noexcept
 
+constexpr optional (T &v) noexcept
 
optional (T &&)=delete
 
+constexpr optional (const optional &rhs) noexcept
 
+constexpr optional (in_place_t, T &v) noexcept
 
optional (in_place_t, T &&)=delete
 
+optionaloperator= (nullopt_t) noexcept
 
+template<typename U >
auto operator= (U &&rhs) noexcept-> typename enable_if< is_same< typename decay< U >::type, optional< T & >>::value, optional & >::type
 
+template<typename U >
auto operator= (U &&rhs) noexcept-> typename enable_if< !is_same< typename decay< U >::type, optional< T & >>::value, optional & >::type=delete
 
+void emplace (T &v) noexcept
 
+void emplace (T &&)=delete
 
+void swap (optional< T & > &rhs) noexcept
 
+constexpr T * operator-> () const
 
+constexpr T & operator* () const
 
+constexpr T & value () const
 
+constexpr operator bool () const noexcept
 
+template<class V >
constexpr decay< T >::type value_or (V &&v) const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.js b/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.js new file mode 100644 index 0000000..b337c0d --- /dev/null +++ b/classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.js @@ -0,0 +1,22 @@ +var classstd_1_1experimental_1_1optional_3_01T_01_6_01_4 = +[ + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#af1ca4fe03c90cf9cb58e65fde8fd103f", null ], + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a745fea438842ecd75aaf55b508a072ac", null ], + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a10614cd2647a523b5b8d6ec4fff1bbd5", null ], + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#ad7d66f5c33a6fb9ca9c0fdb25f61036e", null ], + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#ad9dc3e3c32f40151798d6ce2f0435b0d", null ], + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a5c5cac399d59bc9d499a369367110289", null ], + [ "optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#accb8a2372c834051b76329222d6e737f", null ], + [ "~optional", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a6da1c8d60a81dde58445da2b33430a05", null ], + [ "emplace", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a1ab7756f102adebf70ee017f51d74ea2", null ], + [ "emplace", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a57289ac8dbe40e7ad6bfacd42b5d9e64", null ], + [ "operator bool", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a3989f654f39525e176f18de2d5ad74b7", null ], + [ "operator*", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a7374eb90ec9e273446070069becfe2d7", null ], + [ "operator->", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#ab76048923b39c4ac8cb57f83a98687d3", null ], + [ "operator=", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#af8f513f05e0710ae389c77721e02c4b8", null ], + [ "operator=", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a98d42a27275500e8e23ca0b8a3677565", null ], + [ "operator=", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#ae05f2c0f382de57614e5d7043fce74a5", null ], + [ "swap", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#a6c8510965f9b9c004b4bf5b37241011b", null ], + [ "value", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#ae94ea175263807c5f52d80a3882deecc", null ], + [ "value_or", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html#ad12de00e8fc07d371664dd31c7dc21fc", null ] +]; \ No newline at end of file diff --git a/classstd_1_1experimental_1_1optional_3_01T_01_6_6_01_4.html b/classstd_1_1experimental_1_1optional_3_01T_01_6_6_01_4.html new file mode 100644 index 0000000..3006888 --- /dev/null +++ b/classstd_1_1experimental_1_1optional_3_01T_01_6_6_01_4.html @@ -0,0 +1,127 @@ + + + + + + +JBus: std::experimental::optional< T && > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::optional< T && > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classstd_1_1experimental_1_1optional__coll__graph.map b/classstd_1_1experimental_1_1optional__coll__graph.map new file mode 100644 index 0000000..48a3e54 --- /dev/null +++ b/classstd_1_1experimental_1_1optional__coll__graph.map @@ -0,0 +1,2 @@ + + diff --git a/classstd_1_1experimental_1_1optional__coll__graph.md5 b/classstd_1_1experimental_1_1optional__coll__graph.md5 new file mode 100644 index 0000000..c0a1b89 --- /dev/null +++ b/classstd_1_1experimental_1_1optional__coll__graph.md5 @@ -0,0 +1 @@ +3832b0031e9c2b72bdf1ee05771350ae \ No newline at end of file diff --git a/classstd_1_1experimental_1_1optional__coll__graph.png b/classstd_1_1experimental_1_1optional__coll__graph.png new file mode 100644 index 0000000..e610736 Binary files /dev/null and b/classstd_1_1experimental_1_1optional__coll__graph.png differ diff --git a/classstd_1_1experimental_1_1optional__inherit__graph.map b/classstd_1_1experimental_1_1optional__inherit__graph.map new file mode 100644 index 0000000..48a3e54 --- /dev/null +++ b/classstd_1_1experimental_1_1optional__inherit__graph.map @@ -0,0 +1,2 @@ + + diff --git a/classstd_1_1experimental_1_1optional__inherit__graph.md5 b/classstd_1_1experimental_1_1optional__inherit__graph.md5 new file mode 100644 index 0000000..c0a1b89 --- /dev/null +++ b/classstd_1_1experimental_1_1optional__inherit__graph.md5 @@ -0,0 +1 @@ +3832b0031e9c2b72bdf1ee05771350ae \ No newline at end of file diff --git a/classstd_1_1experimental_1_1optional__inherit__graph.png b/classstd_1_1experimental_1_1optional__inherit__graph.png new file mode 100644 index 0000000..e610736 Binary files /dev/null and b/classstd_1_1experimental_1_1optional__inherit__graph.png differ diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/dir_4525d057f72f34aebe3436e89afccf45.html b/dir_4525d057f72f34aebe3436e89afccf45.html new file mode 100644 index 0000000..368f3d2 --- /dev/null +++ b/dir_4525d057f72f34aebe3436e89afccf45.html @@ -0,0 +1,134 @@ + + + + + + +JBus: include/jbus Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
jbus Directory Reference
+
+
+ + + + + + + + + + +

+Files

file  Common.hpp [code]
 
file  Endpoint.hpp [code]
 
file  Listener.hpp [code]
 
file  Socket.hpp [code]
 
+
+
+ + + + diff --git a/dir_4525d057f72f34aebe3436e89afccf45.js b/dir_4525d057f72f34aebe3436e89afccf45.js new file mode 100644 index 0000000..9c1a357 --- /dev/null +++ b/dir_4525d057f72f34aebe3436e89afccf45.js @@ -0,0 +1,12 @@ +var dir_4525d057f72f34aebe3436e89afccf45 = +[ + [ "Common.hpp", "Common_8hpp.html", "Common_8hpp" ], + [ "Endpoint.hpp", "Endpoint_8hpp.html", [ + [ "Endpoint", "classjbus_1_1Endpoint.html", "classjbus_1_1Endpoint" ], + [ "ThreadLocalEndpoint", "classjbus_1_1ThreadLocalEndpoint.html", "classjbus_1_1ThreadLocalEndpoint" ] + ] ], + [ "Listener.hpp", "Listener_8hpp.html", [ + [ "Listener", "classjbus_1_1Listener.html", "classjbus_1_1Listener" ] + ] ], + [ "Socket.hpp", "Socket_8hpp.html", "Socket_8hpp" ] +]; \ No newline at end of file diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..45e3c43 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,128 @@ + + + + + + +JBus: include Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  jbus
 
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 0000000..b3c8412 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "jbus", "dir_4525d057f72f34aebe3436e89afccf45.html", "dir_4525d057f72f34aebe3436e89afccf45" ] +]; \ No newline at end of file diff --git a/doc.png b/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc.png differ diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..1425ec5 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1475 @@ +/* The standard CSS for doxygen 1.8.11 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doxygen.png b/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/doxygen.png differ diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +JBus: File List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 123]
+ + + + + + +
  include
  jbus
 Common.hpp
 Endpoint.hpp
 Listener.hpp
 Socket.hpp
+
+
+
+ + + + diff --git a/files.js b/files.js new file mode 100644 index 0000000..93d774e --- /dev/null +++ b/files.js @@ -0,0 +1,4 @@ +var files = +[ + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] +]; \ No newline at end of file diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/folderclosed.png differ diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/folderopen.png differ diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..7dabb5c --- /dev/null +++ b/functions.html @@ -0,0 +1,286 @@ + + + + + + +JBus: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+ + +

- c -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- ~ -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 0000000..62f0cd2 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,132 @@ + + + + + + +JBus: Class Members - Enumerations + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..2525b02 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,279 @@ + + + + + + +JBus: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- ~ -

+
+
+ + + + diff --git a/functions_rela.html b/functions_rela.html new file mode 100644 index 0000000..5022d40 --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,135 @@ + + + + + + +JBus: Class Members - Related Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 0000000..8acd47e --- /dev/null +++ b/globals.html @@ -0,0 +1,132 @@ + + + + + + +JBus: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+
+ + + + diff --git a/globals_defs.html b/globals_defs.html new file mode 100644 index 0000000..296e459 --- /dev/null +++ b/globals_defs.html @@ -0,0 +1,132 @@ + + + + + + +JBus: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 0000000..cce082c --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,145 @@ + + + + + + +JBus: Graph Legend + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

1 /*! Invisible class because of truncation */
2 class Invisible { };
3 
4 /*! Truncated class, inheritance relation is hidden */
5 class Truncated : public Invisible { };
6 
7 /* Class not documented with doxygen comments */
8 class Undocumented { };
9 
10 /*! Class that is inherited using public inheritance */
11 class PublicBase : public Truncated { };
12 
13 /*! A template class */
14 template<class T> class Templ { };
15 
16 /*! Class that is inherited using protected inheritance */
17 class ProtectedBase { };
18 
19 /*! Class that is inherited using private inheritance */
20 class PrivateBase { };
21 
22 /*! Class that is used by the Inherited class */
23 class Used { };
24 
25 /*! Super class that inherits a number of other classes */
26 class Inherited : public PublicBase,
27  protected ProtectedBase,
28  private PrivateBase,
29  public Undocumented,
30  public Templ<int>
31 {
32  private:
33  Used *m_usedClass;
34 };

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/graph_legend.png b/graph_legend.png new file mode 100644 index 0000000..881e40f Binary files /dev/null and b/graph_legend.png differ diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..c81fdaf --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,157 @@ + + + + + + +JBus: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 0000000..d1bd2d0 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,33 @@ +var hierarchy = +[ + [ "std::experimental::constexpr_optional_base< T >", "structstd_1_1experimental_1_1constexpr__optional__base.html", null ], + [ "std::experimental::constexpr_storage_t< T >", "unionstd_1_1experimental_1_1constexpr__storage__t.html", null ], + [ "jbus::Endpoint", "classjbus_1_1Endpoint.html", null ], + [ "std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, has_any_move_assign >", "structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign.html", null ], + [ "std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, true >", "structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4.html", null ], + [ "std::experimental::detail_::has_overloaded_addressof< T >", "structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof.html", null ], + [ "std::hash< std::experimental::optional< T & > >", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html", null ], + [ "std::hash< std::experimental::optional< T > >", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html", null ], + [ "std::experimental::in_place_t", "structstd_1_1experimental_1_1in__place__t.html", null ], + [ "std::experimental::nullopt_t::init", "structstd_1_1experimental_1_1nullopt__t_1_1init.html", null ], + [ "jbus::net::IPAddress", "classjbus_1_1net_1_1IPAddress.html", null ], + [ "std::experimental::is_assignable< T, U >", "structstd_1_1experimental_1_1is__assignable.html", null ], + [ "std::experimental::is_nothrow_move_assignable< T >", "structstd_1_1experimental_1_1is__nothrow__move__assignable.html", null ], + [ "std::experimental::is_nothrow_move_constructible< T >", "structstd_1_1experimental_1_1is__nothrow__move__constructible.html", null ], + [ "jbus::Listener", "classjbus_1_1Listener.html", null ], + [ "logic_error", null, [ + [ "std::experimental::bad_optional_access", "classstd_1_1experimental_1_1bad__optional__access.html", null ] + ] ], + [ "std::experimental::nullopt_t", "structstd_1_1experimental_1_1nullopt__t.html", null ], + [ "std::experimental::optional< T & >", "classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html", null ], + [ "std::experimental::optional< T && >", "classstd_1_1experimental_1_1optional_3_01T_01_6_6_01_4.html", null ], + [ "std::experimental::optional_base< T >", "structstd_1_1experimental_1_1optional__base.html", null ], + [ "OptionalBase", null, [ + [ "std::experimental::optional< KawasedoChallenge >", "classstd_1_1experimental_1_1optional.html", null ], + [ "std::experimental::optional< T >", "classstd_1_1experimental_1_1optional.html", null ] + ] ], + [ "jbus::net::Socket", "classjbus_1_1net_1_1Socket.html", null ], + [ "std::experimental::storage_t< T >", "unionstd_1_1experimental_1_1storage__t.html", null ], + [ "jbus::ThreadLocalEndpoint", "classjbus_1_1ThreadLocalEndpoint.html", null ], + [ "std::experimental::trivial_init_t", "structstd_1_1experimental_1_1trivial__init__t.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..3882166 --- /dev/null +++ b/index.html @@ -0,0 +1,118 @@ + + + + + + +JBus: JBus Documentation + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
JBus Documentation
+
+
+

JBus functions as a server for acceping connections from GBA emulator clients. The jbus::Listener class may be constructed and started to enque incoming jbus::Endpoint instances.

+

Once an Endpoint has been accepted, it's ready to use. Refer to the jbus::Endpoint class for the main interface.

+
+
+ + + + diff --git a/inherit_graph_0.map b/inherit_graph_0.map new file mode 100644 index 0000000..28a78dd --- /dev/null +++ b/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 new file mode 100644 index 0000000..d801243 --- /dev/null +++ b/inherit_graph_0.md5 @@ -0,0 +1 @@ +c67f3e07d79d9fb6c1ed15000cf3b1f4 \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png new file mode 100644 index 0000000..7a7ad03 Binary files /dev/null and b/inherit_graph_0.png differ diff --git a/inherit_graph_1.map b/inherit_graph_1.map new file mode 100644 index 0000000..2171ccf --- /dev/null +++ b/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 new file mode 100644 index 0000000..aba8210 --- /dev/null +++ b/inherit_graph_1.md5 @@ -0,0 +1 @@ +d7f318601ea1106cb2579801971e0c96 \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png new file mode 100644 index 0000000..a6a2dc0 Binary files /dev/null and b/inherit_graph_1.png differ diff --git a/inherit_graph_10.map b/inherit_graph_10.map new file mode 100644 index 0000000..2e6a252 --- /dev/null +++ b/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 new file mode 100644 index 0000000..80ec878 --- /dev/null +++ b/inherit_graph_10.md5 @@ -0,0 +1 @@ +401842534f2584bba9dcddbc49ee036f \ No newline at end of file diff --git a/inherit_graph_10.png b/inherit_graph_10.png new file mode 100644 index 0000000..3982eea Binary files /dev/null and b/inherit_graph_10.png differ diff --git a/inherit_graph_11.map b/inherit_graph_11.map new file mode 100644 index 0000000..d092d6f --- /dev/null +++ b/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 new file mode 100644 index 0000000..af74ab8 --- /dev/null +++ b/inherit_graph_11.md5 @@ -0,0 +1 @@ +25905d86933fbec4803eca5e1a5c4b48 \ No newline at end of file diff --git a/inherit_graph_11.png b/inherit_graph_11.png new file mode 100644 index 0000000..39ad345 Binary files /dev/null and b/inherit_graph_11.png differ diff --git a/inherit_graph_12.map b/inherit_graph_12.map new file mode 100644 index 0000000..8152975 --- /dev/null +++ b/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 new file mode 100644 index 0000000..75716dd --- /dev/null +++ b/inherit_graph_12.md5 @@ -0,0 +1 @@ +2c09e959aa52443191dd133c97108f65 \ No newline at end of file diff --git a/inherit_graph_12.png b/inherit_graph_12.png new file mode 100644 index 0000000..d79dab6 Binary files /dev/null and b/inherit_graph_12.png differ diff --git a/inherit_graph_13.map b/inherit_graph_13.map new file mode 100644 index 0000000..2a35091 --- /dev/null +++ b/inherit_graph_13.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 new file mode 100644 index 0000000..6a91f68 --- /dev/null +++ b/inherit_graph_13.md5 @@ -0,0 +1 @@ +3f53fe05c801500e800d990cbddcc80b \ No newline at end of file diff --git a/inherit_graph_13.png b/inherit_graph_13.png new file mode 100644 index 0000000..d48820f Binary files /dev/null and b/inherit_graph_13.png differ diff --git a/inherit_graph_14.map b/inherit_graph_14.map new file mode 100644 index 0000000..13e9333 --- /dev/null +++ b/inherit_graph_14.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5 new file mode 100644 index 0000000..61b3aca --- /dev/null +++ b/inherit_graph_14.md5 @@ -0,0 +1 @@ +de6504d8a8f0fa4f91f99512eaa925c4 \ No newline at end of file diff --git a/inherit_graph_14.png b/inherit_graph_14.png new file mode 100644 index 0000000..46cee67 Binary files /dev/null and b/inherit_graph_14.png differ diff --git a/inherit_graph_15.map b/inherit_graph_15.map new file mode 100644 index 0000000..7daeb05 --- /dev/null +++ b/inherit_graph_15.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_15.md5 b/inherit_graph_15.md5 new file mode 100644 index 0000000..64ad779 --- /dev/null +++ b/inherit_graph_15.md5 @@ -0,0 +1 @@ +c4b6d41aac234123e5b8b5aab85c0dd1 \ No newline at end of file diff --git a/inherit_graph_15.png b/inherit_graph_15.png new file mode 100644 index 0000000..7fe2d3f Binary files /dev/null and b/inherit_graph_15.png differ diff --git a/inherit_graph_16.map b/inherit_graph_16.map new file mode 100644 index 0000000..857d791 --- /dev/null +++ b/inherit_graph_16.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_16.md5 b/inherit_graph_16.md5 new file mode 100644 index 0000000..df44bd6 --- /dev/null +++ b/inherit_graph_16.md5 @@ -0,0 +1 @@ +e7b118c7eab20b5968f699967b6ef1d8 \ No newline at end of file diff --git a/inherit_graph_16.png b/inherit_graph_16.png new file mode 100644 index 0000000..3ecf065 Binary files /dev/null and b/inherit_graph_16.png differ diff --git a/inherit_graph_17.map b/inherit_graph_17.map new file mode 100644 index 0000000..ba8b975 --- /dev/null +++ b/inherit_graph_17.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_17.md5 b/inherit_graph_17.md5 new file mode 100644 index 0000000..21a875b --- /dev/null +++ b/inherit_graph_17.md5 @@ -0,0 +1 @@ +c967a9f01bc0a541d4b8c91d4b1cba5b \ No newline at end of file diff --git a/inherit_graph_17.png b/inherit_graph_17.png new file mode 100644 index 0000000..afdf7a6 Binary files /dev/null and b/inherit_graph_17.png differ diff --git a/inherit_graph_18.map b/inherit_graph_18.map new file mode 100644 index 0000000..df74527 --- /dev/null +++ b/inherit_graph_18.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_18.md5 b/inherit_graph_18.md5 new file mode 100644 index 0000000..0a18f84 --- /dev/null +++ b/inherit_graph_18.md5 @@ -0,0 +1 @@ +0ffaa70b055e66cfe0a76266769a7632 \ No newline at end of file diff --git a/inherit_graph_18.png b/inherit_graph_18.png new file mode 100644 index 0000000..cfcb897 Binary files /dev/null and b/inherit_graph_18.png differ diff --git a/inherit_graph_19.map b/inherit_graph_19.map new file mode 100644 index 0000000..e38381a --- /dev/null +++ b/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_19.md5 b/inherit_graph_19.md5 new file mode 100644 index 0000000..44c921a --- /dev/null +++ b/inherit_graph_19.md5 @@ -0,0 +1 @@ +d8890f220d232708028f84c35e423c48 \ No newline at end of file diff --git a/inherit_graph_19.png b/inherit_graph_19.png new file mode 100644 index 0000000..6c13e42 Binary files /dev/null and b/inherit_graph_19.png differ diff --git a/inherit_graph_2.map b/inherit_graph_2.map new file mode 100644 index 0000000..58ad488 --- /dev/null +++ b/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 new file mode 100644 index 0000000..526012e --- /dev/null +++ b/inherit_graph_2.md5 @@ -0,0 +1 @@ +ca867b79cd21ef024a6161c176c58e8c \ No newline at end of file diff --git a/inherit_graph_2.png b/inherit_graph_2.png new file mode 100644 index 0000000..f718171 Binary files /dev/null and b/inherit_graph_2.png differ diff --git a/inherit_graph_20.map b/inherit_graph_20.map new file mode 100644 index 0000000..e136367 --- /dev/null +++ b/inherit_graph_20.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_20.md5 b/inherit_graph_20.md5 new file mode 100644 index 0000000..8fc9734 --- /dev/null +++ b/inherit_graph_20.md5 @@ -0,0 +1 @@ +c52233d6ab82333afe0c20eda487c3cd \ No newline at end of file diff --git a/inherit_graph_20.png b/inherit_graph_20.png new file mode 100644 index 0000000..cdb3e80 Binary files /dev/null and b/inherit_graph_20.png differ diff --git a/inherit_graph_21.map b/inherit_graph_21.map new file mode 100644 index 0000000..de182cc --- /dev/null +++ b/inherit_graph_21.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_21.md5 b/inherit_graph_21.md5 new file mode 100644 index 0000000..f42a6ab --- /dev/null +++ b/inherit_graph_21.md5 @@ -0,0 +1 @@ +e9ddd980e6c6856562ce6589a9330e4c \ No newline at end of file diff --git a/inherit_graph_21.png b/inherit_graph_21.png new file mode 100644 index 0000000..7d40c32 Binary files /dev/null and b/inherit_graph_21.png differ diff --git a/inherit_graph_22.map b/inherit_graph_22.map new file mode 100644 index 0000000..8a35e81 --- /dev/null +++ b/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_22.md5 b/inherit_graph_22.md5 new file mode 100644 index 0000000..bac72e0 --- /dev/null +++ b/inherit_graph_22.md5 @@ -0,0 +1 @@ +f9cf6df6505171f96a66be9a6aeb15e7 \ No newline at end of file diff --git a/inherit_graph_22.png b/inherit_graph_22.png new file mode 100644 index 0000000..1cce7a6 Binary files /dev/null and b/inherit_graph_22.png differ diff --git a/inherit_graph_23.map b/inherit_graph_23.map new file mode 100644 index 0000000..29278c1 --- /dev/null +++ b/inherit_graph_23.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_23.md5 b/inherit_graph_23.md5 new file mode 100644 index 0000000..df28eda --- /dev/null +++ b/inherit_graph_23.md5 @@ -0,0 +1 @@ +889a9474854f73d7d2478a52c1031ba9 \ No newline at end of file diff --git a/inherit_graph_23.png b/inherit_graph_23.png new file mode 100644 index 0000000..b75c18f Binary files /dev/null and b/inherit_graph_23.png differ diff --git a/inherit_graph_24.map b/inherit_graph_24.map new file mode 100644 index 0000000..e04afb2 --- /dev/null +++ b/inherit_graph_24.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_24.md5 b/inherit_graph_24.md5 new file mode 100644 index 0000000..8fe8426 --- /dev/null +++ b/inherit_graph_24.md5 @@ -0,0 +1 @@ +f417324fe63f9e56f0d019d28e9777d6 \ No newline at end of file diff --git a/inherit_graph_24.png b/inherit_graph_24.png new file mode 100644 index 0000000..95df03d Binary files /dev/null and b/inherit_graph_24.png differ diff --git a/inherit_graph_3.map b/inherit_graph_3.map new file mode 100644 index 0000000..067afac --- /dev/null +++ b/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 new file mode 100644 index 0000000..45e707f --- /dev/null +++ b/inherit_graph_3.md5 @@ -0,0 +1 @@ +40973a8df0a7127751b4109b30713573 \ No newline at end of file diff --git a/inherit_graph_3.png b/inherit_graph_3.png new file mode 100644 index 0000000..050c787 Binary files /dev/null and b/inherit_graph_3.png differ diff --git a/inherit_graph_4.map b/inherit_graph_4.map new file mode 100644 index 0000000..257a8c1 --- /dev/null +++ b/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5 new file mode 100644 index 0000000..cfce085 --- /dev/null +++ b/inherit_graph_4.md5 @@ -0,0 +1 @@ +16c30bd054f61360710296c39019f4fe \ No newline at end of file diff --git a/inherit_graph_4.png b/inherit_graph_4.png new file mode 100644 index 0000000..22f623d Binary files /dev/null and b/inherit_graph_4.png differ diff --git a/inherit_graph_5.map b/inherit_graph_5.map new file mode 100644 index 0000000..6aafc05 --- /dev/null +++ b/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5 new file mode 100644 index 0000000..3e889be --- /dev/null +++ b/inherit_graph_5.md5 @@ -0,0 +1 @@ +3beb1c99167642cb93889125b420be22 \ No newline at end of file diff --git a/inherit_graph_5.png b/inherit_graph_5.png new file mode 100644 index 0000000..9a7937f Binary files /dev/null and b/inherit_graph_5.png differ diff --git a/inherit_graph_6.map b/inherit_graph_6.map new file mode 100644 index 0000000..180a956 --- /dev/null +++ b/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5 new file mode 100644 index 0000000..2cabf30 --- /dev/null +++ b/inherit_graph_6.md5 @@ -0,0 +1 @@ +49ef87fdfb28e3be4f3b61a0af975d34 \ No newline at end of file diff --git a/inherit_graph_6.png b/inherit_graph_6.png new file mode 100644 index 0000000..2b7c1c6 Binary files /dev/null and b/inherit_graph_6.png differ diff --git a/inherit_graph_7.map b/inherit_graph_7.map new file mode 100644 index 0000000..8451dc1 --- /dev/null +++ b/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5 new file mode 100644 index 0000000..a113d8f --- /dev/null +++ b/inherit_graph_7.md5 @@ -0,0 +1 @@ +8c4acdeeca6fb59174405cd3a431ef59 \ No newline at end of file diff --git a/inherit_graph_7.png b/inherit_graph_7.png new file mode 100644 index 0000000..05757e8 Binary files /dev/null and b/inherit_graph_7.png differ diff --git a/inherit_graph_8.map b/inherit_graph_8.map new file mode 100644 index 0000000..e34ae63 --- /dev/null +++ b/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5 new file mode 100644 index 0000000..f7d1367 --- /dev/null +++ b/inherit_graph_8.md5 @@ -0,0 +1 @@ +f27b0a1106f899a7f4f50ffcfdc1837c \ No newline at end of file diff --git a/inherit_graph_8.png b/inherit_graph_8.png new file mode 100644 index 0000000..57f2fa1 Binary files /dev/null and b/inherit_graph_8.png differ diff --git a/inherit_graph_9.map b/inherit_graph_9.map new file mode 100644 index 0000000..240dc3f --- /dev/null +++ b/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5 new file mode 100644 index 0000000..444ae53 --- /dev/null +++ b/inherit_graph_9.md5 @@ -0,0 +1 @@ +a8020598f31af81b6cd89cf95bb2ef08 \ No newline at end of file diff --git a/inherit_graph_9.png b/inherit_graph_9.png new file mode 100644 index 0000000..f557ebb Binary files /dev/null and b/inherit_graph_9.png differ diff --git a/inherits.html b/inherits.html new file mode 100644 index 0000000..7a44f8f --- /dev/null +++ b/inherits.html @@ -0,0 +1,253 @@ + + + + + + +JBus: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..1f4d0b4 --- /dev/null +++ b/jquery.js @@ -0,0 +1,68 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
DocMain
+
+
+

{#mainpage}

+

Refer to the jbus::Endpoint class for the main interface.

+
+ + + + + diff --git a/namespacejbus.html b/namespacejbus.html new file mode 100644 index 0000000..8e9cb58 --- /dev/null +++ b/namespacejbus.html @@ -0,0 +1,434 @@ + + + + + + +JBus: jbus Namespace Reference + + + + + + + + + + + + + + + +
+
+
+ + + + + +
+
JBus +
+
JoyBus communication server
+
+ + + + + + + +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus Namespace Reference
+
+
+ + + + +

+Namespaces

 net
 
+ + + + + + + +

+Classes

class  Endpoint
 
class  Listener
 
class  ThreadLocalEndpoint
 
+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

using s8 = int8_t
 
using u8 = uint8_t
 
using s16 = int16_t
 
using u16 = uint16_t
 
using s32 = int32_t
 
using u32 = uint32_t
 
using s64 = int64_t
 
using u64 = uint64_t
 
using FGBACallback = std::function< void(ThreadLocalEndpoint &endpoint, EJoyReturn status)>
 Standard callback for asynchronous jbus::Endpoint APIs. More...
 
+ + + + + +

+Enumerations

enum  EJStatFlags {
+  GBA_JSTAT_MASK = 0x3a, +GBA_JSTAT_FLAGS_SHIFT = 4, +GBA_JSTAT_FLAGS_MASK = 0x30, +GBA_JSTAT_PSF1 = 0x20, +
+  GBA_JSTAT_PSF0 = 0x10, +GBA_JSTAT_SEND = 0x08, +GBA_JSTAT_RECV = 0x02 +
+ }
 
enum  EJoyReturn {
+  GBA_READY = 0, +GBA_NOT_READY = 1, +GBA_BUSY = 2, +GBA_JOYBOOT_UNKNOWN_STATE = 3, +
+  GBA_JOYBOOT_ERR_INVALID = 4 +
+ }
 
+ + + + + + + + + + +

+Functions

u64 GetGCTicks ()
 Get host system's timebase scaled into Dolphin ticks. More...
 
void WaitGCTicks (u64 ticks)
 Wait an approximate Dolphin tick duration (avoid using, it's rather inaccurate). More...
 
void Initialize ()
 Initialize platform specifics of JBus library. More...
 
+

Typedef Documentation

+ +
+
+ + + + +
using jbus::FGBACallback = typedef std::function<void(ThreadLocalEndpoint& endpoint, EJoyReturn status)>
+
+ +

Standard callback for asynchronous jbus::Endpoint APIs.

+
Parameters
+ + + +
endpointThread-local Endpoint interface for optionally issuing next command in sequence.
statusGBA_READY if connection is still open, GBA_NOT_READY if connection lost.
+
+
+ +
+
+ +
+
+ + + + +
using jbus::s16 = typedef int16_t
+
+ +
+
+ +
+
+ + + + +
using jbus::s32 = typedef int32_t
+
+ +
+
+ +
+
+ + + + +
using jbus::s64 = typedef int64_t
+
+ +
+
+ +
+
+ + + + +
using jbus::s8 = typedef int8_t
+
+ +
+
+ +
+
+ + + + +
using jbus::u16 = typedef uint16_t
+
+ +
+
+ +
+
+ + + + +
using jbus::u32 = typedef uint32_t
+
+ +
+
+ +
+
+ + + + +
using jbus::u64 = typedef uint64_t
+
+ +
+
+ +
+
+ + + + +
using jbus::u8 = typedef uint8_t
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum jbus::EJoyReturn
+
+ + + + + + +
Enumerator
GBA_READY  +
GBA_NOT_READY  +
GBA_BUSY  +
GBA_JOYBOOT_UNKNOWN_STATE  +
GBA_JOYBOOT_ERR_INVALID  +
+ +
+
+ +
+
+ + + + +
enum jbus::EJStatFlags
+
+ + + + + + + + +
Enumerator
GBA_JSTAT_MASK  +
GBA_JSTAT_FLAGS_SHIFT  +
GBA_JSTAT_FLAGS_MASK  +
GBA_JSTAT_PSF1  +
GBA_JSTAT_PSF0  +
GBA_JSTAT_SEND  +
GBA_JSTAT_RECV  +
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
u64 jbus::GetGCTicks ()
+
+ +

Get host system's timebase scaled into Dolphin ticks.

+
Returns
Scaled ticks from host timebase.
+ +
+
+ +
+
+ + + + + + + +
void jbus::Initialize ()
+
+ +

Initialize platform specifics of JBus library.

+ +
+
+ +
+
+ + + + + + + + +
void jbus::WaitGCTicks (u64 ticks)
+
+ +

Wait an approximate Dolphin tick duration (avoid using, it's rather inaccurate).

+
Parameters
+ + +
ticksCPU ticks to wait.
+
+
+ +
+
+
+
+ + + + diff --git a/namespacejbus.js b/namespacejbus.js new file mode 100644 index 0000000..84ec020 --- /dev/null +++ b/namespacejbus.js @@ -0,0 +1,7 @@ +var namespacejbus = +[ + [ "net", "namespacejbus_1_1net.html", "namespacejbus_1_1net" ], + [ "Endpoint", "classjbus_1_1Endpoint.html", "classjbus_1_1Endpoint" ], + [ "Listener", "classjbus_1_1Listener.html", "classjbus_1_1Listener" ], + [ "ThreadLocalEndpoint", "classjbus_1_1ThreadLocalEndpoint.html", "classjbus_1_1ThreadLocalEndpoint" ] +]; \ No newline at end of file diff --git a/namespacejbus_1_1net.html b/namespacejbus_1_1net.html new file mode 100644 index 0000000..274b68e --- /dev/null +++ b/namespacejbus_1_1net.html @@ -0,0 +1,133 @@ + + + + + + +JBus: jbus::net Namespace Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
jbus::net Namespace Reference
+
+
+ + + + + + +

+Classes

class  IPAddress
 
class  Socket
 
+
+
+ + + + diff --git a/namespacejbus_1_1net.js b/namespacejbus_1_1net.js new file mode 100644 index 0000000..62c68a4 --- /dev/null +++ b/namespacejbus_1_1net.js @@ -0,0 +1,5 @@ +var namespacejbus_1_1net = +[ + [ "IPAddress", "classjbus_1_1net_1_1IPAddress.html", "classjbus_1_1net_1_1IPAddress" ], + [ "Socket", "classjbus_1_1net_1_1Socket.html", "classjbus_1_1net_1_1Socket" ] +]; \ No newline at end of file diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 0000000..b6e4f3d --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,207 @@ + + + + + + +JBus: Namespace Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all namespace members with links to the namespace documentation for each member:
    +
  • EJoyReturn +: jbus +
  • +
  • EJStatFlags +: jbus +
  • +
  • FGBACallback +: jbus +
  • +
  • GBA_BUSY +: jbus +
  • +
  • GBA_JOYBOOT_ERR_INVALID +: jbus +
  • +
  • GBA_JOYBOOT_UNKNOWN_STATE +: jbus +
  • +
  • GBA_JSTAT_FLAGS_MASK +: jbus +
  • +
  • GBA_JSTAT_FLAGS_SHIFT +: jbus +
  • +
  • GBA_JSTAT_MASK +: jbus +
  • +
  • GBA_JSTAT_PSF0 +: jbus +
  • +
  • GBA_JSTAT_PSF1 +: jbus +
  • +
  • GBA_JSTAT_RECV +: jbus +
  • +
  • GBA_JSTAT_SEND +: jbus +
  • +
  • GBA_NOT_READY +: jbus +
  • +
  • GBA_READY +: jbus +
  • +
  • GetGCTicks() +: jbus +
  • +
  • Initialize() +: jbus +
  • +
  • s16 +: jbus +
  • +
  • s32 +: jbus +
  • +
  • s64 +: jbus +
  • +
  • s8 +: jbus +
  • +
  • u16 +: jbus +
  • +
  • u32 +: jbus +
  • +
  • u64 +: jbus +
  • +
  • u8 +: jbus +
  • +
  • WaitGCTicks() +: jbus +
  • +
+
+
+ + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 0000000..e7076e4 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,135 @@ + + + + + + +JBus: Namespace Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
    +
  • EJoyReturn +: jbus +
  • +
  • EJStatFlags +: jbus +
  • +
+
+
+ + + + diff --git a/namespacemembers_eval.html b/namespacemembers_eval.html new file mode 100644 index 0000000..e500f69 --- /dev/null +++ b/namespacemembers_eval.html @@ -0,0 +1,165 @@ + + + + + + +JBus: Namespace Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
    +
  • GBA_BUSY +: jbus +
  • +
  • GBA_JOYBOOT_ERR_INVALID +: jbus +
  • +
  • GBA_JOYBOOT_UNKNOWN_STATE +: jbus +
  • +
  • GBA_JSTAT_FLAGS_MASK +: jbus +
  • +
  • GBA_JSTAT_FLAGS_SHIFT +: jbus +
  • +
  • GBA_JSTAT_MASK +: jbus +
  • +
  • GBA_JSTAT_PSF0 +: jbus +
  • +
  • GBA_JSTAT_PSF1 +: jbus +
  • +
  • GBA_JSTAT_RECV +: jbus +
  • +
  • GBA_JSTAT_SEND +: jbus +
  • +
  • GBA_NOT_READY +: jbus +
  • +
  • GBA_READY +: jbus +
  • +
+
+
+ + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 0000000..ff45718 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,138 @@ + + + + + + +JBus: Namespace Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
    +
  • GetGCTicks() +: jbus +
  • +
  • Initialize() +: jbus +
  • +
  • WaitGCTicks() +: jbus +
  • +
+
+
+ + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 0000000..621c35d --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,156 @@ + + + + + + +JBus: Namespace Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 0000000..d123617 --- /dev/null +++ b/namespaces.html @@ -0,0 +1,128 @@ + + + + + + +JBus: Namespace List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Namespace List
+
+
+
Here is a list of all namespaces with brief descriptions:
+
[detail level 12]
+ + +
 Njbus
 Nnet
+
+
+
+ + + + diff --git a/namespaces.js b/namespaces.js new file mode 100644 index 0000000..cc5f2b5 --- /dev/null +++ b/namespaces.js @@ -0,0 +1,4 @@ +var namespaces = +[ + [ "jbus", "namespacejbus.html", "namespacejbus" ] +]; \ No newline at end of file diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..1a868b3 --- /dev/null +++ b/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 0000000..9df45a7 --- /dev/null +++ b/navtree.js @@ -0,0 +1,523 @@ +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("img"); + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.width = 16; + imgNode.height = 22; + imgNode.border = 0; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.src = node.relpath+"arrowright.png"; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + imgNode.src = node.relpath+"arrowright.png"; + } else { + var span = document.createElement("span"); + span.style.display = 'inline-block'; + span.style.width = 16*(level+1)+'px'; + span.style.height = '22px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"arrowdown.png"; + } else { + node.plus_img.src = node.relpath+"arrowdown.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.src = node.relpath+"arrowdown.png"; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"arrowright.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + +JBus: include/jbus/optional.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
optional.hpp
+
+
+
1 // Copyright (C) 2011 - 2012 Andrzej Krzemienski.
2 //
3 // Use, modification, and distribution is subject to the Boost Software
4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // The idea and interface is based on Boost.Optional library
8 // authored by Fernando Luis Cacciola Carballal
9 
10 # ifndef ___OPTIONAL_HPP___
11 # define ___OPTIONAL_HPP___
12 
13 # include <utility>
14 # include <type_traits>
15 # include <initializer_list>
16 # include <cassert>
17 # include <functional>
18 # include <string>
19 # include "athena/Global.hpp"
20 
21 # define TR2_OPTIONAL_REQUIRES(...) typename enable_if<__VA_ARGS__::value, bool>::type = false
22 
23 # if defined __GNUC__ // NOTE: GNUC is also defined for Clang
24 # if (__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)
25 # define TR2_OPTIONAL_GCC_4_8_AND_HIGHER___
26 # elif (__GNUC__ > 4)
27 # define TR2_OPTIONAL_GCC_4_8_AND_HIGHER___
28 # endif
29 #
30 # if (__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)
31 # define TR2_OPTIONAL_GCC_4_7_AND_HIGHER___
32 # elif (__GNUC__ > 4)
33 # define TR2_OPTIONAL_GCC_4_7_AND_HIGHER___
34 # endif
35 #
36 # if (__GNUC__ == 4) && (__GNUC_MINOR__ == 8) && (__GNUC_PATCHLEVEL__ >= 1)
37 # define TR2_OPTIONAL_GCC_4_8_1_AND_HIGHER___
38 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)
39 # define TR2_OPTIONAL_GCC_4_8_1_AND_HIGHER___
40 # elif (__GNUC__ > 4)
41 # define TR2_OPTIONAL_GCC_4_8_1_AND_HIGHER___
42 # endif
43 # endif
44 #
45 # if defined __clang_major__
46 # if (__clang_major__ == 3 && __clang_minor__ >= 5)
47 # define TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_
48 # elif (__clang_major__ > 3)
49 # define TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_
50 # endif
51 # if defined TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_
52 # define TR2_OPTIONAL_CLANG_3_4_2_AND_HIGHER_
53 # elif (__clang_major__ == 3 && __clang_minor__ == 4 && __clang_patchlevel__ >= 2)
54 # define TR2_OPTIONAL_CLANG_3_4_2_AND_HIGHER_
55 # endif
56 # endif
57 #
58 # if defined _MSC_VER
59 # if (_MSC_VER >= 1900)
60 # define TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
61 # endif
62 # endif
63 
64 # if defined __clang__
65 # if (__clang_major__ > 2) || (__clang_major__ == 2) && (__clang_minor__ >= 9)
66 # define OPTIONAL_HAS_THIS_RVALUE_REFS 1
67 # else
68 # define OPTIONAL_HAS_THIS_RVALUE_REFS 0
69 # endif
70 # elif defined TR2_OPTIONAL_GCC_4_8_1_AND_HIGHER___
71 # define OPTIONAL_HAS_THIS_RVALUE_REFS 1
72 # elif defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
73 # define OPTIONAL_HAS_THIS_RVALUE_REFS 1
74 # else
75 # define OPTIONAL_HAS_THIS_RVALUE_REFS 0
76 # endif
77 
78 
79 # if defined TR2_OPTIONAL_GCC_4_8_1_AND_HIGHER___
80 # define OPTIONAL_HAS_CONSTEXPR_INIT_LIST 1
81 # define OPTIONAL_CONSTEXPR_INIT_LIST constexpr
82 # else
83 # define OPTIONAL_HAS_CONSTEXPR_INIT_LIST 0
84 # define OPTIONAL_CONSTEXPR_INIT_LIST
85 # endif
86 
87 # if defined TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_ && (defined __cplusplus) && (__cplusplus != 201103L)
88 # define OPTIONAL_HAS_MOVE_ACCESSORS 1
89 # else
90 # define OPTIONAL_HAS_MOVE_ACCESSORS 0
91 # endif
92 
93 # // In C++11 constexpr implies const, so we need to make non-const members also non-constexpr
94 # if (defined __cplusplus) && (__cplusplus == 201103L)
95 # define OPTIONAL_MUTABLE_CONSTEXPR
96 # else
97 # define OPTIONAL_MUTABLE_CONSTEXPR constexpr
98 # endif
99 
100 namespace std{
101 
102 namespace experimental{
103 
104 // BEGIN workaround for missing is_trivially_destructible
105 # if defined TR2_OPTIONAL_GCC_4_8_AND_HIGHER___
106  // leave it: it is already there
107 # elif defined TR2_OPTIONAL_CLANG_3_4_2_AND_HIGHER_
108  // leave it: it is already there
109 # elif defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
110  // leave it: it is already there
111 # elif defined TR2_OPTIONAL_DISABLE_EMULATION_OF_TYPE_TRAITS
112  // leave it: the user doesn't want it
113 # else
114  template <typename T>
115  using is_trivially_destructible = std::has_trivial_destructor<T>;
116 # endif
117 // END workaround for missing is_trivially_destructible
118 
119 # if (defined TR2_OPTIONAL_GCC_4_7_AND_HIGHER___)
120  // leave it; our metafunctions are already defined.
121 # elif defined TR2_OPTIONAL_CLANG_3_4_2_AND_HIGHER_
122  // leave it; our metafunctions are already defined.
123 # elif defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
124  // leave it: it is already there
125 # elif defined TR2_OPTIONAL_DISABLE_EMULATION_OF_TYPE_TRAITS
126  // leave it: the user doesn't want it
127 # else
128 
129 
130 // workaround for missing traits in GCC and CLANG
131 template <class T>
133 {
134  constexpr static bool value = std::is_nothrow_constructible<T, T&&>::value;
135 };
136 
137 
138 template <class T, class U>
140 {
141  template <class X, class Y>
142  constexpr static bool has_assign(...) { return false; }
143 
144  template <class X, class Y, size_t S = sizeof((std::declval<X>() = std::declval<Y>(), true)) >
145  // the comma operator is necessary for the cases where operator= returns void
146  constexpr static bool has_assign(bool) { return true; }
147 
148  constexpr static bool value = has_assign<T, U>(true);
149 };
150 
151 
152 template <class T>
154 {
155  template <class X, bool has_any_move_assign>
157  constexpr static bool value = false;
158  };
159 
160  template <class X>
161  struct has_nothrow_move_assign<X, true> {
162  constexpr static bool value = noexcept( std::declval<X&>() = std::declval<X&&>() );
163  };
164 
165  constexpr static bool value = has_nothrow_move_assign<T, is_assignable<T&, T&&>::value>::value;
166 };
167 // end workaround
168 
169 
170 # endif
171 
172 
173 
174 // 20.5.4, optional for object types
175 template <class T> class optional;
176 
177 // 20.5.5, optional for lvalue reference types
178 template <class T> class optional<T&>;
179 
180 
181 // workaround: std utility functions aren't constexpr yet
182 template <class T> inline constexpr T&& constexpr_forward(typename std::remove_reference<T>::type& t) noexcept
183 {
184  return static_cast<T&&>(t);
185 }
186 
187 template <class T> inline constexpr T&& constexpr_forward(typename std::remove_reference<T>::type&& t) noexcept
188 {
189  static_assert(!std::is_lvalue_reference<T>::value, "!!");
190  return static_cast<T&&>(t);
191 }
192 
193 template <class T> inline constexpr typename std::remove_reference<T>::type&& constexpr_move(T&& t) noexcept
194 {
195  return static_cast<typename std::remove_reference<T>::type&&>(t);
196 }
197 
198 
199 #if defined NDEBUG
200 # define TR2_OPTIONAL_ASSERTED_EXPRESSION(CHECK, EXPR) (EXPR)
201 #else
202 # define TR2_OPTIONAL_ASSERTED_EXPRESSION(CHECK, EXPR) ((CHECK) ? (EXPR) : ([]{assert(!#CHECK);}(), (EXPR)))
203 #endif
204 
205 
206 namespace detail_
207 {
208 
209 // static_addressof: a constexpr version of addressof
210 template <typename T>
212 {
213  template <class X>
214  constexpr static bool has_overload(...) { return false; }
215 
216  template <class X, size_t S = sizeof(std::declval<X&>().operator&()) >
217  constexpr static bool has_overload(bool) { return true; }
218 
219  constexpr static bool value = has_overload<T>(true);
220 };
221 
222 template <typename T, TR2_OPTIONAL_REQUIRES(!has_overloaded_addressof<T>)>
223 constexpr T* static_addressof(T& ref)
224 {
225  return &ref;
226 }
227 
228 template <typename T, TR2_OPTIONAL_REQUIRES(has_overloaded_addressof<T>)>
229 T* static_addressof(T& ref)
230 {
231  return std::addressof(ref);
232 }
233 
234 
235 // the call to convert<A>(b) has return type A and converts b to type A iff b decltype(b) is implicitly convertible to A
236 template <class U>
237 U convert(U v) { return v; }
238 
239 } // namespace detail
240 
241 
242 constexpr struct trivial_init_t{} trivial_init{};
243 
244 
245 // 20.5.6, In-place construction
246 constexpr struct in_place_t{} in_place{};
247 
248 
249 // 20.5.7, Disengaged state indicator
250 struct nullopt_t
251 {
252  struct init{};
253  constexpr explicit nullopt_t(init){}
254 };
255 constexpr nullopt_t nullopt{nullopt_t::init()};
256 
257 
258 // 20.5.8, class bad_optional_access
259 class bad_optional_access : public logic_error {
260 public:
261  explicit bad_optional_access(const string& what_arg) : logic_error{what_arg} {}
262  explicit bad_optional_access(const char* what_arg) : logic_error{what_arg} {}
263 };
264 
265 
266 template <class T>
268 {
269  unsigned char dummy_;
270  T value_;
271 
272  constexpr storage_t( trivial_init_t ) noexcept : dummy_() {};
273 
274  template <class... Args>
275  constexpr storage_t( Args&&... args ) : value_(constexpr_forward<Args>(args)...) {}
276 
277  ~storage_t(){}
278 };
279 
280 
281 template <class T>
283 {
284  unsigned char dummy_;
285  T value_;
286 
287  constexpr constexpr_storage_t( trivial_init_t ) noexcept : dummy_() {};
288 
289  template <class... Args>
290  constexpr constexpr_storage_t( Args&&... args ) : value_(constexpr_forward<Args>(args)...) {}
291 
292  ~constexpr_storage_t() = default;
293 };
294 
295 
296 template <class T>
298 {
299  bool init_;
300  storage_t<T> storage_;
301 
302  constexpr optional_base() noexcept : init_(false), storage_(trivial_init) {};
303 
304  explicit constexpr optional_base(const T& v) : init_(true), storage_(v) {}
305 
306  explicit constexpr optional_base(T&& v) : init_(true), storage_(constexpr_move(v)) {}
307 
308  template <class... Args> explicit optional_base(in_place_t, Args&&... args)
309  : init_(true), storage_(constexpr_forward<Args>(args)...) {}
310 
311  template <class U, class... Args, TR2_OPTIONAL_REQUIRES(is_constructible<T, std::initializer_list<U>>)>
312  explicit optional_base(in_place_t, std::initializer_list<U> il, Args&&... args)
313  : init_(true), storage_(il, std::forward<Args>(args)...) {}
314 
315  ~optional_base() { if (init_) storage_.value_.T::~T(); }
316 };
317 
318 
319 template <class T>
321 {
322  bool init_;
323  constexpr_storage_t<T> storage_;
324 
325  constexpr constexpr_optional_base() noexcept : init_(false), storage_(trivial_init) {};
326 
327  explicit constexpr constexpr_optional_base(const T& v) : init_(true), storage_(v) {}
328 
329  explicit constexpr constexpr_optional_base(T&& v) : init_(true), storage_(constexpr_move(v)) {}
330 
331  template <class... Args> explicit constexpr constexpr_optional_base(in_place_t, Args&&... args)
332  : init_(true), storage_(constexpr_forward<Args>(args)...) {}
333 
334  template <class U, class... Args, TR2_OPTIONAL_REQUIRES(is_constructible<T, std::initializer_list<U>>)>
335  OPTIONAL_CONSTEXPR_INIT_LIST explicit constexpr_optional_base(in_place_t, std::initializer_list<U> il, Args&&... args)
336  : init_(true), storage_(il, std::forward<Args>(args)...) {}
337 
338  ~constexpr_optional_base() = default;
339 };
340 
341 template <class T>
342 using OptionalBase = typename std::conditional<
343  is_trivially_destructible<T>::value,
346 >::type;
347 
348 
349 
350 template <class T>
351 class optional : private OptionalBase<T>
352 {
353  static_assert( !std::is_same<typename std::decay<T>::type, nullopt_t>::value, "bad T" );
354  static_assert( !std::is_same<typename std::decay<T>::type, in_place_t>::value, "bad T" );
355 
356 
357  constexpr bool initialized() const noexcept { return OptionalBase<T>::init_; }
358  T* dataptr() { return std::addressof(OptionalBase<T>::storage_.value_); }
359  constexpr const T* dataptr() const { return detail_::static_addressof(OptionalBase<T>::storage_.value_); }
360 
361 # if OPTIONAL_HAS_THIS_RVALUE_REFS == 1
362  constexpr const T& contained_val() const& { return OptionalBase<T>::storage_.value_; }
363 # if OPTIONAL_HAS_MOVE_ACCESSORS == 1
364  OPTIONAL_MUTABLE_CONSTEXPR T&& contained_val() && { return std::move(OptionalBase<T>::storage_.value_); }
365  OPTIONAL_MUTABLE_CONSTEXPR T& contained_val() & { return OptionalBase<T>::storage_.value_; }
366 # else
367  T& contained_val() & { return OptionalBase<T>::storage_.value_; }
368  T&& contained_val() && { return std::move(OptionalBase<T>::storage_.value_); }
369 # endif
370 # else
371  constexpr const T& contained_val() const { return OptionalBase<T>::storage_.value_; }
372  T& contained_val() { return OptionalBase<T>::storage_.value_; }
373 # endif
374 
375  void clear() noexcept {
376  if (initialized()) dataptr()->T::~T();
377  OptionalBase<T>::init_ = false;
378  }
379 
380  template <class... Args>
381  void initialize(Args&&... args) noexcept(noexcept(T(std::forward<Args>(args)...)))
382  {
383  assert(!OptionalBase<T>::init_);
384  ::new (static_cast<void*>(dataptr())) T(std::forward<Args>(args)...);
385  OptionalBase<T>::init_ = true;
386  }
387 
388  template <class U, class... Args>
389  void initialize(std::initializer_list<U> il, Args&&... args) noexcept(noexcept(T(il, std::forward<Args>(args)...)))
390  {
391  assert(!OptionalBase<T>::init_);
392  ::new (static_cast<void*>(dataptr())) T(il, std::forward<Args>(args)...);
393  OptionalBase<T>::init_ = true;
394  }
395 
396 public:
397  typedef T value_type;
398 
399  // 20.5.5.1, constructors
400  constexpr optional() noexcept : OptionalBase<T>() {};
401  constexpr optional(nullopt_t) noexcept : OptionalBase<T>() {};
402 
403  optional(const optional& rhs)
404  : OptionalBase<T>()
405  {
406  if (rhs.initialized()) {
407  ::new (static_cast<void*>(dataptr())) T(*rhs);
408  OptionalBase<T>::init_ = true;
409  }
410  }
411 
413  : OptionalBase<T>()
414  {
415  if (rhs.initialized()) {
416  ::new (static_cast<void*>(dataptr())) T(std::move(*rhs));
417  OptionalBase<T>::init_ = true;
418  }
419  }
420 
421  constexpr optional(const T& v) : OptionalBase<T>(v) {}
422 
423  constexpr optional(T&& v) : OptionalBase<T>(constexpr_move(v)) {}
424 
425  template <class... Args>
426  explicit constexpr optional(in_place_t, Args&&... args)
427  : OptionalBase<T>(in_place_t{}, constexpr_forward<Args>(args)...) {}
428 
429  template <class U, class... Args, TR2_OPTIONAL_REQUIRES(is_constructible<T, std::initializer_list<U>>)>
430  OPTIONAL_CONSTEXPR_INIT_LIST explicit optional(in_place_t, std::initializer_list<U> il, Args&&... args)
431  : OptionalBase<T>(in_place_t{}, il, constexpr_forward<Args>(args)...) {}
432 
433  // 20.5.4.2, Destructor
434  ~optional() = default;
435 
436  // 20.5.4.3, assignment
437  optional& operator=(nullopt_t) noexcept
438  {
439  clear();
440  return *this;
441  }
442 
443  optional& operator=(const optional& rhs)
444  {
445  if (initialized() == true && rhs.initialized() == false) clear();
446  else if (initialized() == false && rhs.initialized() == true) initialize(*rhs);
447  else if (initialized() == true && rhs.initialized() == true) contained_val() = *rhs;
448  return *this;
449  }
450 
451  optional& operator=(optional&& rhs)
453  {
454  if (initialized() == true && rhs.initialized() == false) clear();
455  else if (initialized() == false && rhs.initialized() == true) initialize(std::move(*rhs));
456  else if (initialized() == true && rhs.initialized() == true) contained_val() = std::move(*rhs);
457  return *this;
458  }
459 
460  template <class U>
461  auto operator=(U&& v)
462  -> typename enable_if
463  <
464  is_same<typename decay<U>::type, T>::value,
465  optional&
466  >::type
467  {
468  if (initialized()) { contained_val() = std::forward<U>(v); }
469  else { initialize(std::forward<U>(v)); }
470  return *this;
471  }
472 
473 
474  template <class... Args>
475  void emplace(Args&&... args)
476  {
477  clear();
478  initialize(std::forward<Args>(args)...);
479  }
480 
481  template <class U, class... Args>
482  void emplace(initializer_list<U> il, Args&&... args)
483  {
484  clear();
485  initialize<U, Args...>(il, std::forward<Args>(args)...);
486  }
487 
488  // 20.5.4.4, Swap
489  void swap(optional<T>& rhs) noexcept(is_nothrow_move_constructible<T>::value && noexcept(swap(declval<T&>(), declval<T&>())))
490  {
491  if (initialized() == true && rhs.initialized() == false) { rhs.initialize(std::move(**this)); clear(); }
492  else if (initialized() == false && rhs.initialized() == true) { initialize(std::move(*rhs)); rhs.clear(); }
493  else if (initialized() == true && rhs.initialized() == true) { using std::swap; swap(**this, *rhs); }
494  }
495 
496  // 20.5.4.5, Observers
497 
498  explicit constexpr operator bool() const noexcept { return initialized(); }
499 
500  constexpr T const* operator ->() const {
501  return TR2_OPTIONAL_ASSERTED_EXPRESSION(initialized(), dataptr());
502  }
503 
504 # if OPTIONAL_HAS_MOVE_ACCESSORS == 1
505 
506  OPTIONAL_MUTABLE_CONSTEXPR T* operator ->() {
507  assert (initialized());
508  return dataptr();
509  }
510 
511  constexpr T const& operator *() const& {
512  return TR2_OPTIONAL_ASSERTED_EXPRESSION(initialized(), contained_val());
513  }
514 
515  OPTIONAL_MUTABLE_CONSTEXPR T& operator *() & {
516  assert (initialized());
517  return contained_val();
518  }
519 
520  OPTIONAL_MUTABLE_CONSTEXPR T&& operator *() && {
521  assert (initialized());
522  return constexpr_move(contained_val());
523  }
524 
525  constexpr T const& value() const& {
526  if (!initialized()) atFatal("bad optional access");
527  return contained_val();
528  }
529 
530  OPTIONAL_MUTABLE_CONSTEXPR T& value() & {
531  if (!initialized()) atFatal("bad optional access");
532  return contained_val();
533  }
534 
535  OPTIONAL_MUTABLE_CONSTEXPR T&& value() && {
536  if (!initialized()) atFatal("bad optional access");
537  return std::move(contained_val());
538  }
539 
540 # else
541 
542  T* operator ->() {
543  assert (initialized());
544  return dataptr();
545  }
546 
547  constexpr T const& operator *() const {
548  return TR2_OPTIONAL_ASSERTED_EXPRESSION(initialized(), contained_val());
549  }
550 
551  T& operator *() {
552  assert (initialized());
553  return contained_val();
554  }
555 
556  constexpr T const& value() const {
557  if (!initialized())
558  atFatal("bad optional access");
559  return contained_val();
560  }
561 
562  T& value() {
563  if (!initialized())
564  atFatal("bad optional access");
565  return contained_val();
566  }
567 
568 # endif
569 
570 # if OPTIONAL_HAS_THIS_RVALUE_REFS == 1
571 
572  template <class V>
573  constexpr T value_or(V&& v) const&
574  {
575  return *this ? **this : detail_::convert<T>(constexpr_forward<V>(v));
576  }
577 
578 # if OPTIONAL_HAS_MOVE_ACCESSORS == 1
579 
580  template <class V>
581  OPTIONAL_MUTABLE_CONSTEXPR T value_or(V&& v) &&
582  {
583  return *this ? constexpr_move(const_cast<optional<T>&>(*this).contained_val()) : detail_::convert<T>(constexpr_forward<V>(v));
584  }
585 
586 # else
587 
588  template <class V>
589  T value_or(V&& v) &&
590  {
591  return *this ? constexpr_move(const_cast<optional<T>&>(*this).contained_val()) : detail_::convert<T>(constexpr_forward<V>(v));
592  }
593 
594 # endif
595 
596 # else
597 
598  template <class V>
599  constexpr T value_or(V&& v) const
600  {
601  return *this ? **this : detail_::convert<T>(constexpr_forward<V>(v));
602  }
603 
604 # endif
605 
606 };
607 
608 
609 template <class T>
610 class optional<T&>
611 {
612  static_assert( !std::is_same<T, nullopt_t>::value, "bad T" );
613  static_assert( !std::is_same<T, in_place_t>::value, "bad T" );
614  T* ref;
615 
616 public:
617 
618  // 20.5.5.1, construction/destruction
619  constexpr optional() noexcept : ref(nullptr) {}
620 
621  constexpr optional(nullopt_t) noexcept : ref(nullptr) {}
622 
623  constexpr optional(T& v) noexcept : ref(detail_::static_addressof(v)) {}
624 
625  optional(T&&) = delete;
626 
627  constexpr optional(const optional& rhs) noexcept : ref(rhs.ref) {}
628 
629  explicit constexpr optional(in_place_t, T& v) noexcept : ref(detail_::static_addressof(v)) {}
630 
631  explicit optional(in_place_t, T&&) = delete;
632 
633  ~optional() = default;
634 
635  // 20.5.5.2, mutation
636  optional& operator=(nullopt_t) noexcept {
637  ref = nullptr;
638  return *this;
639  }
640 
641  // optional& operator=(const optional& rhs) noexcept {
642  // ref = rhs.ref;
643  // return *this;
644  // }
645 
646  // optional& operator=(optional&& rhs) noexcept {
647  // ref = rhs.ref;
648  // return *this;
649  // }
650 
651  template <typename U>
652  auto operator=(U&& rhs) noexcept
653  -> typename enable_if
654  <
655  is_same<typename decay<U>::type, optional<T&>>::value,
656  optional&
657  >::type
658  {
659  ref = rhs.ref;
660  return *this;
661  }
662 
663  template <typename U>
664  auto operator=(U&& rhs) noexcept
665  -> typename enable_if
666  <
667  !is_same<typename decay<U>::type, optional<T&>>::value,
668  optional&
669  >::type
670  = delete;
671 
672  void emplace(T& v) noexcept {
673  ref = detail_::static_addressof(v);
674  }
675 
676  void emplace(T&&) = delete;
677 
678 
679  void swap(optional<T&>& rhs) noexcept
680  {
681  std::swap(ref, rhs.ref);
682  }
683 
684  // 20.5.5.3, observers
685  constexpr T* operator->() const {
686  return TR2_OPTIONAL_ASSERTED_EXPRESSION(ref, ref);
687  }
688 
689  constexpr T& operator*() const {
690  return TR2_OPTIONAL_ASSERTED_EXPRESSION(ref, *ref);
691  }
692 
693  constexpr T& value() const {
694  if (!ref) atFatal("bad optional access");
695  return *ref;
696  }
697 
698  explicit constexpr operator bool() const noexcept {
699  return ref != nullptr;
700  }
701 
702  template <class V>
703  constexpr typename decay<T>::type value_or(V&& v) const
704  {
705  return *this ? **this : detail_::convert<typename decay<T>::type>(constexpr_forward<V>(v));
706  }
707 };
708 
709 
710 template <class T>
711 class optional<T&&>
712 {
713  static_assert( sizeof(T) == 0, "optional rvalue references disallowed" );
714 };
715 
716 
717 // 20.5.8, Relational operators
718 template <class T> constexpr bool operator==(const optional<T>& x, const optional<T>& y)
719 {
720  return bool(x) != bool(y) ? false : bool(x) == false ? true : *x == *y;
721 }
722 
723 template <class T> constexpr bool operator!=(const optional<T>& x, const optional<T>& y)
724 {
725  return !(x == y);
726 }
727 
728 template <class T> constexpr bool operator<(const optional<T>& x, const optional<T>& y)
729 {
730  return (!y) ? false : (!x) ? true : *x < *y;
731 }
732 
733 template <class T> constexpr bool operator>(const optional<T>& x, const optional<T>& y)
734 {
735  return (y < x);
736 }
737 
738 template <class T> constexpr bool operator<=(const optional<T>& x, const optional<T>& y)
739 {
740  return !(y < x);
741 }
742 
743 template <class T> constexpr bool operator>=(const optional<T>& x, const optional<T>& y)
744 {
745  return !(x < y);
746 }
747 
748 
749 // 20.5.9, Comparison with nullopt
750 template <class T> constexpr bool operator==(const optional<T>& x, nullopt_t) noexcept
751 {
752  return (!x);
753 }
754 
755 template <class T> constexpr bool operator==(nullopt_t, const optional<T>& x) noexcept
756 {
757  return (!x);
758 }
759 
760 template <class T> constexpr bool operator!=(const optional<T>& x, nullopt_t) noexcept
761 {
762  return bool(x);
763 }
764 
765 template <class T> constexpr bool operator!=(nullopt_t, const optional<T>& x) noexcept
766 {
767  return bool(x);
768 }
769 
770 template <class T> constexpr bool operator<(const optional<T>&, nullopt_t) noexcept
771 {
772  return false;
773 }
774 
775 template <class T> constexpr bool operator<(nullopt_t, const optional<T>& x) noexcept
776 {
777  return bool(x);
778 }
779 
780 template <class T> constexpr bool operator<=(const optional<T>& x, nullopt_t) noexcept
781 {
782  return (!x);
783 }
784 
785 template <class T> constexpr bool operator<=(nullopt_t, const optional<T>&) noexcept
786 {
787  return true;
788 }
789 
790 template <class T> constexpr bool operator>(const optional<T>& x, nullopt_t) noexcept
791 {
792  return bool(x);
793 }
794 
795 template <class T> constexpr bool operator>(nullopt_t, const optional<T>&) noexcept
796 {
797  return false;
798 }
799 
800 template <class T> constexpr bool operator>=(const optional<T>&, nullopt_t) noexcept
801 {
802  return true;
803 }
804 
805 template <class T> constexpr bool operator>=(nullopt_t, const optional<T>& x) noexcept
806 {
807  return (!x);
808 }
809 
810 
811 
812 // 20.5.10, Comparison with T
813 template <class T> constexpr bool operator==(const optional<T>& x, const T& v)
814 {
815  return bool(x) ? *x == v : false;
816 }
817 
818 template <class T> constexpr bool operator==(const T& v, const optional<T>& x)
819 {
820  return bool(x) ? v == *x : false;
821 }
822 
823 template <class T> constexpr bool operator!=(const optional<T>& x, const T& v)
824 {
825  return bool(x) ? *x != v : true;
826 }
827 
828 template <class T> constexpr bool operator!=(const T& v, const optional<T>& x)
829 {
830  return bool(x) ? v != *x : true;
831 }
832 
833 template <class T> constexpr bool operator<(const optional<T>& x, const T& v)
834 {
835  return bool(x) ? *x < v : true;
836 }
837 
838 template <class T> constexpr bool operator>(const T& v, const optional<T>& x)
839 {
840  return bool(x) ? v > *x : true;
841 }
842 
843 template <class T> constexpr bool operator>(const optional<T>& x, const T& v)
844 {
845  return bool(x) ? *x > v : false;
846 }
847 
848 template <class T> constexpr bool operator<(const T& v, const optional<T>& x)
849 {
850  return bool(x) ? v < *x : false;
851 }
852 
853 template <class T> constexpr bool operator>=(const optional<T>& x, const T& v)
854 {
855  return bool(x) ? *x >= v : false;
856 }
857 
858 template <class T> constexpr bool operator<=(const T& v, const optional<T>& x)
859 {
860  return bool(x) ? v <= *x : false;
861 }
862 
863 template <class T> constexpr bool operator<=(const optional<T>& x, const T& v)
864 {
865  return bool(x) ? *x <= v : true;
866 }
867 
868 template <class T> constexpr bool operator>=(const T& v, const optional<T>& x)
869 {
870  return bool(x) ? v >= *x : true;
871 }
872 
873 
874 // Comparison of optional<T&> with T
875 template <class T> constexpr bool operator==(const optional<T&>& x, const T& v)
876 {
877  return bool(x) ? *x == v : false;
878 }
879 
880 template <class T> constexpr bool operator==(const T& v, const optional<T&>& x)
881 {
882  return bool(x) ? v == *x : false;
883 }
884 
885 template <class T> constexpr bool operator!=(const optional<T&>& x, const T& v)
886 {
887  return bool(x) ? *x != v : true;
888 }
889 
890 template <class T> constexpr bool operator!=(const T& v, const optional<T&>& x)
891 {
892  return bool(x) ? v != *x : true;
893 }
894 
895 template <class T> constexpr bool operator<(const optional<T&>& x, const T& v)
896 {
897  return bool(x) ? *x < v : true;
898 }
899 
900 template <class T> constexpr bool operator>(const T& v, const optional<T&>& x)
901 {
902  return bool(x) ? v > *x : true;
903 }
904 
905 template <class T> constexpr bool operator>(const optional<T&>& x, const T& v)
906 {
907  return bool(x) ? *x > v : false;
908 }
909 
910 template <class T> constexpr bool operator<(const T& v, const optional<T&>& x)
911 {
912  return bool(x) ? v < *x : false;
913 }
914 
915 template <class T> constexpr bool operator>=(const optional<T&>& x, const T& v)
916 {
917  return bool(x) ? *x >= v : false;
918 }
919 
920 template <class T> constexpr bool operator<=(const T& v, const optional<T&>& x)
921 {
922  return bool(x) ? v <= *x : false;
923 }
924 
925 template <class T> constexpr bool operator<=(const optional<T&>& x, const T& v)
926 {
927  return bool(x) ? *x <= v : true;
928 }
929 
930 template <class T> constexpr bool operator>=(const T& v, const optional<T&>& x)
931 {
932  return bool(x) ? v >= *x : true;
933 }
934 
935 // Comparison of optional<T const&> with T
936 template <class T> constexpr bool operator==(const optional<const T&>& x, const T& v)
937 {
938  return bool(x) ? *x == v : false;
939 }
940 
941 template <class T> constexpr bool operator==(const T& v, const optional<const T&>& x)
942 {
943  return bool(x) ? v == *x : false;
944 }
945 
946 template <class T> constexpr bool operator!=(const optional<const T&>& x, const T& v)
947 {
948  return bool(x) ? *x != v : true;
949 }
950 
951 template <class T> constexpr bool operator!=(const T& v, const optional<const T&>& x)
952 {
953  return bool(x) ? v != *x : true;
954 }
955 
956 template <class T> constexpr bool operator<(const optional<const T&>& x, const T& v)
957 {
958  return bool(x) ? *x < v : true;
959 }
960 
961 template <class T> constexpr bool operator>(const T& v, const optional<const T&>& x)
962 {
963  return bool(x) ? v > *x : true;
964 }
965 
966 template <class T> constexpr bool operator>(const optional<const T&>& x, const T& v)
967 {
968  return bool(x) ? *x > v : false;
969 }
970 
971 template <class T> constexpr bool operator<(const T& v, const optional<const T&>& x)
972 {
973  return bool(x) ? v < *x : false;
974 }
975 
976 template <class T> constexpr bool operator>=(const optional<const T&>& x, const T& v)
977 {
978  return bool(x) ? *x >= v : false;
979 }
980 
981 template <class T> constexpr bool operator<=(const T& v, const optional<const T&>& x)
982 {
983  return bool(x) ? v <= *x : false;
984 }
985 
986 template <class T> constexpr bool operator<=(const optional<const T&>& x, const T& v)
987 {
988  return bool(x) ? *x <= v : true;
989 }
990 
991 template <class T> constexpr bool operator>=(const T& v, const optional<const T&>& x)
992 {
993  return bool(x) ? v >= *x : true;
994 }
995 
996 
997 // 20.5.12, Specialized algorithms
998 template <class T>
999 void swap(optional<T>& x, optional<T>& y) noexcept(noexcept(x.swap(y)))
1000 {
1001  x.swap(y);
1002 }
1003 
1004 
1005 template <class T>
1006 constexpr optional<typename decay<T>::type> make_optional(T&& v)
1007 {
1008  return optional<typename decay<T>::type>(constexpr_forward<T>(v));
1009 }
1010 
1011 template <class X>
1012 constexpr optional<X&> make_optional(reference_wrapper<X> v)
1013 {
1014  return optional<X&>(v.get());
1015 }
1016 
1017 
1018 } // namespace experimental
1019 } // namespace std
1020 
1021 namespace std
1022 {
1023  template <typename T>
1024  struct hash<std::experimental::optional<T>>
1025  {
1026  typedef typename hash<T>::result_type result_type;
1028 
1029  constexpr result_type operator()(argument_type const& arg) const {
1030  return arg ? std::hash<T>{}(*arg) : result_type{};
1031  }
1032  };
1033 
1034  template <typename T>
1035  struct hash<std::experimental::optional<T&>>
1036  {
1037  typedef typename hash<T>::result_type result_type;
1039 
1040  constexpr result_type operator()(argument_type const& arg) const {
1041  return arg ? std::hash<T>{}(*arg) : result_type{};
1042  }
1043  };
1044 }
1045 
1046 # undef TR2_OPTIONAL_REQUIRES
1047 # undef TR2_OPTIONAL_ASSERTED_EXPRESSION
1048 
1049 # endif //___OPTIONAL_HPP___
Definition: optional.hpp:267
+
Definition: optional.hpp:282
+
Definition: optional.hpp:250
+ +
Definition: optional.hpp:100
+
Definition: optional.hpp:252
+ +
Definition: optional.hpp:139
+
Definition: optional.hpp:246
+
Definition: optional.hpp:320
+ +
Definition: optional.hpp:242
+
Definition: optional.hpp:297
+
Definition: optional.hpp:259
+
Definition: optional.hpp:175
+ +
Definition: optional.hpp:610
+
+
+ + + + diff --git a/pages.html b/pages.html new file mode 100644 index 0000000..303390c --- /dev/null +++ b/pages.html @@ -0,0 +1,122 @@ + + + + + + +JBus: Related Pages + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBus communication server
+
+
+ + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+ + +
 DocMain
+
+
+
+ + + + diff --git a/resize.js b/resize.js new file mode 100644 index 0000000..2b86c36 --- /dev/null +++ b/resize.js @@ -0,0 +1,97 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + var device = navigator.userAgent.toLowerCase(); + var ios = device.match(/(iphone|ipod|ipad)/); + if (ios) { + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + } + }); +} + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..d54e0bd --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..8badb2a --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['accept',['accept',['../classjbus_1_1Listener.html#aca4aeff837a26d69ec7f4dec6572e986',1,'jbus::Listener::accept()'],['../classjbus_1_1net_1_1Socket.html#afb79caaa1f0d96afb0088f9910c9c633',1,'jbus::net::Socket::accept(Socket &remoteSocketOut, sockaddr_in &fromAddress)'],['../classjbus_1_1net_1_1Socket.html#a4eac487033d8a6b855f5023955c6d1fc',1,'jbus::net::Socket::accept(Socket &remoteSocketOut)'],['../classjbus_1_1net_1_1Socket.html#a7775d73e68c92ca6685cc2c9bbad4f99',1,'jbus::net::Socket::accept(Socket &remoteSocketOut, std::string &fromHostname)']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..8cc6a1d --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..9b7646b --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['busy',['Busy',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fad8a942ef2b04672adfafef0ad817a407',1,'jbus::net::Socket']]] +]; diff --git a/search/all_10.html b/search/all_10.html new file mode 100644 index 0000000..c25484f --- /dev/null +++ b/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 0000000..4a38966 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eendpoint',['~Endpoint',['../classjbus_1_1Endpoint.html#ad39f268d3bee438e5176cc7f4cf59675',1,'jbus::Endpoint']]], + ['_7elistener',['~Listener',['../classjbus_1_1Listener.html#a979078fd2cb5e4faeaa668dfda8f8e9d',1,'jbus::Listener']]], + ['_7esocket',['~Socket',['../classjbus_1_1net_1_1Socket.html#a3d2700e84af823fb63c8119f033a799d',1,'jbus::net::Socket']]] +]; diff --git a/search/all_11.html b/search/all_11.html new file mode 100644 index 0000000..3615c28 --- /dev/null +++ b/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 0000000..4a38966 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eendpoint',['~Endpoint',['../classjbus_1_1Endpoint.html#ad39f268d3bee438e5176cc7f4cf59675',1,'jbus::Endpoint']]], + ['_7elistener',['~Listener',['../classjbus_1_1Listener.html#a979078fd2cb5e4faeaa668dfda8f8e9d',1,'jbus::Listener']]], + ['_7esocket',['~Socket',['../classjbus_1_1net_1_1Socket.html#a3d2700e84af823fb63c8119f033a799d',1,'jbus::net::Socket']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..d15ac65 --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..5ff0463 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['close',['close',['../classjbus_1_1net_1_1Socket.html#ad981ced8a7a6f1bf5a3e6067df1ada9d',1,'jbus::net::Socket']]], + ['common_2ehpp',['Common.hpp',['../Common_8hpp.html',1,'']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..9f526c6 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..8379373 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['docmain_2emd',['DocMain.md',['../DocMain_8md.html',1,'']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..7b814aa --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..5558b0a --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ejoyreturn',['EJoyReturn',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117',1,'jbus']]], + ['ejstatflags',['EJStatFlags',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9',1,'jbus']]], + ['endpoint',['Endpoint',['../classjbus_1_1ThreadLocalEndpoint.html#a500d74fc41e3ab6b4889a579193566ed',1,'jbus::ThreadLocalEndpoint::Endpoint()'],['../classjbus_1_1Endpoint.html#a39ddcbf5ac7078d59a4d99d291e3f0fa',1,'jbus::Endpoint::Endpoint()']]], + ['endpoint',['Endpoint',['../classjbus_1_1Endpoint.html',1,'jbus']]], + ['endpoint_2ehpp',['Endpoint.hpp',['../Endpoint_8hpp.html',1,'']]], + ['eresult',['EResult',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113f',1,'jbus::net::Socket']]], + ['error',['Error',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fa902b0d55fddef6f8d651fe1035b7d4bd',1,'jbus::net::Socket']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..d8de556 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..ce6830e --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fgbacallback',['FGBACallback',['../namespacejbus.html#ae1577e03ea8c6e27361cb389c992280d',1,'jbus']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..9ba0cc2 --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..ae7f1d2 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['gba_5fbusy',['GBA_BUSY',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117a97f6047ad685bdd832831954ab4454a0',1,'jbus']]], + ['gba_5fjoyboot_5ferr_5finvalid',['GBA_JOYBOOT_ERR_INVALID',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117abdeee79304d78d822a4b5f5b71f5ddad',1,'jbus']]], + ['gba_5fjoyboot_5funknown_5fstate',['GBA_JOYBOOT_UNKNOWN_STATE',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117a5f890238a7828bd688477a32fdef34db',1,'jbus']]], + ['gba_5fjstat_5fflags_5fmask',['GBA_JSTAT_FLAGS_MASK',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a78506d78e40b43d15ff101f4efa00269',1,'jbus']]], + ['gba_5fjstat_5fflags_5fshift',['GBA_JSTAT_FLAGS_SHIFT',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a92d3659e0d24e5242af71dbfa1a25b20',1,'jbus']]], + ['gba_5fjstat_5fmask',['GBA_JSTAT_MASK',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a073fa6fd8ff5ae41567160cf897db7c1',1,'jbus']]], + ['gba_5fjstat_5fpsf0',['GBA_JSTAT_PSF0',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a9d1af0345a227524011d9845c0c3c4f8',1,'jbus']]], + ['gba_5fjstat_5fpsf1',['GBA_JSTAT_PSF1',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a93e801d066708e0c98eec71c42803f94',1,'jbus']]], + ['gba_5fjstat_5frecv',['GBA_JSTAT_RECV',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a814553611e2f05ce7daede703c9b0a20',1,'jbus']]], + ['gba_5fjstat_5fsend',['GBA_JSTAT_SEND',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9afe5cad6728edc3ab4aab7b0a9375350c',1,'jbus']]], + ['gba_5fnot_5fready',['GBA_NOT_READY',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117aac3cd7dd0e4cb525e5045cb9e9c1f09a',1,'jbus']]], + ['gba_5fready',['GBA_READY',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117a1e5f181b31229228f6741a4e3106c3fd',1,'jbus']]], + ['gbagetprocessstatus',['GBAGetProcessStatus',['../classjbus_1_1Endpoint.html#a50401a9a9d658f1f68e3dde61d5dfbce',1,'jbus::Endpoint']]], + ['gbagetstatus',['GBAGetStatus',['../classjbus_1_1Endpoint.html#a779ba524cf30f41e29fd53a626ba2acf',1,'jbus::Endpoint']]], + ['gbagetstatusasync',['GBAGetStatusAsync',['../classjbus_1_1Endpoint.html#a4ba9120b99057be42940b797708b790e',1,'jbus::Endpoint::GBAGetStatusAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#ad81335c0018a42ef9085d6941c4cddd5',1,'jbus::ThreadLocalEndpoint::GBAGetStatusAsync()']]], + ['gbajoybootasync',['GBAJoyBootAsync',['../classjbus_1_1Endpoint.html#aad76a9374e4e151540f678798548a843',1,'jbus::Endpoint']]], + ['gbaread',['GBARead',['../classjbus_1_1Endpoint.html#a775c816f52ca45117759b5b23eb45683',1,'jbus::Endpoint']]], + ['gbareadasync',['GBAReadAsync',['../classjbus_1_1Endpoint.html#a047d724cc9ccb8253cb8464c24b9ccd4',1,'jbus::Endpoint::GBAReadAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#aa1b9704d834d55b5118d4612dc335f4c',1,'jbus::ThreadLocalEndpoint::GBAReadAsync()']]], + ['gbareset',['GBAReset',['../classjbus_1_1Endpoint.html#a9065f6189182596a3f5c498e8ef98b40',1,'jbus::Endpoint']]], + ['gbaresetasync',['GBAResetAsync',['../classjbus_1_1Endpoint.html#a81d86608ffb93b3211a915fa1712beb4',1,'jbus::Endpoint::GBAResetAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#aab260d6d6686c2c3fc2ff31f57cf436d',1,'jbus::ThreadLocalEndpoint::GBAResetAsync()']]], + ['gbawrite',['GBAWrite',['../classjbus_1_1Endpoint.html#a6e59373aa28a23097129470deaeb46dd',1,'jbus::Endpoint']]], + ['gbawriteasync',['GBAWriteAsync',['../classjbus_1_1Endpoint.html#a06506d0cfa26d461f239ed761264d7b0',1,'jbus::Endpoint::GBAWriteAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#aa1625ccaf1f817831d56cf32554bc40c',1,'jbus::ThreadLocalEndpoint::GBAWriteAsync()']]], + ['getchan',['GetChan',['../classjbus_1_1Endpoint.html#acb5167184768ea65d026adc531f237b9',1,'jbus::Endpoint::GetChan()'],['../classjbus_1_1ThreadLocalEndpoint.html#a0899b0293f9eb4b69763d8e1e21e58a9',1,'jbus::ThreadLocalEndpoint::GetChan()']]], + ['getgcticks',['GetGCTicks',['../namespacejbus.html#a5944719111a14f5920ec765e5dcf71db',1,'jbus']]], + ['getinternalsocket',['GetInternalSocket',['../classjbus_1_1net_1_1Socket.html#a66864f8061a4d96fb9ceabc808532046',1,'jbus::net::Socket']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..9384ec9 --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..287e598 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['initialize',['Initialize',['../namespacejbus.html#ae0b3017c3755ceb8c9dd580965b8bc04',1,'jbus']]], + ['ipaddress',['IPAddress',['../classjbus_1_1net_1_1IPAddress.html#a7a9262cd458bcf8e63d5b9204edfdde9',1,'jbus::net::IPAddress']]], + ['ipaddress',['IPAddress',['../classjbus_1_1net_1_1IPAddress.html',1,'jbus::net']]], + ['isopen',['isOpen',['../classjbus_1_1net_1_1Socket.html#a31a6b806331c0856658e08fe9a77b32d',1,'jbus::net::Socket']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..37566c5 --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..5756a5c --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['jbus_20documentation',['JBus Documentation',['../index.html',1,'']]], + ['jbus',['jbus',['../namespacejbus.html',1,'']]], + ['net',['net',['../namespacejbus_1_1net.html',1,'jbus']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..c8c5102 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..a3b036c --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['listener',['Listener',['../classjbus_1_1Listener.html',1,'jbus']]], + ['listener_2ehpp',['Listener.hpp',['../Listener_8hpp.html',1,'']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..4cb31f0 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..26fed98 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ok',['OK',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fae0aa021e21dddbd6d8cecec71e9cf564',1,'jbus::net::Socket']]], + ['openandlisten',['openAndListen',['../classjbus_1_1net_1_1Socket.html#aa6baaf24a436a72735d0561f907864eb',1,'jbus::net::Socket']]], + ['operator_20bool',['operator bool',['../classjbus_1_1net_1_1IPAddress.html#a71d4f132a65595be0d74dd0a9a498696',1,'jbus::net::IPAddress::operator bool()'],['../classjbus_1_1net_1_1Socket.html#a5417fa626737b38ed048595ff0cda452',1,'jbus::net::Socket::operator bool()']]], + ['operator_3d',['operator=',['../classjbus_1_1net_1_1Socket.html#a0f73de864690d7637be5ccdd2ab2cd02',1,'jbus::net::Socket::operator=(const Socket &other)=delete'],['../classjbus_1_1net_1_1Socket.html#af761a3e1046b017ee919595af021bede',1,'jbus::net::Socket::operator=(Socket &&other)']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 0000000..d34a612 --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..0191db7 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['recv',['recv',['../classjbus_1_1net_1_1Socket.html#a145c616a39461c9ab57e021a51f746e4',1,'jbus::net::Socket::recv(void *buf, size_t len, size_t &transferred)'],['../classjbus_1_1net_1_1Socket.html#a5563c140f709a91585cafbb27151720a',1,'jbus::net::Socket::recv(void *buf, size_t len)']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 0000000..c1ae2ca --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..b958213 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['s16',['s16',['../namespacejbus.html#aa767fe4f71e145e2c0b12eccbeb83071',1,'jbus']]], + ['s32',['s32',['../namespacejbus.html#a33e5022738a0799c066372ce74d04c37',1,'jbus']]], + ['s64',['s64',['../namespacejbus.html#a69133321c9f11f1fa0e49c072244d377',1,'jbus']]], + ['s8',['s8',['../namespacejbus.html#a416b65eae1b2ff9ab63c4c71ff857ea4',1,'jbus']]], + ['send',['send',['../classjbus_1_1net_1_1Socket.html#ae3e4995fb077912fa51764053e931bae',1,'jbus::net::Socket::send(const void *buf, size_t len, size_t &transferred)'],['../classjbus_1_1net_1_1Socket.html#aeff335671da65f7397f86af7b712384f',1,'jbus::net::Socket::send(const void *buf, size_t len)']]], + ['setblocking',['setBlocking',['../classjbus_1_1net_1_1Socket.html#a9ee7eee273fdb17fed00972dff0136ee',1,'jbus::net::Socket']]], + ['socket',['Socket',['../classjbus_1_1net_1_1Socket.html#a87bf8bdb4a07533dc7eccfd5bb84857d',1,'jbus::net::Socket::Socket(bool blocking)'],['../classjbus_1_1net_1_1Socket.html#af2bbe556cdffa7e7e542318164c3496c',1,'jbus::net::Socket::Socket(const Socket &other)=delete'],['../classjbus_1_1net_1_1Socket.html#ae55b301ad32ba4a0fe54e7282c2e3e50',1,'jbus::net::Socket::Socket(Socket &&other)']]], + ['socket',['Socket',['../classjbus_1_1net_1_1Socket.html',1,'jbus::net']]], + ['socket_2ehpp',['Socket.hpp',['../Socket_8hpp.html',1,'']]], + ['start',['start',['../classjbus_1_1Listener.html#a2fd5a552555c94be0b03bf2c66ea5e2b',1,'jbus::Listener']]], + ['stop',['stop',['../classjbus_1_1Endpoint.html#a1cae93f2e1e097b10b34810a0d04333f',1,'jbus::Endpoint::stop()'],['../classjbus_1_1Listener.html#a40c805d7681e609d72acad900579fe76',1,'jbus::Listener::stop()']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 0000000..712223c --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 0000000..66cd202 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['threadlocalendpoint',['ThreadLocalEndpoint',['../classjbus_1_1ThreadLocalEndpoint.html',1,'jbus']]], + ['threadlocalendpoint',['ThreadLocalEndpoint',['../classjbus_1_1Endpoint.html#ab5de6af29530791b0b2958002f1d3603',1,'jbus::Endpoint']]], + ['tointeger',['toInteger',['../classjbus_1_1net_1_1IPAddress.html#a36ccdd7a0630a183c16943a21b3c908c',1,'jbus::net::IPAddress']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 0000000..d553ffa --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 0000000..45c214e --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['u16',['u16',['../namespacejbus.html#aff2760609de15f92daafbdff7be79b33',1,'jbus']]], + ['u32',['u32',['../namespacejbus.html#ae4a7d015f3b8913ec0b563caa0a53221',1,'jbus']]], + ['u64',['u64',['../namespacejbus.html#a36fb1f7488218c972a50b1f9dd547b81',1,'jbus']]], + ['u8',['u8',['../namespacejbus.html#a19d112b8b9f912fca094b41ce26c4fef',1,'jbus']]] +]; diff --git a/search/all_f.html b/search/all_f.html new file mode 100644 index 0000000..c77391a --- /dev/null +++ b/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 0000000..3700751 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['waitgcticks',['WaitGCTicks',['../namespacejbus.html#a918fbee6d761952c56c4914c900c2876',1,'jbus']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..025587a --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..a973889 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['endpoint',['Endpoint',['../classjbus_1_1Endpoint.html',1,'jbus']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..86dc4ff --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..e72b46a --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ipaddress',['IPAddress',['../classjbus_1_1net_1_1IPAddress.html',1,'jbus::net']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..014caf8 --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..44f8348 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['listener',['Listener',['../classjbus_1_1Listener.html',1,'jbus']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..2e97201 --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..487c6e8 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['socket',['Socket',['../classjbus_1_1net_1_1Socket.html',1,'jbus::net']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..776fee3 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..4b3a94b --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['threadlocalendpoint',['ThreadLocalEndpoint',['../classjbus_1_1ThreadLocalEndpoint.html',1,'jbus']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 0000000..69bbcc8 --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..44f8348 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['listener',['Listener',['../classjbus_1_1Listener.html',1,'jbus']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 0000000..2db08a0 --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..a5eafa4 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nullopt_5ft',['nullopt_t',['../structstd_1_1experimental_1_1nullopt__t.html',1,'std::experimental']]] +]; diff --git a/search/classes_7.html b/search/classes_7.html new file mode 100644 index 0000000..fd67346 --- /dev/null +++ b/search/classes_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 0000000..2672abb --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['optional',['optional',['../classstd_1_1experimental_1_1optional.html',1,'std::experimental']]], + ['optional_3c_20kawasedochallenge_20_3e',['optional< KawasedoChallenge >',['../classstd_1_1experimental_1_1optional.html',1,'std::experimental']]], + ['optional_3c_20t_20_26_20_3e',['optional< T & >',['../classstd_1_1experimental_1_1optional_3_01T_01_6_01_4.html',1,'std::experimental']]], + ['optional_3c_20t_20_26_26_20_3e',['optional< T && >',['../classstd_1_1experimental_1_1optional_3_01T_01_6_6_01_4.html',1,'std::experimental']]], + ['optional_5fbase',['optional_base',['../structstd_1_1experimental_1_1optional__base.html',1,'std::experimental']]] +]; diff --git a/search/classes_8.html b/search/classes_8.html new file mode 100644 index 0000000..369fe52 --- /dev/null +++ b/search/classes_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 0000000..87a55bf --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['socket',['Socket',['../classjbus_1_1net_1_1Socket.html',1,'jbus::net']]], + ['storage_5ft',['storage_t',['../unionstd_1_1experimental_1_1storage__t.html',1,'std::experimental']]] +]; diff --git a/search/classes_9.html b/search/classes_9.html new file mode 100644 index 0000000..188dbb3 --- /dev/null +++ b/search/classes_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 0000000..a6aa80a --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['threadlocalendpoint',['ThreadLocalEndpoint',['../classjbus_1_1ThreadLocalEndpoint.html',1,'jbus']]], + ['trivial_5finit_5ft',['trivial_init_t',['../structstd_1_1experimental_1_1trivial__init__t.html',1,'std::experimental']]] +]; diff --git a/search/close.png b/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/search/close.png differ diff --git a/search/defines_0.html b/search/defines_0.html new file mode 100644 index 0000000..17cfaa2 --- /dev/null +++ b/search/defines_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/defines_0.js b/search/defines_0.js new file mode 100644 index 0000000..9eb5ae5 --- /dev/null +++ b/search/defines_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sbig',['SBIG',['../Common_8hpp.html#a78130f853caa0ab8657889faed13438d',1,'Common.hpp']]], + ['slittle',['SLITTLE',['../Common_8hpp.html#acbf46deec43a4e662e483f4d19b847ad',1,'Common.hpp']]] +]; diff --git a/search/enums_0.html b/search/enums_0.html new file mode 100644 index 0000000..aba8d79 --- /dev/null +++ b/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 0000000..e5b9097 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ejoyreturn',['EJoyReturn',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117',1,'jbus']]], + ['ejstatflags',['EJStatFlags',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9',1,'jbus']]], + ['eresult',['EResult',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113f',1,'jbus::net::Socket']]] +]; diff --git a/search/enumvalues_0.html b/search/enumvalues_0.html new file mode 100644 index 0000000..83192d3 --- /dev/null +++ b/search/enumvalues_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 0000000..9b7646b --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['busy',['Busy',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fad8a942ef2b04672adfafef0ad817a407',1,'jbus::net::Socket']]] +]; diff --git a/search/enumvalues_1.html b/search/enumvalues_1.html new file mode 100644 index 0000000..0715ef5 --- /dev/null +++ b/search/enumvalues_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 0000000..677e10a --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error',['Error',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fa902b0d55fddef6f8d651fe1035b7d4bd',1,'jbus::net::Socket']]] +]; diff --git a/search/enumvalues_2.html b/search/enumvalues_2.html new file mode 100644 index 0000000..0f9b5e9 --- /dev/null +++ b/search/enumvalues_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 0000000..37e674d --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['gba_5fbusy',['GBA_BUSY',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117a97f6047ad685bdd832831954ab4454a0',1,'jbus']]], + ['gba_5fjoyboot_5ferr_5finvalid',['GBA_JOYBOOT_ERR_INVALID',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117abdeee79304d78d822a4b5f5b71f5ddad',1,'jbus']]], + ['gba_5fjoyboot_5funknown_5fstate',['GBA_JOYBOOT_UNKNOWN_STATE',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117a5f890238a7828bd688477a32fdef34db',1,'jbus']]], + ['gba_5fjstat_5fflags_5fmask',['GBA_JSTAT_FLAGS_MASK',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a78506d78e40b43d15ff101f4efa00269',1,'jbus']]], + ['gba_5fjstat_5fflags_5fshift',['GBA_JSTAT_FLAGS_SHIFT',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a92d3659e0d24e5242af71dbfa1a25b20',1,'jbus']]], + ['gba_5fjstat_5fmask',['GBA_JSTAT_MASK',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a073fa6fd8ff5ae41567160cf897db7c1',1,'jbus']]], + ['gba_5fjstat_5fpsf0',['GBA_JSTAT_PSF0',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a9d1af0345a227524011d9845c0c3c4f8',1,'jbus']]], + ['gba_5fjstat_5fpsf1',['GBA_JSTAT_PSF1',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a93e801d066708e0c98eec71c42803f94',1,'jbus']]], + ['gba_5fjstat_5frecv',['GBA_JSTAT_RECV',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9a814553611e2f05ce7daede703c9b0a20',1,'jbus']]], + ['gba_5fjstat_5fsend',['GBA_JSTAT_SEND',['../namespacejbus.html#a6a14af068c46e5eaac52e4c6ae081ab9afe5cad6728edc3ab4aab7b0a9375350c',1,'jbus']]], + ['gba_5fnot_5fready',['GBA_NOT_READY',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117aac3cd7dd0e4cb525e5045cb9e9c1f09a',1,'jbus']]], + ['gba_5fready',['GBA_READY',['../namespacejbus.html#a7118bfa3cb9d51e588418220bca20117a1e5f181b31229228f6741a4e3106c3fd',1,'jbus']]] +]; diff --git a/search/enumvalues_3.html b/search/enumvalues_3.html new file mode 100644 index 0000000..9ebb356 --- /dev/null +++ b/search/enumvalues_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 0000000..141f757 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ok',['OK',['../classjbus_1_1net_1_1Socket.html#a3bfd450bea54d958e35330aa7faa113fae0aa021e21dddbd6d8cecec71e9cf564',1,'jbus::net::Socket']]] +]; diff --git a/search/files_0.html b/search/files_0.html new file mode 100644 index 0000000..0b637cf --- /dev/null +++ b/search/files_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 0000000..65cb532 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['common_2ehpp',['Common.hpp',['../Common_8hpp.html',1,'']]] +]; diff --git a/search/files_1.html b/search/files_1.html new file mode 100644 index 0000000..1094e74 --- /dev/null +++ b/search/files_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 0000000..8379373 --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['docmain_2emd',['DocMain.md',['../DocMain_8md.html',1,'']]] +]; diff --git a/search/files_2.html b/search/files_2.html new file mode 100644 index 0000000..a08dbd3 --- /dev/null +++ b/search/files_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 0000000..da84d38 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['endpoint_2ehpp',['Endpoint.hpp',['../Endpoint_8hpp.html',1,'']]] +]; diff --git a/search/files_3.html b/search/files_3.html new file mode 100644 index 0000000..647fc8d --- /dev/null +++ b/search/files_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 0000000..d092e6d --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['listener_2ehpp',['Listener.hpp',['../Listener_8hpp.html',1,'']]] +]; diff --git a/search/files_4.html b/search/files_4.html new file mode 100644 index 0000000..186557a --- /dev/null +++ b/search/files_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 0000000..8348881 --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['socket_2ehpp',['Socket.hpp',['../Socket_8hpp.html',1,'']]] +]; diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..6bc52b6 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..8badb2a --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['accept',['accept',['../classjbus_1_1Listener.html#aca4aeff837a26d69ec7f4dec6572e986',1,'jbus::Listener::accept()'],['../classjbus_1_1net_1_1Socket.html#afb79caaa1f0d96afb0088f9910c9c633',1,'jbus::net::Socket::accept(Socket &remoteSocketOut, sockaddr_in &fromAddress)'],['../classjbus_1_1net_1_1Socket.html#a4eac487033d8a6b855f5023955c6d1fc',1,'jbus::net::Socket::accept(Socket &remoteSocketOut)'],['../classjbus_1_1net_1_1Socket.html#a7775d73e68c92ca6685cc2c9bbad4f99',1,'jbus::net::Socket::accept(Socket &remoteSocketOut, std::string &fromHostname)']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..648831f --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..d5e9dc9 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['close',['close',['../classjbus_1_1net_1_1Socket.html#ad981ced8a7a6f1bf5a3e6067df1ada9d',1,'jbus::net::Socket']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..c93d089 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..8a5984d --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['endpoint',['Endpoint',['../classjbus_1_1Endpoint.html#a39ddcbf5ac7078d59a4d99d291e3f0fa',1,'jbus::Endpoint']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..caa48ea --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..e2df573 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['gbagetprocessstatus',['GBAGetProcessStatus',['../classjbus_1_1Endpoint.html#a50401a9a9d658f1f68e3dde61d5dfbce',1,'jbus::Endpoint']]], + ['gbagetstatus',['GBAGetStatus',['../classjbus_1_1Endpoint.html#a779ba524cf30f41e29fd53a626ba2acf',1,'jbus::Endpoint']]], + ['gbagetstatusasync',['GBAGetStatusAsync',['../classjbus_1_1Endpoint.html#a4ba9120b99057be42940b797708b790e',1,'jbus::Endpoint::GBAGetStatusAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#ad81335c0018a42ef9085d6941c4cddd5',1,'jbus::ThreadLocalEndpoint::GBAGetStatusAsync()']]], + ['gbajoybootasync',['GBAJoyBootAsync',['../classjbus_1_1Endpoint.html#aad76a9374e4e151540f678798548a843',1,'jbus::Endpoint']]], + ['gbaread',['GBARead',['../classjbus_1_1Endpoint.html#a775c816f52ca45117759b5b23eb45683',1,'jbus::Endpoint']]], + ['gbareadasync',['GBAReadAsync',['../classjbus_1_1Endpoint.html#a047d724cc9ccb8253cb8464c24b9ccd4',1,'jbus::Endpoint::GBAReadAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#aa1b9704d834d55b5118d4612dc335f4c',1,'jbus::ThreadLocalEndpoint::GBAReadAsync()']]], + ['gbareset',['GBAReset',['../classjbus_1_1Endpoint.html#a9065f6189182596a3f5c498e8ef98b40',1,'jbus::Endpoint']]], + ['gbaresetasync',['GBAResetAsync',['../classjbus_1_1Endpoint.html#a81d86608ffb93b3211a915fa1712beb4',1,'jbus::Endpoint::GBAResetAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#aab260d6d6686c2c3fc2ff31f57cf436d',1,'jbus::ThreadLocalEndpoint::GBAResetAsync()']]], + ['gbawrite',['GBAWrite',['../classjbus_1_1Endpoint.html#a6e59373aa28a23097129470deaeb46dd',1,'jbus::Endpoint']]], + ['gbawriteasync',['GBAWriteAsync',['../classjbus_1_1Endpoint.html#a06506d0cfa26d461f239ed761264d7b0',1,'jbus::Endpoint::GBAWriteAsync()'],['../classjbus_1_1ThreadLocalEndpoint.html#aa1625ccaf1f817831d56cf32554bc40c',1,'jbus::ThreadLocalEndpoint::GBAWriteAsync()']]], + ['getchan',['GetChan',['../classjbus_1_1Endpoint.html#acb5167184768ea65d026adc531f237b9',1,'jbus::Endpoint::GetChan()'],['../classjbus_1_1ThreadLocalEndpoint.html#a0899b0293f9eb4b69763d8e1e21e58a9',1,'jbus::ThreadLocalEndpoint::GetChan()']]], + ['getgcticks',['GetGCTicks',['../namespacejbus.html#a5944719111a14f5920ec765e5dcf71db',1,'jbus']]], + ['getinternalsocket',['GetInternalSocket',['../classjbus_1_1net_1_1Socket.html#a66864f8061a4d96fb9ceabc808532046',1,'jbus::net::Socket']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 0000000..a9c64ad --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..a312563 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['initialize',['Initialize',['../namespacejbus.html#ae0b3017c3755ceb8c9dd580965b8bc04',1,'jbus']]], + ['ipaddress',['IPAddress',['../classjbus_1_1net_1_1IPAddress.html#a7a9262cd458bcf8e63d5b9204edfdde9',1,'jbus::net::IPAddress']]], + ['isopen',['isOpen',['../classjbus_1_1net_1_1Socket.html#a31a6b806331c0856658e08fe9a77b32d',1,'jbus::net::Socket']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 0000000..9d135fa --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..5a85287 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['openandlisten',['openAndListen',['../classjbus_1_1net_1_1Socket.html#aa6baaf24a436a72735d0561f907864eb',1,'jbus::net::Socket']]], + ['operator_20bool',['operator bool',['../classjbus_1_1net_1_1IPAddress.html#a71d4f132a65595be0d74dd0a9a498696',1,'jbus::net::IPAddress::operator bool()'],['../classjbus_1_1net_1_1Socket.html#a5417fa626737b38ed048595ff0cda452',1,'jbus::net::Socket::operator bool()']]], + ['operator_3d',['operator=',['../classjbus_1_1net_1_1Socket.html#a0f73de864690d7637be5ccdd2ab2cd02',1,'jbus::net::Socket::operator=(const Socket &other)=delete'],['../classjbus_1_1net_1_1Socket.html#af761a3e1046b017ee919595af021bede',1,'jbus::net::Socket::operator=(Socket &&other)']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 0000000..5fca897 --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..0191db7 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['recv',['recv',['../classjbus_1_1net_1_1Socket.html#a145c616a39461c9ab57e021a51f746e4',1,'jbus::net::Socket::recv(void *buf, size_t len, size_t &transferred)'],['../classjbus_1_1net_1_1Socket.html#a5563c140f709a91585cafbb27151720a',1,'jbus::net::Socket::recv(void *buf, size_t len)']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 0000000..02631a3 --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..0bfd0a5 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['send',['send',['../classjbus_1_1net_1_1Socket.html#ae3e4995fb077912fa51764053e931bae',1,'jbus::net::Socket::send(const void *buf, size_t len, size_t &transferred)'],['../classjbus_1_1net_1_1Socket.html#aeff335671da65f7397f86af7b712384f',1,'jbus::net::Socket::send(const void *buf, size_t len)']]], + ['setblocking',['setBlocking',['../classjbus_1_1net_1_1Socket.html#a9ee7eee273fdb17fed00972dff0136ee',1,'jbus::net::Socket']]], + ['socket',['Socket',['../classjbus_1_1net_1_1Socket.html#a87bf8bdb4a07533dc7eccfd5bb84857d',1,'jbus::net::Socket::Socket(bool blocking)'],['../classjbus_1_1net_1_1Socket.html#af2bbe556cdffa7e7e542318164c3496c',1,'jbus::net::Socket::Socket(const Socket &other)=delete'],['../classjbus_1_1net_1_1Socket.html#ae55b301ad32ba4a0fe54e7282c2e3e50',1,'jbus::net::Socket::Socket(Socket &&other)']]], + ['start',['start',['../classjbus_1_1Listener.html#a2fd5a552555c94be0b03bf2c66ea5e2b',1,'jbus::Listener']]], + ['stop',['stop',['../classjbus_1_1Endpoint.html#a1cae93f2e1e097b10b34810a0d04333f',1,'jbus::Endpoint::stop()'],['../classjbus_1_1Listener.html#a40c805d7681e609d72acad900579fe76',1,'jbus::Listener::stop()']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 0000000..ff37095 --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..3f7687b --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tointeger',['toInteger',['../classjbus_1_1net_1_1IPAddress.html#a36ccdd7a0630a183c16943a21b3c908c',1,'jbus::net::IPAddress']]] +]; diff --git a/search/functions_9.html b/search/functions_9.html new file mode 100644 index 0000000..1d34583 --- /dev/null +++ b/search/functions_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 0000000..3700751 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['waitgcticks',['WaitGCTicks',['../namespacejbus.html#a918fbee6d761952c56c4914c900c2876',1,'jbus']]] +]; diff --git a/search/functions_a.html b/search/functions_a.html new file mode 100644 index 0000000..8eb5e56 --- /dev/null +++ b/search/functions_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 0000000..4a38966 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7eendpoint',['~Endpoint',['../classjbus_1_1Endpoint.html#ad39f268d3bee438e5176cc7f4cf59675',1,'jbus::Endpoint']]], + ['_7elistener',['~Listener',['../classjbus_1_1Listener.html#a979078fd2cb5e4faeaa668dfda8f8e9d',1,'jbus::Listener']]], + ['_7esocket',['~Socket',['../classjbus_1_1net_1_1Socket.html#a3d2700e84af823fb63c8119f033a799d',1,'jbus::net::Socket']]] +]; diff --git a/search/mag_sel.png b/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/search/mag_sel.png differ diff --git a/search/namespaces_0.html b/search/namespaces_0.html new file mode 100644 index 0000000..f1b59ec --- /dev/null +++ b/search/namespaces_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 0000000..6b16d13 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jbus',['jbus',['../namespacejbus.html',1,'']]], + ['net',['net',['../namespacejbus_1_1net.html',1,'jbus']]] +]; diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 0000000..0db7267 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..dd52b5b --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jbus_20documentation',['JBus Documentation',['../index.html',1,'']]] +]; diff --git a/search/related_0.html b/search/related_0.html new file mode 100644 index 0000000..e40ed42 --- /dev/null +++ b/search/related_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/related_0.js b/search/related_0.js new file mode 100644 index 0000000..3850646 --- /dev/null +++ b/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['endpoint',['Endpoint',['../classjbus_1_1ThreadLocalEndpoint.html#a500d74fc41e3ab6b4889a579193566ed',1,'jbus::ThreadLocalEndpoint']]] +]; diff --git a/search/related_1.html b/search/related_1.html new file mode 100644 index 0000000..e25d1b3 --- /dev/null +++ b/search/related_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/related_1.js b/search/related_1.js new file mode 100644 index 0000000..f64bc7f --- /dev/null +++ b/search/related_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['threadlocalendpoint',['ThreadLocalEndpoint',['../classjbus_1_1Endpoint.html#ab5de6af29530791b0b2958002f1d3603',1,'jbus::Endpoint']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..4d7612f --- /dev/null +++ b/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/typedefs_0.js b/search/typedefs_0.js new file mode 100644 index 0000000..ce6830e --- /dev/null +++ b/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fgbacallback',['FGBACallback',['../namespacejbus.html#ae1577e03ea8c6e27361cb389c992280d',1,'jbus']]] +]; diff --git a/search/typedefs_1.html b/search/typedefs_1.html new file mode 100644 index 0000000..6edac96 --- /dev/null +++ b/search/typedefs_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/typedefs_1.js b/search/typedefs_1.js new file mode 100644 index 0000000..0f27bcb --- /dev/null +++ b/search/typedefs_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['s16',['s16',['../namespacejbus.html#aa767fe4f71e145e2c0b12eccbeb83071',1,'jbus']]], + ['s32',['s32',['../namespacejbus.html#a33e5022738a0799c066372ce74d04c37',1,'jbus']]], + ['s64',['s64',['../namespacejbus.html#a69133321c9f11f1fa0e49c072244d377',1,'jbus']]], + ['s8',['s8',['../namespacejbus.html#a416b65eae1b2ff9ab63c4c71ff857ea4',1,'jbus']]] +]; diff --git a/search/typedefs_2.html b/search/typedefs_2.html new file mode 100644 index 0000000..cc5cc40 --- /dev/null +++ b/search/typedefs_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/typedefs_2.js b/search/typedefs_2.js new file mode 100644 index 0000000..45c214e --- /dev/null +++ b/search/typedefs_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['u16',['u16',['../namespacejbus.html#aff2760609de15f92daafbdff7be79b33',1,'jbus']]], + ['u32',['u32',['../namespacejbus.html#ae4a7d015f3b8913ec0b563caa0a53221',1,'jbus']]], + ['u64',['u64',['../namespacejbus.html#a36fb1f7488218c972a50b1f9dd547b81',1,'jbus']]], + ['u8',['u8',['../namespacejbus.html#a19d112b8b9f912fca094b41ce26c4fef',1,'jbus']]] +]; diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/splitbar.png differ diff --git a/structstd_1_1experimental_1_1constexpr__optional__base-members.html b/structstd_1_1experimental_1_1constexpr__optional__base-members.html new file mode 100644 index 0000000..1e57409 --- /dev/null +++ b/structstd_1_1experimental_1_1constexpr__optional__base-members.html @@ -0,0 +1,134 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::constexpr_optional_base< T > Member List
+
+
+ +

This is the complete list of members for std::experimental::constexpr_optional_base< T >, including all inherited members.

+ + + + + + + + + +
constexpr_optional_base() noexcept (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >inline
constexpr_optional_base(const T &v) (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >inlineexplicit
constexpr_optional_base(T &&v) (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >inlineexplicit
constexpr_optional_base(in_place_t, Args &&...args) (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >inlineexplicit
constexpr_optional_base(in_place_t, std::initializer_list< U > il, Args &&...args) (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >inlineexplicit
init_ (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >
storage_ (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >
~constexpr_optional_base()=default (defined in std::experimental::constexpr_optional_base< T >)std::experimental::constexpr_optional_base< T >
+
+ + + + diff --git a/structstd_1_1experimental_1_1constexpr__optional__base.html b/structstd_1_1experimental_1_1constexpr__optional__base.html new file mode 100644 index 0000000..c5e4ae3 --- /dev/null +++ b/structstd_1_1experimental_1_1constexpr__optional__base.html @@ -0,0 +1,158 @@ + + + + + + +JBus: std::experimental::constexpr_optional_base< T > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::constexpr_optional_base< T > Struct Template Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

+constexpr constexpr_optional_base (const T &v)
 
+constexpr constexpr_optional_base (T &&v)
 
+template<class... Args>
constexpr constexpr_optional_base (in_place_t, Args &&...args)
 
+template<class U , class... Args, TR2_OPTIONAL_REQUIRES(is_constructible< T, std::initializer_list< U >>) >
OPTIONAL_CONSTEXPR_INIT_LIST constexpr_optional_base (in_place_t, std::initializer_list< U > il, Args &&...args)
 
+ + + + + +

+Public Attributes

+bool init_
 
+constexpr_storage_t< T > storage_
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1constexpr__optional__base.js b/structstd_1_1experimental_1_1constexpr__optional__base.js new file mode 100644 index 0000000..ff61db0 --- /dev/null +++ b/structstd_1_1experimental_1_1constexpr__optional__base.js @@ -0,0 +1,11 @@ +var structstd_1_1experimental_1_1constexpr__optional__base = +[ + [ "constexpr_optional_base", "structstd_1_1experimental_1_1constexpr__optional__base.html#a2de68e8d50f3b54344372c96c2123327", null ], + [ "constexpr_optional_base", "structstd_1_1experimental_1_1constexpr__optional__base.html#a215e82b0c75a04e871f55ab74def5653", null ], + [ "constexpr_optional_base", "structstd_1_1experimental_1_1constexpr__optional__base.html#a7a1c2735a3d7c86bdd4e179f9e291444", null ], + [ "constexpr_optional_base", "structstd_1_1experimental_1_1constexpr__optional__base.html#a48b8a0e669cc39fe3347f38a127278f2", null ], + [ "constexpr_optional_base", "structstd_1_1experimental_1_1constexpr__optional__base.html#a48e50b6260ebdf2c97dd75c609dbeb38", null ], + [ "~constexpr_optional_base", "structstd_1_1experimental_1_1constexpr__optional__base.html#aa45afb4ed80eab963e850ca337956a95", null ], + [ "init_", "structstd_1_1experimental_1_1constexpr__optional__base.html#aef0ac13a059b733b785544ade26f3354", null ], + [ "storage_", "structstd_1_1experimental_1_1constexpr__optional__base.html#a21e4f97ec2334b123f8e7c7a9d50c9b1", null ] +]; \ No newline at end of file diff --git a/structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof-members.html b/structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof-members.html new file mode 100644 index 0000000..8674bc5 --- /dev/null +++ b/structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof-members.html @@ -0,0 +1,129 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::detail_::has_overloaded_addressof< T > Member List
+
+ +
+ + + + diff --git a/structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof.html b/structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof.html new file mode 100644 index 0000000..614a6bf --- /dev/null +++ b/structstd_1_1experimental_1_1detail___1_1has__overloaded__addressof.html @@ -0,0 +1,149 @@ + + + + + + +JBus: std::experimental::detail_::has_overloaded_addressof< T > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::detail_::has_overloaded_addressof< T > Struct Template Reference
+
+
+ + + + + + + + +

+Static Public Member Functions

+template<class X >
static constexpr bool has_overload (...)
 
+template<class X , size_t S = sizeof(std::declval<X&>().operator&())>
static constexpr bool has_overload (bool)
 
+ + + +

+Static Public Attributes

+static constexpr bool value = has_overload<T>(true)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1in__place__t.html b/structstd_1_1experimental_1_1in__place__t.html new file mode 100644 index 0000000..6a9f2e2 --- /dev/null +++ b/structstd_1_1experimental_1_1in__place__t.html @@ -0,0 +1,127 @@ + + + + + + +JBus: std::experimental::in_place_t Struct Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::in_place_t Struct Reference
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__assignable-members.html b/structstd_1_1experimental_1_1is__assignable-members.html new file mode 100644 index 0000000..8f58052 --- /dev/null +++ b/structstd_1_1experimental_1_1is__assignable-members.html @@ -0,0 +1,129 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::is_assignable< T, U > Member List
+
+
+ +

This is the complete list of members for std::experimental::is_assignable< T, U >, including all inherited members.

+ + + + +
has_assign(...) (defined in std::experimental::is_assignable< T, U >)std::experimental::is_assignable< T, U >inlinestatic
has_assign(bool) (defined in std::experimental::is_assignable< T, U >)std::experimental::is_assignable< T, U >inlinestatic
value (defined in std::experimental::is_assignable< T, U >)std::experimental::is_assignable< T, U >static
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__assignable.html b/structstd_1_1experimental_1_1is__assignable.html new file mode 100644 index 0000000..25d2cb0 --- /dev/null +++ b/structstd_1_1experimental_1_1is__assignable.html @@ -0,0 +1,149 @@ + + + + + + +JBus: std::experimental::is_assignable< T, U > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::is_assignable< T, U > Struct Template Reference
+
+
+ + + + + + + + +

+Static Public Member Functions

+template<class X , class Y >
static constexpr bool has_assign (...)
 
+template<class X , class Y , size_t S = sizeof((std::declval<X>() = std::declval<Y>(), true))>
static constexpr bool has_assign (bool)
 
+ + + +

+Static Public Attributes

+static constexpr bool value = has_assign<T, U>(true)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable-members.html b/structstd_1_1experimental_1_1is__nothrow__move__assignable-members.html new file mode 100644 index 0000000..0d8b989 --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable-members.html @@ -0,0 +1,127 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::is_nothrow_move_assignable< T > Member List
+
+
+ +

This is the complete list of members for std::experimental::is_nothrow_move_assignable< T >, including all inherited members.

+ + +
value (defined in std::experimental::is_nothrow_move_assignable< T >)std::experimental::is_nothrow_move_assignable< T >static
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable.html b/structstd_1_1experimental_1_1is__nothrow__move__assignable.html new file mode 100644 index 0000000..cbca02a --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable.html @@ -0,0 +1,145 @@ + + + + + + +JBus: std::experimental::is_nothrow_move_assignable< T > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::is_nothrow_move_assignable< T > Struct Template Reference
+
+
+ + + + + + +

+Classes

struct  has_nothrow_move_assign
 
struct  has_nothrow_move_assign< X, true >
 
+ + + +

+Static Public Attributes

+static constexpr bool value = has_nothrow_move_assign<T, is_assignable<T&, T&&>::value>::value
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable.js b/structstd_1_1experimental_1_1is__nothrow__move__assignable.js new file mode 100644 index 0000000..811993d --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable.js @@ -0,0 +1,5 @@ +var structstd_1_1experimental_1_1is__nothrow__move__assignable = +[ + [ "has_nothrow_move_assign", "structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign.html", null ], + [ "has_nothrow_move_assign< X, true >", "structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4.html", null ] +]; \ No newline at end of file diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign-members.html b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign-members.html new file mode 100644 index 0000000..4b47e1b --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign-members.html @@ -0,0 +1,127 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, has_any_move_assign > Member List
+
+ +
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign.html b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign.html new file mode 100644 index 0000000..fe69044 --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign.html @@ -0,0 +1,137 @@ + + + + + + +JBus: std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, has_any_move_assign > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, has_any_move_assign > Struct Template Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr bool value = false
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4-members.html b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4-members.html new file mode 100644 index 0000000..19fbe22 --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4-members.html @@ -0,0 +1,127 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, true > Member List
+
+ +
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4.html b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4.html new file mode 100644 index 0000000..364a622 --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__assignable_1_1has__nothrow__move__assign_3_01X_00_01true_01_4.html @@ -0,0 +1,137 @@ + + + + + + +JBus: std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, true > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::is_nothrow_move_assignable< T >::has_nothrow_move_assign< X, true > Struct Template Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr bool value = noexcept( std::declval<X&>() = std::declval<X&&>() )
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__constructible-members.html b/structstd_1_1experimental_1_1is__nothrow__move__constructible-members.html new file mode 100644 index 0000000..48067ae --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__constructible-members.html @@ -0,0 +1,127 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::is_nothrow_move_constructible< T > Member List
+
+
+ +

This is the complete list of members for std::experimental::is_nothrow_move_constructible< T >, including all inherited members.

+ + +
value (defined in std::experimental::is_nothrow_move_constructible< T >)std::experimental::is_nothrow_move_constructible< T >static
+
+ + + + diff --git a/structstd_1_1experimental_1_1is__nothrow__move__constructible.html b/structstd_1_1experimental_1_1is__nothrow__move__constructible.html new file mode 100644 index 0000000..5b78dae --- /dev/null +++ b/structstd_1_1experimental_1_1is__nothrow__move__constructible.html @@ -0,0 +1,137 @@ + + + + + + +JBus: std::experimental::is_nothrow_move_constructible< T > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::is_nothrow_move_constructible< T > Struct Template Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr bool value = std::is_nothrow_constructible<T, T&&>::value
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1nullopt__t-members.html b/structstd_1_1experimental_1_1nullopt__t-members.html new file mode 100644 index 0000000..214b04e --- /dev/null +++ b/structstd_1_1experimental_1_1nullopt__t-members.html @@ -0,0 +1,127 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::nullopt_t Member List
+
+
+ +

This is the complete list of members for std::experimental::nullopt_t, including all inherited members.

+ + +
nullopt_t(init) (defined in std::experimental::nullopt_t)std::experimental::nullopt_tinlineexplicit
+
+ + + + diff --git a/structstd_1_1experimental_1_1nullopt__t.html b/structstd_1_1experimental_1_1nullopt__t.html new file mode 100644 index 0000000..7f5170d --- /dev/null +++ b/structstd_1_1experimental_1_1nullopt__t.html @@ -0,0 +1,143 @@ + + + + + + +JBus: std::experimental::nullopt_t Struct Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::nullopt_t Struct Reference
+
+
+ + + + +

+Classes

struct  init
 
+ + + +

+Public Member Functions

+constexpr nullopt_t (init)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1nullopt__t.js b/structstd_1_1experimental_1_1nullopt__t.js new file mode 100644 index 0000000..91c5434 --- /dev/null +++ b/structstd_1_1experimental_1_1nullopt__t.js @@ -0,0 +1,5 @@ +var structstd_1_1experimental_1_1nullopt__t = +[ + [ "init", "structstd_1_1experimental_1_1nullopt__t_1_1init.html", null ], + [ "nullopt_t", "structstd_1_1experimental_1_1nullopt__t.html#a70943f47c66aea7fa3c15facd6617dc1", null ] +]; \ No newline at end of file diff --git a/structstd_1_1experimental_1_1nullopt__t_1_1init.html b/structstd_1_1experimental_1_1nullopt__t_1_1init.html new file mode 100644 index 0000000..a15eac7 --- /dev/null +++ b/structstd_1_1experimental_1_1nullopt__t_1_1init.html @@ -0,0 +1,127 @@ + + + + + + +JBus: std::experimental::nullopt_t::init Struct Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::nullopt_t::init Struct Reference
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1optional__base-members.html b/structstd_1_1experimental_1_1optional__base-members.html new file mode 100644 index 0000000..9b47848 --- /dev/null +++ b/structstd_1_1experimental_1_1optional__base-members.html @@ -0,0 +1,134 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::optional_base< T > Member List
+
+
+ +

This is the complete list of members for std::experimental::optional_base< T >, including all inherited members.

+ + + + + + + + + +
init_ (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >
optional_base() noexcept (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >inline
optional_base(const T &v) (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >inlineexplicit
optional_base(T &&v) (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >inlineexplicit
optional_base(in_place_t, Args &&...args) (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >inlineexplicit
optional_base(in_place_t, std::initializer_list< U > il, Args &&...args) (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >inlineexplicit
storage_ (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >
~optional_base() (defined in std::experimental::optional_base< T >)std::experimental::optional_base< T >inline
+
+ + + + diff --git a/structstd_1_1experimental_1_1optional__base.html b/structstd_1_1experimental_1_1optional__base.html new file mode 100644 index 0000000..ad43121 --- /dev/null +++ b/structstd_1_1experimental_1_1optional__base.html @@ -0,0 +1,158 @@ + + + + + + +JBus: std::experimental::optional_base< T > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::optional_base< T > Struct Template Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

+constexpr optional_base (const T &v)
 
+constexpr optional_base (T &&v)
 
+template<class... Args>
 optional_base (in_place_t, Args &&...args)
 
+template<class U , class... Args, TR2_OPTIONAL_REQUIRES(is_constructible< T, std::initializer_list< U >>) >
 optional_base (in_place_t, std::initializer_list< U > il, Args &&...args)
 
+ + + + + +

+Public Attributes

+bool init_
 
+storage_t< T > storage_
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1experimental_1_1optional__base.js b/structstd_1_1experimental_1_1optional__base.js new file mode 100644 index 0000000..9b28c79 --- /dev/null +++ b/structstd_1_1experimental_1_1optional__base.js @@ -0,0 +1,11 @@ +var structstd_1_1experimental_1_1optional__base = +[ + [ "optional_base", "structstd_1_1experimental_1_1optional__base.html#a31134784c4c482947d66c600fe0dcad4", null ], + [ "optional_base", "structstd_1_1experimental_1_1optional__base.html#af47cc844bf9d32ad4361be9934c20939", null ], + [ "optional_base", "structstd_1_1experimental_1_1optional__base.html#ad4839801777f8cfeb048f16b02df4c44", null ], + [ "optional_base", "structstd_1_1experimental_1_1optional__base.html#aa18fce92c1fda4e93a4bd2df63d510bd", null ], + [ "optional_base", "structstd_1_1experimental_1_1optional__base.html#ad0cd8c18288d26d776c113c3831a3868", null ], + [ "~optional_base", "structstd_1_1experimental_1_1optional__base.html#ad89678b8ebde087b1f3f61466a7436b9", null ], + [ "init_", "structstd_1_1experimental_1_1optional__base.html#aa0df221e8ebf3abc45c0e78d0b963c01", null ], + [ "storage_", "structstd_1_1experimental_1_1optional__base.html#aa7f2be708eddd8066eee64ef852e4314", null ] +]; \ No newline at end of file diff --git a/structstd_1_1experimental_1_1trivial__init__t.html b/structstd_1_1experimental_1_1trivial__init__t.html new file mode 100644 index 0000000..2240162 --- /dev/null +++ b/structstd_1_1experimental_1_1trivial__init__t.html @@ -0,0 +1,127 @@ + + + + + + +JBus: std::experimental::trivial_init_t Struct Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::trivial_init_t Struct Reference
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4-members.html b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4-members.html new file mode 100644 index 0000000..f0b23e9 --- /dev/null +++ b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4-members.html @@ -0,0 +1,129 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::hash< std::experimental::optional< T > > Member List
+
+
+ +

This is the complete list of members for std::hash< std::experimental::optional< T > >, including all inherited members.

+ + + + +
argument_type typedef (defined in std::hash< std::experimental::optional< T > >)std::hash< std::experimental::optional< T > >
operator()(argument_type const &arg) const (defined in std::hash< std::experimental::optional< T > >)std::hash< std::experimental::optional< T > >inline
result_type typedef (defined in std::hash< std::experimental::optional< T > >)std::hash< std::experimental::optional< T > >
+
+ + + + diff --git a/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html new file mode 100644 index 0000000..2992ca0 --- /dev/null +++ b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html @@ -0,0 +1,147 @@ + + + + + + +JBus: std::hash< std::experimental::optional< T > > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::hash< std::experimental::optional< T > > Struct Template Reference
+
+
+ + + + + + +

+Public Types

+typedef hash< T >::result_type result_type
 
+typedef std::experimental::optional< T > argument_type
 
+ + + +

+Public Member Functions

+constexpr result_type operator() (argument_type const &arg) const
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.js b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.js new file mode 100644 index 0000000..ef08d23 --- /dev/null +++ b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.js @@ -0,0 +1,6 @@ +var structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4 = +[ + [ "argument_type", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html#a990f41de75472068a98961bde97c9f6f", null ], + [ "result_type", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html#a1ffc134496ff2e1dedb167899d460b6b", null ], + [ "operator()", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_4_01_4.html#ad20c9caf3fccad7905ccde5592c8d2bb", null ] +]; \ No newline at end of file diff --git a/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4-members.html b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4-members.html new file mode 100644 index 0000000..2f06c4a --- /dev/null +++ b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4-members.html @@ -0,0 +1,129 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::hash< std::experimental::optional< T & > > Member List
+
+ +
+ + + + diff --git a/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html new file mode 100644 index 0000000..6ff3c93 --- /dev/null +++ b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html @@ -0,0 +1,147 @@ + + + + + + +JBus: std::hash< std::experimental::optional< T & > > Struct Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::hash< std::experimental::optional< T & > > Struct Template Reference
+
+
+ + + + + + +

+Public Types

+typedef hash< T >::result_type result_type
 
+typedef std::experimental::optional< T & > argument_type
 
+ + + +

+Public Member Functions

+constexpr result_type operator() (argument_type const &arg) const
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.js b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.js new file mode 100644 index 0000000..8536827 --- /dev/null +++ b/structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.js @@ -0,0 +1,6 @@ +var structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4 = +[ + [ "argument_type", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html#ab5e4cdb491b0c3833fa266cdf95a26f8", null ], + [ "result_type", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html#acfb996ccc0604598b856ff0b73abf1a0", null ], + [ "operator()", "structstd_1_1hash_3_01std_1_1experimental_1_1optional_3_01T_01_6_01_4_01_4.html#a0802e051864ebe25350f48034ba56323", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/tab_s.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..9cf578f --- /dev/null +++ b/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/unionstd_1_1experimental_1_1constexpr__storage__t-members.html b/unionstd_1_1experimental_1_1constexpr__storage__t-members.html new file mode 100644 index 0000000..1308ffd --- /dev/null +++ b/unionstd_1_1experimental_1_1constexpr__storage__t-members.html @@ -0,0 +1,131 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::constexpr_storage_t< T > Member List
+
+ +
+ + + + diff --git a/unionstd_1_1experimental_1_1constexpr__storage__t.html b/unionstd_1_1experimental_1_1constexpr__storage__t.html new file mode 100644 index 0000000..b07965f --- /dev/null +++ b/unionstd_1_1experimental_1_1constexpr__storage__t.html @@ -0,0 +1,151 @@ + + + + + + +JBus: std::experimental::constexpr_storage_t< T > Union Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::constexpr_storage_t< T > Union Template Reference
+
+
+ + + + + + + +

+Public Member Functions

+constexpr constexpr_storage_t (trivial_init_t) noexcept
 
+template<class... Args>
constexpr constexpr_storage_t (Args &&...args)
 
+ + + + + +

+Public Attributes

+unsigned char dummy_
 
+T value_
 
+
The documentation for this union was generated from the following file: +
+
+ + + + diff --git a/unionstd_1_1experimental_1_1constexpr__storage__t.js b/unionstd_1_1experimental_1_1constexpr__storage__t.js new file mode 100644 index 0000000..f178eec --- /dev/null +++ b/unionstd_1_1experimental_1_1constexpr__storage__t.js @@ -0,0 +1,8 @@ +var unionstd_1_1experimental_1_1constexpr__storage__t = +[ + [ "constexpr_storage_t", "unionstd_1_1experimental_1_1constexpr__storage__t.html#a453f1fc4d9790ed1a15175a9c13fe517", null ], + [ "constexpr_storage_t", "unionstd_1_1experimental_1_1constexpr__storage__t.html#ac87b200d24fe9b58d9c24c4a63a93440", null ], + [ "~constexpr_storage_t", "unionstd_1_1experimental_1_1constexpr__storage__t.html#a91464aa4649be3df9952707782a58a6d", null ], + [ "dummy_", "unionstd_1_1experimental_1_1constexpr__storage__t.html#abab3e99e25b519d05a2b32c3748cf759", null ], + [ "value_", "unionstd_1_1experimental_1_1constexpr__storage__t.html#ab0f056b5b1e7bfde0dc04629fd0b9ade", null ] +]; \ No newline at end of file diff --git a/unionstd_1_1experimental_1_1storage__t-members.html b/unionstd_1_1experimental_1_1storage__t-members.html new file mode 100644 index 0000000..1ab6eec --- /dev/null +++ b/unionstd_1_1experimental_1_1storage__t-members.html @@ -0,0 +1,131 @@ + + + + + + +JBus: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
std::experimental::storage_t< T > Member List
+
+
+ +

This is the complete list of members for std::experimental::storage_t< T >, including all inherited members.

+ + + + + + +
dummy_ (defined in std::experimental::storage_t< T >)std::experimental::storage_t< T >
storage_t(trivial_init_t) noexcept (defined in std::experimental::storage_t< T >)std::experimental::storage_t< T >inline
storage_t(Args &&...args) (defined in std::experimental::storage_t< T >)std::experimental::storage_t< T >inline
value_ (defined in std::experimental::storage_t< T >)std::experimental::storage_t< T >
~storage_t() (defined in std::experimental::storage_t< T >)std::experimental::storage_t< T >inline
+
+ + + + diff --git a/unionstd_1_1experimental_1_1storage__t.html b/unionstd_1_1experimental_1_1storage__t.html new file mode 100644 index 0000000..889c513 --- /dev/null +++ b/unionstd_1_1experimental_1_1storage__t.html @@ -0,0 +1,151 @@ + + + + + + +JBus: std::experimental::storage_t< T > Union Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JBus +
+
JoyBuscommunicationserver
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
std::experimental::storage_t< T > Union Template Reference
+
+
+ + + + + + + +

+Public Member Functions

+constexpr storage_t (trivial_init_t) noexcept
 
+template<class... Args>
constexpr storage_t (Args &&...args)
 
+ + + + + +

+Public Attributes

+unsigned char dummy_
 
+T value_
 
+
The documentation for this union was generated from the following file: +
+
+ + + + diff --git a/unionstd_1_1experimental_1_1storage__t.js b/unionstd_1_1experimental_1_1storage__t.js new file mode 100644 index 0000000..757d7eb --- /dev/null +++ b/unionstd_1_1experimental_1_1storage__t.js @@ -0,0 +1,8 @@ +var unionstd_1_1experimental_1_1storage__t = +[ + [ "storage_t", "unionstd_1_1experimental_1_1storage__t.html#a66bf7a342f8770f3213d17b2a4b3b33c", null ], + [ "storage_t", "unionstd_1_1experimental_1_1storage__t.html#ac4bc3b5c25b6fcc9788c0325fccfaf3c", null ], + [ "~storage_t", "unionstd_1_1experimental_1_1storage__t.html#a9de04c8f12a996c2b9b55d430713b31e", null ], + [ "dummy_", "unionstd_1_1experimental_1_1storage__t.html#a66c46e8a91805a1495127fa280a3f58a", null ], + [ "value_", "unionstd_1_1experimental_1_1storage__t.html#afc411a630487df07bf6278ebbef1ebb7", null ] +]; \ No newline at end of file