GCC Code Coverage Report


Directory: libimgdoc2/
File: libimgdoc2/inc/IDocQuery2d.h
Date: 2025-02-03 12:41:04
Exec Total Coverage
Lines: 2 2 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 #include "LogicalPositionInfo.h"
7 #include "TileBaseInfo.h"
8 #include "ITileCoordinate.h"
9 #include "LogicalPositionInfo.h"
10 #include "IDimCoordinateQueryClause.h"
11 #include "ITIleInfoQueryClause.h"
12 #include "IBlobOutput.h"
13
14 namespace imgdoc2
15 {
16 /// This interface is providing read-only access to the document.
17 class IDocQuery2d
18 {
19 public:
20 160 virtual ~IDocQuery2d() = default;
21
22 /// Reads tile information for the specified tile. There are three pieces of information which can be retrieved by this method,
23 /// namely the tile-coordinate, the logical position and the tile-blob-info. If the respective pointers are null, the information
24 /// will not be retrieved.
25 /// If the row for the specified primary key does not exist, an exception of type "imgdoc2::non_existing_tile_exception" will be
26 /// thrown.
27 ///
28 /// \param idx The primary key of the tile.
29 /// \param [out] coordinate If non-null and the operation is successful, the tile-coordinate will be put here.
30 /// \param [out] info If non-null and the operation is successful, the logical position will be put here.
31 /// \param [out] tile_blob_info If non-null and the operation is successful, the tile-blob-info will be put here.
32 virtual void ReadTileInfo(imgdoc2::dbIndex idx, imgdoc2::ITileCoordinateMutate* coordinate, imgdoc2::LogicalPositionInfo* info, imgdoc2::TileBlobInfo* tile_blob_info) = 0;
33
34 /// Query the tiles table. The two query clauses are used to filter the tiles. The first clause is used to filter the tiles by their
35 /// coordinates, the second by other "per tile data". The functor is called for each tile which matches the query. If the functor
36 /// returns false, the enumeration is canceled, and no more calls to the functor will occur. The two query clauses are
37 /// logically ANDed together.
38 /// \param clause The query clause (dealing with dimension indexes).
39 /// \param tileInfoQuery The query clause (dealing with other "per tile data").
40 /// \param func A functor which we will be called, passing in the index of tiles matching the query. If the functor returns false, the enumeration is canceled, and no
41 /// more calls to the functor will occur.
42 virtual void Query(const imgdoc2::IDimCoordinateQueryClause* clause, const imgdoc2::ITileInfoQueryClause* tileInfoQuery, const std::function<bool(imgdoc2::dbIndex)>& func) = 0;
43
44 /// Gets tiles intersecting the specified rectangle (and satisfying the other criteria).
45 /// \param rect The rectangle.
46 /// \param coordinate_clause The coordinate clause.
47 /// \param tileinfo_clause The tileinfo clause.
48 /// \param func The function.
49 virtual void GetTilesIntersectingRect(const imgdoc2::RectangleD& rect, const imgdoc2::IDimCoordinateQueryClause* coordinate_clause, const imgdoc2::ITileInfoQueryClause* tileinfo_clause, const std::function<bool(imgdoc2::dbIndex)>& func) = 0;
50
51 /// Reads the tile data for the specified tile.
52 /// \param idx The primary key of the tile for which the tile data is to be read.
53 /// \param [in] data The object which is receiving the blob data.
54 virtual void ReadTileData(imgdoc2::dbIndex idx, imgdoc2::IBlobOutput* data) = 0;
55 public:
56 // 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 )
57 80 IDocQuery2d() = default;
58 IDocQuery2d(const IDocQuery2d&) = delete; // copy constructor
59 IDocQuery2d& operator=(const IDocQuery2d&) = delete; // copy assignment
60 IDocQuery2d(IDocQuery2d&&) = delete; // move constructor
61 IDocQuery2d& operator=(IDocQuery2d&&) = delete; // move assignment
62 };
63 }
64