libCZI
Reading CZI documents made easy
libCZI_Query.h
1 #pragma once
2 
3 namespace libCZI
4 {
7  {
8  protected:
9  IQueryCondition() = default;
10  IQueryCondition(IQueryCondition const&) = delete;
11  IQueryCondition& operator=(IQueryCondition const&) = delete;
12  public:
13  virtual ~IQueryCondition() = default;
14  };
15 
17  struct QueryOptions
18  {
22  {
23  EvaluateToTrue,
24  EvaluateToFalse,
25  Error
26  };
27 
30 
32  void SetDefault()
33  {
34  this->handlingNonExistentDimensions = HandlingOfNonExistentDimensions::EvaluateToTrue;
35  }
36  };
37 
52  class LIBCZI_API CQueryParser
53  {
54  public:
60  static std::shared_ptr<libCZI::IQueryCondition> ParseQueryString(const std::string& str, const QueryOptions* options = nullptr);
61 
67  static void EnumSubset(libCZI::ISubBlockRepository* sbRepository, const std::shared_ptr<IQueryCondition>& condition, const std::function<bool(int index, const libCZI::SubBlockInfo& info)>& funcEnum);
68 
74  static void EnumSubset(libCZI::ISubBlockRepository* sbRepository, const libCZI::IQueryCondition* condition, const std::function<bool(int index, const libCZI::SubBlockInfo& info)>& funcEnum);
75 
82  static std::vector<int> GetSubBlocksMatching(libCZI::ISubBlockRepository* sbRepository, const std::shared_ptr<libCZI::IQueryCondition>& condition, int maxResults);
83 
90  static std::vector<int> GetSubBlocksMatching(libCZI::ISubBlockRepository* sbRepository, const libCZI::IQueryCondition* condition, int maxResults);
91  };
92 }
This is an opaque object representing a query.
Definition: libCZI_Query.h:6
This structure gathers options for the query-construction.
Definition: libCZI_Query.h:17
HandlingOfNonExistentDimensions
Definition: libCZI_Query.h:21
HandlingOfNonExistentDimensions handlingNonExistentDimensions
This field describes how "non existent dimensions" are treated in a query expression.
Definition: libCZI_Query.h:29
External interfaces, classes, functions and structs are found in the namespace "libCZI".
Definition: libCZI.h:45
Definition: libCZI_Query.h:52
Interface for sub-block repository. This interface is used to access the sub-blocks in a CZI-file...
Definition: libCZI.h:428
void SetDefault()
Sets the struct to default values.
Definition: libCZI_Query.h:32
Information about a sub-block.
Definition: libCZI.h:164