Lumiera  0.pre.03
»edit your freedom«
mobjectfactory.hpp
Go to the documentation of this file.
1 /*
2  MOBJECTFACTORY.hpp - creating concrete MObject subclass instances
3 
4  Copyright (C) Lumiera.org
5  2008, 2010, Hermann Vosseler <Ichthyostega@web.de>
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License as
9  published by the Free Software Foundation; either version 2 of
10  the License, or (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 
21 */
22 
23 
32 #ifndef STEAM_MOBJECT_SESSION_MOBJECTFACTORY_H
33 #define STEAM_MOBJECT_SESSION_MOBJECTFACTORY_H
34 
36 #include "lib/idi/entry-id.hpp"
37 #include "lib/symbol.hpp"
38 
39 
40 namespace lumiera {
41 namespace query {
42  class DefsManager;
43 }}
44 
45 namespace steam {
46 namespace asset {
47 
48  class Clip;
49  class Media;
50  class Effect;
51  class Sequence;
52 
53  typedef lib::P<Sequence> PSequence;
54 
55  }
56 
57 namespace mobject {
58 namespace session {
59 
60  class Root;
61  class Clip;
62  class Fork;
63  class Effect;
64  class Label;
65  class Binding;
66 
67 
68 
70  {
74  static void deleterFunc (MObject* o) { delete o; }
75 
76  public:
77 
79  Placement<Clip> operator() (asset::Clip const&, asset::Media const&);
80  Placement<Clip> operator() (asset::Clip const&, vector<asset::Media const*>);
81  Placement<Fork> operator() (lib::idi::EntryID<Fork> const&);
82  Placement<Effect> operator() (asset::Effect const&);
83  Placement<Label> operator() (lib::Symbol);
84  Placement<Binding>operator() (asset::PSequence const&);
85 
87  };
88 
89 
90 
91 }}} // namespace steam::mobject::session
92 #endif
A refcounting Handle to an MObject of type MO, used to constrain or explicitly specify the location w...
Definition: trait.hpp:91
key abstraction: media-like assets
Definition: media.hpp:72
Core abstraction of the Session model: a media object.
Steam-Layer implementation namespace root.
Namespace of Session and user visible high-level objects.
Definition: sequence.hpp:74
Effect or media processing component.
MObject is the interface class for all "Media Objects".
Definition: mobject.hpp:79
Token or Atom with distinct identity.
Definition: symbol.hpp:126
Organise a collection of preconfigured default objects.
Marker types to indicate a literal string and a Symbol.
bookkeeping (Asset) view of a media clip.
Definition: asset/clip.hpp:44
Lumiera public interface.
Definition: advice.cpp:113
Bare symbolic and hash ID used for accounting of asset like entries.
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Definition: trait.hpp:80
static void deleterFunc(MObject *o)
custom deleter function allowing Placement to take ownership of MObjct instances
The asset subsystem of the Steam-Layer.
Definition: wrapperptr.hpp:44