mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 22:50:25 -05:00
Introduce a shared base for tree-shaped folder containers that hold a list of leaf items together with a list of subcontainers of the same kind. Replaces the per-class plumbing (subcollections field, top-folder flag, add/remove/find sub-collection, factory) that is duplicated across RimSurfaceCollection, RimPolygonCollection and similar candidates. - caf::PdmNestedCollectionBase: non-templated PdmObject base exposing collection-name, add-new-subcollection, leaf-check and topmost-folder marking for generic command features and script methods. - caf::PdmNestedCollection<SelfT, ItemT>: CRTP template that owns the typed m_subCollections field and inherits the m_items array from PdmObjectCollection<ItemT>. Provides allItems(), find-sub-collection, and a typed factory hook. - RimNestedMirrorCollectionInView: view-side analogue for in-view collections that mirror a nested source collection, with orphan-sweep + find-or-create + reorder sync. Design rationale (templated vs non-templated, break-even on derived class count) lives in docs/pdm-nested-collection-design.md. No callers migrated in this commit.
45 lines
1020 B
CMake
45 lines
1020 B
CMake
project(cafProjectDataModel)
|
|
|
|
# Unity Build
|
|
if(CAF_ENABLE_UNITY_BUILD)
|
|
message("Cmake Unity build is enabled on : ${PROJECT_NAME}")
|
|
set(CMAKE_UNITY_BUILD true)
|
|
endif()
|
|
|
|
find_package(
|
|
Qt6
|
|
COMPONENTS
|
|
REQUIRED Core Gui Widgets
|
|
)
|
|
set(QT_LIBRARIES Qt6::Core Qt6::Gui Qt6::Widgets)
|
|
qt_standard_project_setup()
|
|
|
|
set(PROJECT_FILES
|
|
cafFactory.h
|
|
cafOmpMutex.h
|
|
cafPdmDocument.cpp
|
|
cafPdmDocument.h
|
|
cafPdmObjectGroup.cpp
|
|
cafPdmObjectGroup.h
|
|
cafPdmObject.cpp
|
|
cafPdmObject.h
|
|
cafPdmObjectCollection.h
|
|
cafPdmObjectCollection.inl
|
|
cafPdmNestedCollection.h
|
|
cafPdmNestedCollection.inl
|
|
cafPdmNestedCollectionBase.h
|
|
cafPdmNestedCollectionBase.cpp
|
|
)
|
|
|
|
add_library(${PROJECT_NAME} ${PROJECT_FILES})
|
|
|
|
target_link_libraries(${PROJECT_NAME} cafPdmUiCore cafPdmXml ${QT_LIBRARIES})
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
if(MSVC)
|
|
set_target_properties(
|
|
${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/W4 /wd4100 /wd4127 /wd4996"
|
|
)
|
|
endif()
|