Ingen  0.5.1
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
Ingen::Client::ObjectModel Class Reference

Base class for all Node models (BlockModel, GraphModel, PortModel). More...

#include <ObjectModel.hpp>

+ Inheritance diagram for Ingen::Client::ObjectModel:
+ Collaboration diagram for Ingen::Client::ObjectModel:

Public Member Functions

bool is_a (const URIs::Quark &type) const
 
const Atomget_property (const Raul::URI &key) const
 Get a single property value. More...
 
void on_property (const Raul::URI &uri, const Atom &value)
 Hook called whenever a property is added. More...
 
void on_property_removed (const Raul::URI &uri, const Atom &value)
 Hook called whenever a property value is removed. More...
 
const Raul::Path & path () const
 
const Raul::Symbol & symbol () const
 
SPtr< ObjectModelparent () const
 
bool polyphonic () const
 
Nodegraph_parent () const
 
 INGEN_SIGNAL (new_child, void, SPtr< ObjectModel >)
 
 INGEN_SIGNAL (removed_child, void, SPtr< ObjectModel >)
 
 INGEN_SIGNAL (property, void, const Raul::URI &, const Atom &)
 
 INGEN_SIGNAL (property_removed, void, const Raul::URI &, const Atom &)
 
 INGEN_SIGNAL (destroyed, void)
 
 INGEN_SIGNAL (moved, void)
 
- Public Member Functions inherited from Ingen::Node
Arcs & arcs ()
 
const Arcs & arcs () const
 
virtual uint32_t num_ports () const
 
virtual Nodeport (uint32_t index) const
 
virtual const Resourceplugin () const
 
virtual LilvInstance * instance ()
 
virtual bool save_state (const std::string &dir) const
 
virtual GraphType graph_type () const =0
 
Raul::URI base_uri () const
 
- Public Member Functions inherited from Ingen::Resource
 Resource (const URIs &uris, const Raul::URI &uri)
 
Resourceoperator= (const Resource &rhs)
 
virtual const Atomset_property (const Raul::URI &uri, const Atom &value, Graph ctx=Graph::DEFAULT)
 Set (replace) a property value. More...
 
virtual const Atomset_property (const Raul::URI &uri, const URIs::Quark &value, Graph ctx=Graph::DEFAULT)
 Set (replace) a property value. More...
 
virtual bool add_property (const Raul::URI &uri, const Atom &value, Graph ctx=Graph::DEFAULT)
 Add a property value. More...
 
virtual void remove_property (const Raul::URI &uri, const Atom &value)
 Remove a property. More...
 
virtual void remove_property (const Raul::URI &uri, const URIs::Quark &value)
 Remove a property. More...
 
virtual bool has_property (const Raul::URI &uri, const Atom &value) const
 Return true iff a property is set with a specific value. More...
 
virtual bool has_property (const Raul::URI &uri, const URIs::Quark &value) const
 Return true iff a property is set with a specific value. More...
 
void set_properties (const Properties &p)
 Set (replace) several properties at once. More...
 
void add_properties (const Properties &p)
 Add several properties at once. More...
 
void remove_properties (const Properties &p)
 Remove several properties at once. More...
 
virtual void set_uri (const Raul::URI &uri)
 
Properties properties (Resource::Graph ctx) const
 Get all the properties with a given context. More...
 
const URIsuris () const
 
const Raul::URI & uri () const
 
const Propertiesproperties () const
 
Propertiesproperties ()
 

Protected Member Functions

 ObjectModel (URIs &uris, const Raul::Path &path)
 
 ObjectModel (const ObjectModel &copy)
 
virtual void set_path (const Raul::Path &p)
 
virtual void set_parent (SPtr< ObjectModel > p)
 
virtual void add_child (SPtr< ObjectModel > c)
 
virtual bool remove_child (SPtr< ObjectModel > c)
 
virtual void set (SPtr< ObjectModel > model)
 Merge the data of o with self, as much as possible. More...
 
- Protected Member Functions inherited from Ingen::Node
 Node (const URIs &uris, const Raul::Path &path)
 
- Protected Member Functions inherited from Ingen::Resource
const Atomset_property (const Raul::URI &uri, const Atom &value) const
 

Protected Attributes

SPtr< ObjectModel_parent
 
- Protected Attributes inherited from Ingen::Node
Arcs _arcs
 Graphs only.
 
- Protected Attributes inherited from Ingen::Resource
const URIs_uris
 

Friends

class ClientStore
 

Additional Inherited Members

- Public Types inherited from Ingen::Node
enum  GraphType {
  GRAPH,
  BLOCK,
  PORT
}
 
typedef std::pair< const Node *, const Node * > ArcsKey
 
typedef std::map< ArcsKey, SPtr< Arc > > Arcs
 
- Public Types inherited from Ingen::Resource
enum  Graph {
  DEFAULT,
  EXTERNAL,
  INTERNAL
}
 
- Static Public Member Functions inherited from Ingen::Node
static Raul::URI main_uri ()
 
static bool uri_is_path (const Raul::URI &uri)
 
static Raul::Path uri_to_path (const Raul::URI &uri)
 
static Raul::URI path_to_uri (const Raul::Path &path)
 
- Static Public Member Functions inherited from Ingen::Resource
static Raul::URI graph_to_uri (Graph g)
 
static Graph uri_to_graph (const char *uri)
 
static bool type (const URIs &uris, const Properties &properties, bool &graph, bool &block, bool &port, bool &is_output)
 Get the ingen type from a set of Properties. More...
 

Detailed Description

Base class for all Node models (BlockModel, GraphModel, PortModel).

There are no non-const public methods intentionally, models are not allowed to be manipulated directly by anything (but the Store) because of the asynchronous nature of engine control. To change something, use the controller (which the model probably shouldn't have a reference to but oh well, it reduces Collection Hell) and wait for the result (as a signal from this Model).

Member Function Documentation

§ get_property()

const Atom & Ingen::Client::ObjectModel::get_property ( const Raul::URI &  uri) const
virtual

Get a single property value.

This is only useful for properties with a single value. If the requested property has several values, the first will be returned.

Reimplemented from Ingen::Resource.

Referenced by Ingen::Client::PortModel::on_property().

§ on_property()

void Ingen::Client::ObjectModel::on_property ( const Raul::URI &  uri,
const Atom value 
)
virtual

Hook called whenever a property is added.

This can be used by derived classes to implement special behaviour for particular properties (e.g. ingen:value for ports).

Reimplemented from Ingen::Resource.

Reimplemented in Ingen::Client::PortModel.

Referenced by Ingen::Client::PortModel::on_property().

§ on_property_removed()

void Ingen::Client::ObjectModel::on_property_removed ( const Raul::URI &  uri,
const Atom value 
)
virtual

Hook called whenever a property value is removed.

If all values for a key are removed, then value will be the wildcard.

This can be used by derived classes to implement special behaviour for particular properties (e.g. ingen:value for ports).

Reimplemented from Ingen::Resource.

§ set()

void Ingen::Client::ObjectModel::set ( SPtr< ObjectModel o)
protectedvirtual

Merge the data of o with self, as much as possible.

This will merge the two models, but with any conflict take the value in o as correct. The paths of the two models MUST be equal.

Reimplemented in Ingen::Client::BlockModel.

References Ingen::Resource::set_property().

Referenced by Ingen::Client::PortModel::on_property(), and Ingen::Client::BlockModel::set().


The documentation for this class was generated from the following files: