stromx  0.8.0
VariantComposite.h
1 /*
2  * Copyright 2015 Matthias Fuchs
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef STROMX_RUNTIME_VARIANTCOMPOSITE_H
18 #define STROMX_RUNTIME_VARIANTCOMPOSITE_H
19 
20 #include "stromx/runtime/VariantHandle.h"
21 
22 namespace stromx
23 {
24  namespace runtime
25  {
27  class STROMX_RUNTIME_API VariantComposite : public VariantInterface
28  {
29  public:
30  STROMX_RUNTIME_API friend const VariantHandle operator&&(const VariantHandle & lhs, const VariantHandle & rhs);
31  STROMX_RUNTIME_API friend const VariantHandle operator||(const VariantHandle & lhs, const VariantHandle & rhs);
32 
33  virtual unsigned int id() const { return 0; }
34  virtual const std::string & package() const;
35  virtual const std::string title() const;
36  virtual bool isVariant(const VariantInterface& variant) const;
37  virtual CompositeType compositeType() const { return m_type; }
38  virtual const VariantHandle lhs() const { return m_lhs; }
39  virtual const VariantHandle rhs() const { return m_rhs; }
40 
41  private:
42  VariantComposite(const CompositeType type, const VariantHandle & lhs, const VariantHandle & rhs);
43 
44  const VariantHandle m_lhs;
45  const VariantHandle m_rhs;
46  const CompositeType m_type;
47  };
48 
55  STROMX_RUNTIME_API const VariantHandle operator||(const VariantHandle & lhs, const VariantHandle & rhs);
56 
63  STROMX_RUNTIME_API const VariantHandle operator&&(const VariantHandle & lhs, const VariantHandle & rhs);
64  }
65 }
66 
67 #endif // STROMX_RUNTIME_VARIANTCOMPOSITE_H
Definition: VariantHandle.h:34
const Id2DataComposite operator &&(const Id2DataMapper &lhs, const Id2DataMapper &rhs)
Definition: Id2DataComposite.cpp:90
virtual const VariantHandle lhs() const
Definition: VariantComposite.h:38
virtual unsigned int id() const
Definition: VariantComposite.h:33
A composite expression of two variants.
Definition: VariantComposite.h:27
Abstract description of a data variant.
Definition: VariantInterface.h:40
The stromx class library.
Definition: AdjustRgbChannels.cpp:29
virtual CompositeType compositeType() const
Definition: VariantComposite.h:37
virtual const VariantHandle rhs() const
Definition: VariantComposite.h:39
const Id2DataComposite operator||(const Id2DataMapper &lhs, const Id2DataMapper &rhs)
Definition: Id2DataComposite.cpp:95