File: bin_extra_def.hpp

package info (click to toggle)
cppgir 2.0%2Bgit20250629.2a7d9ce-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,220 kB
  • sloc: cpp: 16,451; ansic: 355; python: 86; makefile: 13; sh: 9
file content (43 lines) | stat: -rw-r--r-- 885 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef _GI_GST_BIN_EXTRA_DEF_HPP_
#define _GI_GST_BIN_EXTRA_DEF_HPP_

namespace gi
{
namespace repository
{
namespace Gst
{
namespace base
{
class BinExtra : public GI_GST_BIN_BASE
{
  typedef GI_GST_BIN_BASE super;

public:
  using super::add;

  // Syntax sugar add with multiple arguments to reflect a non-introspectable gst_bin_add_many
  template <typename ...Args>
  GI_INLINE_DECL void add(Gst::Element arg0, Args ...args) GI_NOEXCEPT_DECL(true) {
    super::add(gi::object_cast<Gst::Element>(arg0));
    // We don't need extra code to stop the recursion because of `using
    // super::add` above. When the number of arguments reaches 1, the base class
    // `add` will be called.
    add(args...);
  }

}; // class

#undef GI_GST_BIN_BASE
#define GI_GST_BIN_BASE base::BinExtra

} // namespace base

} // namespace Gst

} // namespace repository

} // namespace gi


#endif