Skip to content
  • David Thompson's avatar
    Progress on cursor subclass implementation. · ca6c7e75
    David Thompson authored
    This patch includes many changes to the cursor subclasses
    to improve their utility in constructing and traversing models.
    
    + More methods allowing model traversal are implemented (or fixed)
      and tested as part of the `unitCursor` test.
    
    + The methods of `Storage` that return cursor subclasses are now
      properly wrapped in Python. However, many cursor methods that
      return arrays of cursors (e.g., Vertex::edges()) still cause
      segfaults as shiboken does not properly handle value/pointer
      conversion.
    
    + Add a VolumeUse cursor class.
      This is for the convenience of automating adaptors to other modelers.
    
    + The `createTet` test helper now properly models
      vertex-uses, edge-uses, face-uses, volume-uses,
      chains, loops, and shells and is
      used to test cursor-subclass methods.
    
    + It also adds a compile-time option to make the Storage
      class configurable between map and sparse_hash_map.
      The new (advanced) CMake option is named `SMTK_HASH_STORAGE`.
      When true, the `sparse_hash_map` is used for the maps between
    
      + UUID and Entity records; and
      + UUID and Arrangement records
    
      in addition to property names and values.
    
      This makes debugging issues with invalidated iterators simpler
      since `std::map` does not invalidate iterators upon insertion
      while `google::sparse_hash_map` does.
    
    + The browseModel demo now allows more in-depth inspection
      of the model but has some issues. (No exploration below face-uses.)
    ca6c7e75