GCC Code Coverage Report


Directory: libimgdoc2/
File: libimgdoc2/src/doc/documentWrite3d.h
Date: 2025-02-03 12:41:04
Exec Total Coverage
Lines: 3 3 100.0%
Functions: 2 2 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 // SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH
2 //
3 // SPDX-License-Identifier: MIT
4
5 #pragma once
6
7 #include <utility>
8 #include <memory>
9 #include <imgdoc2.h>
10 #include "document.h"
11 #include "ITileCoordinate.h"
12
13 /// This class implements the IDocWrite3d interface, i.e. write access to a 3D image document.
14 class DocumentWrite3d : public imgdoc2::IDocWrite3d
15 {
16 private:
17 std::shared_ptr < Document> document_;
18 public:
19 64 explicit DocumentWrite3d(std::shared_ptr<Document> document) : document_(std::move(document))
20 64 {}
21
22 imgdoc2::dbIndex AddBrick(
23 const imgdoc2::ITileCoordinate* coordinate,
24 const imgdoc2::LogicalPositionInfo3D* logical_position_3d_info,
25 const imgdoc2::BrickBaseInfo* brick_base_info,
26 imgdoc2::DataTypes data_type,
27 imgdoc2::TileDataStorageType storage_type,
28 const imgdoc2::IDataObjBase* data) override;
29
30 void BeginTransaction() override;
31 void CommitTransaction() override;
32 void RollbackTransaction() override;
33
34 128 ~DocumentWrite3d() override = default;
35
36 private:
37 imgdoc2::dbIndex AddBrickInternal(
38 const imgdoc2::ITileCoordinate* coordinate,
39 const imgdoc2::LogicalPositionInfo3D* logical_position_info_3d,
40 const imgdoc2::BrickBaseInfo* brick_base_info,
41 imgdoc2::DataTypes data_type,
42 imgdoc2::TileDataStorageType storage_type,
43 const imgdoc2::IDataObjBase* data);
44
45 void AddToSpatialIndex(imgdoc2::dbIndex index, const imgdoc2::LogicalPositionInfo3D& logical_position_info);
46
47 imgdoc2::dbIndex AddBrickData(const imgdoc2::BrickBaseInfo* brick_base_info, imgdoc2::DataTypes data_type, imgdoc2::TileDataStorageType storage_type, const imgdoc2::IDataObjBase* data);
48 imgdoc2::dbIndex AddBlobData(imgdoc2::TileDataStorageType storage_type, const imgdoc2::IDataObjBase* data);
49
50 std::shared_ptr<IDbStatement> CreateInsertDataStatement(const imgdoc2::IDataObjBase* data);
51 public:
52 // no copy and no move (-> https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-copy-move-or-destructor-function-define-or-delete-them-all )
53 DocumentWrite3d() = default;
54 DocumentWrite3d(const DocumentWrite3d&) = delete; // copy constructor
55 DocumentWrite3d& operator=(const DocumentWrite3d&) = delete; // copy assignment
56 DocumentWrite3d(DocumentWrite3d&&) = delete; // move constructor
57 DocumentWrite3d& operator=(DocumentWrite3d&&) = delete; // move assignment
58 };
59