Lumiera  0.pre.03
»edit your freedom«
mobject.hpp
Go to the documentation of this file.
1 /*
2  MOBJECT.hpp - Key Abstraction: A Media Object in the Session
3 
4  Copyright (C)
5  2008, 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 
30 #ifndef STEAM_MOBJECT_MOBJECT_H
31 #define STEAM_MOBJECT_MOBJECT_H
32 
33 #include "steam/common.hpp"
36 #include "steam/asset.hpp" //TODO finally not needed?
37 #include "lib/p.hpp"
38 #include "lib/time/timevalue.hpp"
39 
40 #include <boost/operators.hpp>
41 #include <string>
42 
43 
44 
45 #include "steam/assetmanager.hpp"
46 using proc_interface::IDA; //TODO finally not needed?
47 //using proc_interface::PAsset; //TODO: only temporarily
49 
50 namespace steam {
51 namespace mobject {
52 
53  using std::string;
54 
55  //NOBUG_DECLARE_FLAG (mobjectmem);
56 
57 
58  namespace session {
59  class MObjectFactory;
60  }
61 
62 
70  class MObject
71  : public Buildable,
73  boost::equality_comparable< MObject >
74  {
75  protected:
77 
78  Duration length_;
79 
80  mutable string shortID_;
81 
82  MObject() ;
83  virtual ~MObject() ;
84 
85  friend class session::MObjectFactory;
86 
87 
88  public:
90 
95  string const& shortID() const;
96 
98  virtual bool isValid() const =0;
99 
100  virtual Duration& getLength() =0;
101 
102  virtual bool operator== (const MObject& oo) const =0;
103 
104  protected:
105 
106  virtual string initShortID() const =0;
107 
108  };
109 
110 
111 
112  typedef Placement<MObject> PMO;
113 
114 
115 }} // namespace steam::mobject
116 #endif /*STEAM_MOBJECT_MOBJECT_H*/
Basic set of definitions and includes commonly used together.
Steam-Layer Interface: Asset Lookup and Organisation.
Marker Interface for classes visitable by Builder tools.
Core abstraction: placement of a media object into session context.
Any copy and copy construction prohibited.
Definition: nocopy.hpp:37
Customised refcounting smart pointer.
Facade for the Asset subsystem.
Steam-Layer implementation namespace root.
Namespace of Session and user visible high-level objects.
Definition: sequence.hpp:65
MObject is the interface class for all "Media Objects".
Definition: mobject.hpp:70
Visiting-tool mechanism configured specifically for the Builder.
bool operator==(LocatingPin const &pin1, LocatingPin const &pin2)
check for equivalent definition of a complete locating chain
Steam-Layer Interface: Assets.
Duration is the internal Lumiera time metric.
Definition: timevalue.hpp:468
static session::MObjectFactory create
Storage for the (single, static) MObject factory object.
Definition: mobject.hpp:89
a family of time value like entities and their relationships.