Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
output-designation.hpp
Go to the documentation of this file.
1/*
2 OUTPUT-DESIGNATION.hpp - specifying a desired output destination
3
4 Copyright (C)
5 2010, Hermann Vosseler <Ichthyostega@web.de>
6
7  **Lumiera** is free software; you can redistribute it and/or modify it
8  under the terms of the GNU General Public License as published by the
9  Free Software Foundation; either version 2 of the License, or (at your
10  option) any later version. See the file COPYING for further details.
11
12*/
13
14
31#ifndef STEAM_MOBJECT_OUTPUT_DESIGNATION_H
32#define STEAM_MOBJECT_OUTPUT_DESIGNATION_H
33
34#include "steam/asset/pipe.hpp"
35#include "lib/hash-value.h"
36#include "lib/opaque-holder.hpp"
39
40
41namespace steam {
42namespace mobject {
43
44 namespace mp = lib::meta;
45
46 class MObject;
47
48 template<class MX>
49 class PlacementRef;
50
52
53
54
73 {
74 public:
77
78 explicit OutputDesignation (PID explicitTarget);
79 explicit OutputDesignation (RefPlacement const& indirectTarget);
80 explicit OutputDesignation (uint relative_busNr =0);
81
82 // using default copying
83
84
95 PID
96 resolve (PPipe origin)
97 {
98 return spec_->resolve (origin);
99 }
100
101 //TODO: API to retrieve target stream type
102
103
105 {
106 public:
107 virtual ~TargetSpec();
108 virtual PID resolve (PPipe origin) =0;
109 };
110
111 private:
112 enum
113 { VTABLE = sizeof(size_t)
115 + mp::maxSize<
117 };
119
120
123
124 };
125
126
127
128}} // namespace steam::mobject
129#endif /*STEAM_MOBJECT_OUTPUT_DESIGNATION_H*/
Inline buffer to hold and own an object while concealing the concrete type.
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Definition p.hpp:77
thin wrapper around a size_t hash ID used as primary key for all Asset objects.
Definition asset.hpp:98
Descriptor to denote the desired target of produced media data.
PID resolve(PPipe origin)
retrieve the direct destination this descriptor is actually pointing to.
lib::OpaqueHolder< TargetSpec, SPEC_SIZ > SpecBuff
SpecBuff spec_
Storage to hold the Target Spec inline.
Reference tag denoting a placement attached to the session.
Hash value types and utilities.
unsigned int uint
Definition integral.hpp:29
variadic sequence of types
Definition typelist.hpp:102
Metafunction " max( sizeof(T) ) for T in TYPES ".
lib::P< Pipe > PPipe
Definition pipe.hpp:43
PlacementRef< MObject > RefPlacement
frequently-used shorthand
Steam-Layer implementation namespace root.
Helper allowing type erasure while holding the actual object inline.
A "processing pipe" represented as Asset.
Metaprogramming: Helpers for manipulating lists-of-types.
Metaprogramming: simple helpers for working with lists-of-types.