Squashed 'contrib/autowiring/' content from commit 527fe2d

git-subtree-dir: contrib/autowiring
git-subtree-split: 527fe2d54b63304188eb4dc2cd96f7b44f7d1950
Merge commit 'eae52b8edd66cb5c27ad09b4523cfdd338d63c43' as 'contrib/autowiring'
Squashed 'contrib/autowiring/' changes from 527fe2d..33751f9

33751f9 Merge pull request #84 from leapmotion/clarify-static-assert
67a668b Clarification of some static asserts
26e2a3a Merge pull request #83 from leapmotion/ref-autoconstruct
ce334e3 Merge pull request #81 from leapmotion/feature-autorestart
119610b Adding an AutoRestarter
c98db1b AutoConstruct should not inherit AutoRequired
aad15dd Merge pull request #82 from leapmotion/feature-autoinit
674a600 AutoInit probably belongs in PostConstructTest
52fa78a Merge branch 'develop' into feature-autoinit
6b3187a Adding a test to validate that AutoInit can throw exceptions
1309a74 Implementing AutoInit
98a81c2 Merge pull request #80 from leapmotion/bug-reentrantinitiate
a557150 Fixing a CoreContext::Initiate reentrant deadlock
6757f62 Adding unit test to demonstrate the behavior of AutoInit
050be6f Ignore list updated
4b55cba Merge pull request #78 from GabrielHare/bug-nested-notify
4706051 Avoid deadlock from nested NotifyWhenAutowried calls by postponing satisfied call until after exit of FindByTypeRecursiveUnsafe.
e965fd3 Unit test demonstrates deadlock when nesting NotifyWhenAutowired.
0e3c0de Merge pull request #77 from GabrielHare/bug-context-notify-posthoc
b0ac22b Avoid missing type satisfaction due to simultaneous injection in to a parent context: FindByTypeRecursiveUnsafe makes calls while holding ALL necessary locks.
530dd13 Thread-correct (see file comments added in previous commit) NotifyWhenAutowired and Autowire methods.
451f5c8 Implemented unsafe solution.
97f0e62 Adding unit test demonstrating failure of PostConstruction NotifyWhenAutowired for Context.
8d95603 Merge pull request #75 from leapmotion/bug-websocketpp-warnings
6d02bc6 Correcting warnings in websocketpp sources
b5dcbc7 Merge pull request #66 from leapmotion/travis-disallowtabs
7e15578 Removed tabs
ed8b0af Adding tab detection script to travis
f2ec82e Merge pull request #74 from leapmotion/bug-nominmax
4d677d1 Merge pull request #73 from leapmotion/bug-embeddedcpack
0fbd709 Fix Windows warnings-as-errors introduced by ref-awmodule
ff954a8 Do not touch CPack when embedded
2bb1328 Merge pull request #71 from leapmotion/ref-websocketpp-subtree
0820f2c Merge pull request #72 from leapmotion/bug-boostorder
cf586d9 Boost components must be referred to in the right order
5299a93 websocketpp root path moved, corresponding update to ignore listr
f5f734c Merge commit 'ba2f4227198c7480994cea07f54675b1c4531baa' into ref-websocketpp-subtree
ba2f422 CMake configure_file should place config.cmake in the root
5ef4855 Recommend do not override CMAKE_INSTALL_PREFIX on MSVC
3765cff Merge commit 'b4ce2ab98d8388fd2f47e8699d12939d52654bd2' as 'contrib/websocketpp'
b4ce2ab Squashed 'contrib/websocketpp/' content from commit 71a10d8
5cc8e78 Removing websocketpp in preparation for a subtree squash
a813685 Merge pull request #69 from leapmotion/bug-assume-nullptr-avail
3ce705e Assume nullptr_t is available unless told otherwise
21c2c12 Merge pull request #65 from leapmotion/bug-libstdcpp-enum
957d203 Merge pull request #68 from leapmotion/ref-disableautonet
5eb7806 Merge pull request #67 from leapmotion/ref-cpp11initlist
9bd5af0 Extending C++11 header to allow detection of initializer lists and nullptr_t
9021cbe Remove unused variable warning
5945efe Completely disabling AutoNet when USE_LIBCXX is off
a6f0c3a Correcting libstdc++ compiler error
959a4e7 Merge pull request #64 from leapmotion/ref-tabstospaces
2e17be8 Merge pull request #63 from leapmotion/ref-autonetimpl
5626e70 Corrections on recent accidental introductions of tabs
f5ea416 Reducing Autowiring dependencies in order to clean up definitions
60680d6 Merge pull request #62 from leapmotion/bug-pthread
862df7a Merge pull request #61 from leapmotion/bug-errmsg
691731e Cleaning up boost find_package and linkage spec
72cccaf Adding more descriptive static assertions
039a83b Merge pull request #60 from leapmotion/bug-chattylibcxx
6e51a1e Merge pull request #59 from leapmotion/bug-includedirs
a1cfddc Merge pull request #58 from leapmotion/bug-awisembedded
3493dad Autowiring should specify its include directory for use with embedded mode
66757cc Reduce LibCXX chattiness
cb02634 Correcting defective check for AUTOWIRING_IS_EMBEDDED
17838ae Merge pull request #57 from leapmotion/ref-awmodule-cmake98
79eecd1 DecorationDisposition implements copy and assign only when building using c++98
e35c013 Offer options for LIB_USECXX only when not embedded in a project.
44c2772 Removing _4 definition.
68eb230 Merge pull request #56 from leapmotion/bug-mutexheader
81fbb41 Adding missing MUTEX_HEADER
7e0bd3c Merge pull request #55 from leapmotion/ref-stdlock
5289002 Updating atomic object to make use of a lock heirarchy scheme
3b20c77 Merge pull request #48 from leapmotion/ref-cleanup
852e9d4 We're iterating over arguments, so use arity
5821f32 Extra if
44db170 Merge remote-tracking branch 'origin/develop' into ref-cleanup
33bcd3a Merge pull request #54 from leapmotion/ref-no_unique_ptr
ed3c7c9 Handle branching unlock conditions.
23e0d09 Correcting leak caused by a missing delete call
c884f24 Clean-up AutoFilterTest.VerifyDescendentAwareness.
098c876 Strengthening creation & destruction tests for ObjectPool.
94fd45b Replacing use of unique_ptr<T> with T* in ObjectPool.
e66baf9 Merge pull request #53 from leapmotion/ref-testcleanup
363a26b Eliminated some redundant calls to Initiate
435151a Merge pull request #52 from leapmotion/bug-arraycount
7c61be6 ARRAYCOUNT is not available in a header-only circumstance
5e1e98c Merge pull request #51 from leapmotion/bug-googletestorder
20a4dc4 AutowiringEnclosure MUST be header-only
663a7c3 Merge pull request #50 from leapmotion/bug-libstdcpp
7de26eb make_unique does not quite work correctly in Visual Studio
71e95dd Fixing gimpy Visual Studio handling of multi-block statements in range-based for loops
4a900cf Merge pull request #49 from leapmotion/bug-thisthread
e55e253 Correcting overspecified paths that were causing compiler errors for libstdc++
578f7b1 Thread instantiation must happen via placement operations
991790f Removed unnecessary intermediate variables in MicroBolt
7066f6f Adding const correctness where applicable
bd55d63 Adding missing memory header reference to atomic_object
74122cc Changed uses of old looping style to range-based loops
eba5b43 Merge pull request #47 from leapmotion/ref-linkcollide
0f09638 Fixing bad casing
55e2b23 Correct linker symbol collision problem.
a7db674 Changed old shared_ptr construction to newer make_shared factory
76bdecc Merge pull request #46 from leapmotion/ref-buildautonet
8c05e34 Recommend that we build AutoNet by default unconditionally
8a38a58 Merge pull request #45 from leapmotion/ref-nowebsocketheaders
85406b9 Making use of PMPL with the AutoNetServer
656190f Fixing Windows autonet build
54452ac Correcting Boost package search on Windows
38581e2 If EXTERNAL_LIBRARY_DIR is set, we want to add it to our search path
e6eec3c Merge pull request #44 from leapmotion/doc-atomicobject
b4be119 Updating atomic_object documentation
eccabf8 Merge pull request #43 from leapmotion/bug-msvcvarargs
cf1f58e Adding a unit test to provide justification for prior changes
5ec617a Adding overload specialization for CreationRules::New
6508159 Fixing Windows build
fd8c114 Merge pull request #42 from GabrielHare/feature-DeclareAutoFilter
cd9369b Reduced inclusions by DeclareAutoFilter by expanding convenience functions.
5be1f0f Demonstrate use of DeclareAutoFilter function.
2ef9162 Adding DeclareAutoFilter convenience function.
2d32227 Using MicroAutoFilter to declare multiple methods as AutoFilter instances.
75694d7 Consistent include path in AutoFilterTest.
a9594c9 Using move in Deferred case for MicroAutoFilter.
b743a84 Correction to header file rewrite filter
ac4307e Merge pull request #41 from leapmotion/ref-simpleobjects
4f8809c Making template types discoverable in AutoSelfUpdate.
4fd6d50 Adding useful typedefs to unlock_object.
b35f4b8 Making implicit templates types discoverable.
4e57acf Removed shared_object, AutoSelfUpdate inherits from atomic_object. Tests updated accordingly.
6134d94 Merge pull request #38 from leapmotion/ref-functionaldecoration
99f614e Removing m_initialized from atomic_object and associated methods.
25009fd Merge branch 'develop' into ref-functionaldecoration
83d4d09 Merge pull request #37 from leapmotion/test-autoselfupdate
415c7b9 Cleaning up inclusion path specifications.
b7fb1f1 Using MicroAutoFilter to implement Packet::AddRecipient.
803f21e Using move semantics in MicroAutoFilter. This is required in order to avoid copying auto_out instances.
157ccb1 Corrected invalid use-after-free
d8e84a3 Merge pull request #36 from leapmotion/feature-autoconstruct
ae2ea81 Builds are exhausting virtual memory, backing off the parallel build count a bit
8721e22 Merge pull request #35 from leapmotion/feature-doxygen
e95ea69 Relaxing rules on CoreContext::Construct, adding unit test
9f482e0 Clarifying some comments
170301a Added Doxyfile for Doxygen support
49e3596 Merge pull request #34 from leapmotion/ref-header-organization
652cda6 Added MicroAutoFilter to wrap std::function.
8ce38bb Verify that AddRecipient call is valid where expected.
7b92a2c Adding compile-time test to verify that a function can be used as an auto-filter.
46b0670 Combined Auto:: and autowiring:: namespaces
45d3401 Adding stub to handle recipients for decorations of this packet only.
2db63c2 Adding unit tests for desired functionality when a packet is decorated with a function that can be used as an AutoFilter.
50025ad Consolidated TypeRegistry utterances from Autowiring.h to a single utterance in CoreContext.h
a0dfafa Combined TypeIdentifier and EventIdentifer
a8519a5 Combined 2 definitions of index_tuple and put it in its own header
1f5f622 Moved is_any_same from Decompose.h to is_any.h
230b121 Merge pull request #33 from leapmotion/ref-declarativeboltable
0f90253 Enabling test verifying requested functionality.
bb3056d Enabled post-hoc injection via Boltable declaration.
04b3736 Merge pull request #32 from leapmotion/ref-demangle
ec8721c Disable failing test for requested feature.
15192f1 Added failing unit test - requested feature would enable bootable if declared after the creation of a context.
d695ea1 Adding passing unit test for Boltable, in which Boltable is declared before target context.
5501b5e Moving another performance test over to the dedicated benchmarking project
c9a06ed Added demangle function to AutoNetServer
d487ad7 SlotInformation should always store position and extent, even when already initialized
dee3a78 Merge pull request #31 from leapmotion/test-priorityboost
8e4ced6 Merge pull request #30 from leapmotion/test-noheaders
99fc032 Making use of dedicated ASSERT_NO_THROW macro
165f475 Introduction of AutoSelfUpdate<type> in multiple sub-contexts yields an error... but should be allowed.
adee250 Adding unit test for AutoSelfUpdate functionality.
16c36dd More unnecessary header elimination
4312c11 Moving another performance test over to the dedicated benchmarking project
eeb315f Finished implementation of AutoSelfUpdate, which is used to provide prior data.
43879a2 Adding reset(target) and transfer(target) methods to atomic_object, and by extension to shared_object.
44f9d19 Renaming unlock_object methods for clarity.
737bab3 Clarifying shared_object comments.
2014716 Simultaneous acquisition of locks avoids possible deadlock.
a340c9d Merge pull request #29 from leapmotion/example-autonet
54f2252 Merge pull request #28 from leapmotion/ref-eventreceiver
2a47179 Finished basic AutoFilter example
b5ab0ce Added context initiation to AutoFilterTest constructor
76b4490 Created AutoNetExample
685400d Merge branch 'develop' into ref-eventreceiver
6b4117c Merge pull request #27 from leapmotion/feature-filterautodesire
83d2570 Merge pull request #26 from leapmotion/ref-testheaders
a660977 Passes all tests
b64f1a8 Changed AddInternalTraits constructor to be templeted on base type
c8650e0 Eliminating superfluous header files in unit tests
a3a1758 Filter exceptions thrown by AutoDesired
c3b7e62 Adding an AutoDesired type for use in cases where exception robustness is desired
4ac4f37 Merge pull request #25 from leapmotion/ref-testutilities
f960703 gtest-all-guard modified to allow delegation of main
206ddce Benchmark tests moved to their own test project
4715a22 Simplification of gtest-all-guard
0feec37 Class name refactored to reflect new purpose
abb0cf3 EnclosedContextTestBase useful enough to merit creation of new project
18cffbc Whitespace
70facdc Merge pull request #24 from leapmotion/ref-lifecycletest
fba7a70 Fixing final failing test
e963698 Merge branch 'develop' into ref-eventreceiver
62a07e3 Fixed AutoNetServer to work with new TypeRegistry and EventRegistry
9223ac8 Added EventRegistryTest
c8d5b1b Added EventRegistry for types where an event is called
aff420f Merge pull request #23 from leapmotion/fix-cpp11
2e17dd2 Altered C++11 reference for portability
36cf6d6 Compiles and runs
f819a64 Merge pull request #22 from leapmotion/issue-20
675e4e8 Merge pull request #21 from leapmotion/ref-decorateimmediate
15bc960 Correcting invalid linker flag for clang on other platforms
baf767c Fixes #19
f78ca80 Modifying DecorateImmediate to enhance diagnostics
c661951 Modifying test to show allocation in pool and deallocation after destruction of pool.
d4c0c72 Added test of life-cycle guarantees of ObjectPool.
32c5a74 Queueing all AutoFilter calls, but decrementing all counters inside of locks.
0c76af8 JunctionBoxEntry shouldn't have TypeUnifier internally
c1c7603 Removed all references to EventReceiver.
010251b Removed EventReceiver.h includes
fb53737 Added RegType to Autorequired
b38609f Merge pull request #18 from leapmotion/bug-deferreddeconly
72853e1 Object pool should only attempt to initialize after shared_ptr is created
92fa343 Adding a Deferred output-only AutoFilter
fb55296 Merge pull request #17 from leapmotion/ref-tests
c9ff391 Merge pull request #16 from leapmotion/feature-examples
5fcc423 Switching EnclosedContextTestBase to be a filter rather than a base type
0f28ca5 Finished basic event example
79ce603 Fixing incorrect unit test
96aa553 Adding a unit test to validate wait behavior while packets are still being processed
34d9afd Merge remote-tracking branch 'origin/ref-implicitdecoration' into develop
6cb6832 Updating frequently failing unit test to provide more failure diagnostics
ec81b77 Merge pull request #14 from leapmotion/dep-moveonly
8c4be79 Created stubs from AutoFilterExample and EventExample
d2ce96b Removed move_only.h
696cb2c Deprecating any use of MoveOnly
54a06fe Merge pull request #13 from leapmotion/bug-cpp11fixup
cc79062 Adding a __has_feature extension definition for use in other projects
9f1881b Created CoreThread example
1dee298 Assume nullptr is always available
888203c Merge pull request #11 from leapmotion/bug-badoverload
7c6f539 Throw specification fixups
586d098 Added CoreContext example
8f5c842 Added CMake options for building examples
b83755d Merge pull request #10 from leapmotion/bug-offsetwarn
6d314ec Correcting linux warning about invalid use of offsetof
7331f82 Creating examples for basic Autowiring types and concepts
047f627 Merge pull request #9 from leapmotion/bug-syncget
69f2300 AutoPacket::Get and AutoPacket::HasSubscribers need to be synchronized
c8813e6 Explicitly forbidding movement of DecorationDisposition
96beb06 Adding pathological test to validate misbehavior of AutoPacket::Get
996813c Merge pull request #8 from leapmotion/fix-printlatest
db1798a Print testing results in the event of a failure
9ca76a6 Adding an outstanding count reference to AutoPacket
d513f3c Removing life-cycle consistency checks from AutoPacket.
a531813 Fixed incorrect count of issued packets in SetMaximumPooledEntities().
08f76f8 Fixed incorrect count of issued packets in ClearCachedEntities().
8bcdd72 Adding AutoPacketFactory::GetOutstanding in order to test correct outstanding counts.
6192549 Restructured ObjectPool to satisfy AutoPacket (or any other object) lifecycle contract. Presently, AutoFilterTest hangs.
441a2f9 Adding life-cycle testing to AutoPacket. Presently, the lifecycle assumptions are not satisfied.
bb804e2 Adding test for shared_ptr reduction to base-type for type redecoration.
104c6c0 Make all type repetition errors explicit about type in AutoPacket.
da232c4 Say what type T is on decoration-already-exists error, #9891
5ccee33 AutoPacket has Reset, Initialize and Finalize methods. Now, all tests pass.
eaa554e Whitespace twiddles.
05e3e51 Creating separate Initialize and Finalize referenced functions for ObjectPool.
c89c2ef Prevent multiple calls during construction.
bf89fb2 Methods with auto_out as only argument are called twice during construction of packet.
2875c76 Added test for repeated calls when constructing or destroying a packet.
4fa7fb5 Added test for nullptr decoration.
27bd0e9 Merge pull request #7 from leapmotion/fix-cpack
ac2e882 Merge pull request #6 from leapmotion/bug-json11
61ed3f5 Adding -j flag to make to accelerate build
9206c55 Updated ignore list
3c259ff Silenced MSVC initializer error
6588d00 MSVC's version of snprintf is called _snprintf_s
de56838 Implicit conversion warnings silenced
d4a6f45 enable_if::type cannot form part of a template parameter space
1fb9b6d noexcept not added until Visual Studio 2014
4ef83cc Merge pull request #5 from leapmotion/feature-websocketpp
723d35b Removed jzon
ecc83a8 Fixed websocketpp and switched to json11
17c3223 Added AutoNet headers to AutoNet project
a76d6e4 AutoNetTest builds and runs
8a8a87c Moved C++11/ and Jzon to contrb/
1fe1c16 Added websocketpp it contrib

git-subtree-dir: contrib/autowiring
git-subtree-split: 33751f9d8a6225a5988f609aa6a9e75c26ebf0bf
Merge commit '0a0f25e519d24af8fb20566ac7f943943d1999f3'