Making StreamIndexedIO::Node work as MemberData, where it holds a pointer to the global Index and to the low level DirectoryNode.
Adding a specific class for DirectoryNode that holds the information loaded from the index.
Adding a member m_nodeType in NodeBase to distinguish derived classes without adding virtual methods.
Replacing the std::map to a sorted vector and sorting by the m_name field.
Using char instead of the enums in the structs to compact members in one word.
Original struct sizes were StreamIndexedIO::Node 104 bytes and DataNode was 56.
Current struct sizes are DirectoryNode 56 and DataNode 40 bytes.
Changing StreamIndexedIO member from intrusive pointer to raw pointer.
This does not affect the class size and should not break binary compatibility.
As a consequence the Node class reduced from 32 bytes to 16 bytes (not derived from RefCounted anymore).
Fixing bug by checking if pointer is valid. Now all tests passing.
Adding SmallDataNode class (24 bytes long on 64bit machines) when the data is small enough and avoid the big DataNode struct (40 bytes).
Updating comment.
Adding a compact Node class for representing non-expanded subIndexes: SubIndexNode (24 bytes).

This helps on the memory requirements for opening a file with a large amount of stored Objects. In particular, large LinkedScenes.
Bug fix: considering the new SubIndexNode a IndexedIO::Directory node for the purposes of filtering child entries by type.
Now building IECoreRI regardless of compiler version (at IE).

We need to build IECoreRI so we can read/write PTCs in Houdini 13 (which uses a different compiler). Since I removed the compiler version guard, but didn't modify the install paths (we decided not to for now), its possible to build the procedural and display driver with a different compiler, overwriting the versions we actually want. Currently we are just throwing those away (by installing to /tmp when the compiler doesn't match). If we want them in the future, we need to change the install paths.
Initializing defaultObjectPoolCache later in plugin load.

It seems that HoudiniDSOInit is called several times during startup, one of which seems to be in a forked process or something, and we end up with 2 versions of the UT_Cache registered. This results in a broken Cache Manager UI. By moving the cache init to a different function, it only gets called once, and all works as expected.
Added a sanity check to IECore::DeepImageConverter.
Fixed an off-by-one bug.
Merge pull request #230 from andrewkaufman/cacheManager

Initializing defaultObjectPoolCache later in plugin load.
Merge pull request #229 from andrewkaufman/dlMultiCompiler

Building IECoreRI regardless of compiler version (at IE).
Merge pull request #231 from goddardl/DeepImageFix

Simple DeepImageConverter fixes.
Being more frugal on the usage of the mutex that controls access to the hierarchy of Nodes.

Added a boolean in each Directory node that will be true only if there's a child that is SubIndex and only uses mutex on these locations.
Also, avoids keeping the mutex locked while reading the subindex or during deallocation of duplicated Directories.
Removing conditional on delete.
Switch to component mode on scene shapes behaves like in proceduralHolders
The create locator functions in FnSceneShape return the locators they created.
Fixing bug in HoudiniScene with flat geo but no / prefix
Finally fixing bug in test (todo with InternedString sorting)