Merge branch 'master' of git://git.lumiera.org/LUMIERA into second-tp-attempt
Conflicts: src/lib/condition.h src/lib/mutex.h src/lib/reccondition.h src/lib/rwlock.h tests/test.sh
|
|
@ -60,6 +60,8 @@ def setupBasicEnvironment():
|
|||
EnsurePythonVersion(2,3)
|
||||
EnsureSConsVersion(0,96,90)
|
||||
|
||||
Decider('MD5-timestamp') # detect changed files by timestamp, then do a MD5
|
||||
|
||||
opts = defineCmdlineOptions()
|
||||
env = LumieraEnvironment(options=opts
|
||||
,toolpath = [TOOLDIR]
|
||||
|
|
|
|||
|
|
@ -188,9 +188,9 @@ AC_CHECK_HEADER([execinfo.h], AC_DEFINE(HAVE_EXECINFO_H))
|
|||
PKG_CHECK_MODULES(VALGRIND, [valgrind], AC_DEFINE(HAVE_VALGRIND_H),
|
||||
AC_MSG_NOTICE([valgrind not found (optional)]))
|
||||
|
||||
PKG_CHECK_MODULES(NOBUGMT_LUMIERA, [nobugmt >= 200909.1],
|
||||
PKG_CHECK_MODULES(NOBUGMT_LUMIERA, [nobugmt >= 201001.1],
|
||||
AC_DEFINE(HAVE_NOBUGMT_H),
|
||||
AC_MSG_ERROR([NoBug pkg-config metadata missing (http://www.pipapo.org/pipawiki/NoBug)])
|
||||
AC_MSG_ERROR([Missing required nobug version (http://www.lumiera.org/nobug_manual.html)])
|
||||
)
|
||||
# END Nobug Dependancies
|
||||
|
||||
|
|
|
|||
1621
doc/devel/draw/Session.ScopeStructure-1.svg
Normal file
|
After Width: | Height: | Size: 92 KiB |
|
|
@ -23,7 +23,9 @@
|
|||
<table><tr><td><div class="element">Operation <b>resolve</b></div></td></tr></table><p>create an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.<br /></p><p>Declaration :</p><ul><li>Uml : + resolve() : ExplicitPlacement [ProcessingLayer::MObject]&</li><li>C++ : public: ExplicitPlacement [ProcessingLayer::MObject]& resolve () </li></ul><a name="refrelation144901"></a>
|
||||
<table><tr><td><div class="element">Relation <b>subject (<unidirectional association>)</b></div></td></tr></table><p>Placement acts as smart pointer<br /></p><p>Declaration :</p><ul><li>Uml : # subject : <a href="class128517.html#refclass128517"><b>MObject</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class128517.html#refclass128517"><b>MObject</b></a>* subject</li></ul><a name="refoperation134277"></a>
|
||||
<table><tr><td><div class="element">Operation <b>chain</b></div></td></tr></table><p>create and add another Placement for this media object, thus increasingly constraining the (possible) position of this object.<br /></p><p>Declaration :</p><ul><li>Uml : + chain(in style : ) : </li><li>C++ : public: chain (const & style) </li></ul><a name="refrelation145413"></a>
|
||||
<table><tr><td><div class="element">Relation <b>chain (<unidirectional association>)</b></div></td></tr></table><p>Chain of additional Placements further constraining the position of this MObject<br /></p><p>Declaration :</p><ul><li>Uml : # chain : <a href="class139909.html#refclass139909"><b>LocatingPin</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class139909.html#refclass139909"><b>LocatingPin</b></a>* chain</li></ul></div>
|
||||
<table><tr><td><div class="element">Relation <b>chain (<unidirectional association>)</b></div></td></tr></table><p>Chain of additional Placements further constraining the position of this MObject<br /></p><p>Declaration :</p><ul><li>Uml : # chain : <a href="class139909.html#refclass139909"><b>LocatingPin</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class139909.html#refclass139909"><b>LocatingPin</b></a>* chain</li></ul><a name="refrelation176773"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class152581.html#refclass152581"><b>Id</b></a></li><li>C++ : protected: <a href="class152581.html#refclass152581"><b>Id</b></a>* </li></ul><p>Stereotype: has_a</p>
|
||||
</div>
|
||||
<p>All public operations : <a href="class128645.html#refoperation134277"><b>chain</b></a> , <a href="class128645.html#refoperation128005"><b>resolve</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
23
doc/devel/uml/class152069.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class PlacementIndex</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class PlacementIndex</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152069"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class PlacementIndex : public <a href="class153989.html#refclass153989"><b>QueryResolver</b></a> </li></ul><div class="sub">
|
||||
</div>
|
||||
<p>All public operations : <a href="class153989.html#refoperation141317"><b>issue</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
20
doc/devel/uml/class152197.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Sequence</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Sequence</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152197"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Sequence </li></ul></body>
|
||||
</html>
|
||||
20
doc/devel/uml/class152325.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Binding</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Binding</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152325"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Binding </li></ul></body>
|
||||
</html>
|
||||
24
doc/devel/uml/class152453.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class PlacementRef</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class PlacementRef</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152453"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : template<class MO> class PlacementRef </li></ul><div class="sub">
|
||||
<a name="refrelation176901"></a>
|
||||
<table><tr><td><div class="element">Relation <b>id_ (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - id_ : <a href="class152581.html#refclass152581"><b>Id</b></a>, multiplicity : 1</li><li>C++ : private: <a href="class152581.html#refclass152581"><b>Id</b></a>* id_</li></ul><p>Stereotype: holds</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
22
doc/devel/uml/class152581.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Id</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Id</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152581"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Id : public <a href="class152709.html#refclass152709"><b>LuidH</b></a> </li></ul><div class="sub">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
21
doc/devel/uml/class152709.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class LuidH</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class LuidH</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152709"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class LuidH </li></ul><p>Directly inherited by : <a href="class152581.html#refclass152581"><b>Id</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class152837.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class MObjectRef</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class MObjectRef</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152837"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : template<class MO> class MObjectRef : public <a href="class152965.html#refclass152965"><b>Handle</b></a> </li></ul><div class="sub">
|
||||
<a name="refrelation177285"></a>
|
||||
<table><tr><td><div class="element">Relation <b>pRef_ (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # pRef_ : <a href="class152453.html#refclass152453"><b>PlacementRef</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class152453.html#refclass152453"><b>PlacementRef</b></a>* pRef_</li></ul><p>Stereotype: holds</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
21
doc/devel/uml/class152965.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Handle</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Handle</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass152965"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Handle </li></ul><p>Directly inherited by : <a href="class152837.html#refclass152837"><b>MObjectRef</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
20
doc/devel/uml/class153093.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class shared_ptr</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class shared_ptr</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153093"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class shared_ptr </li></ul></body>
|
||||
</html>
|
||||
20
doc/devel/uml/class153221.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class P</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class P</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153221"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class P </li></ul></body>
|
||||
</html>
|
||||
26
doc/devel/uml/class153349.html
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Scope</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Scope</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153349"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Scope </li></ul><div class="sub">
|
||||
<a name="refrelation177541"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class152453.html#refclass152453"><b>PlacementRef</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class152453.html#refclass152453"><b>PlacementRef</b></a>* </li></ul><p>Stereotype: holds</p>
|
||||
<a name="refoperation138885"></a>
|
||||
<table><tr><td><div class="element">Operation <b>getParent</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + getParent() : <a href="class153349.html#refclass153349"><b>Scope</b></a></li><li>C++ : public: <a href="class153349.html#refclass153349"><b>Scope</b></a> getParent () </li></ul></div>
|
||||
<p>All public operations : <a href="class153349.html#refoperation138885"><b>getParent</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class153477.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class ScopePath</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class ScopePath</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153477"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class ScopePath </li></ul><div class="sub">
|
||||
<a name="refrelation177669"></a>
|
||||
<table><tr><td><div class="element">Relation <b>path_ (<directional composition>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # path_ : <a href="class153349.html#refclass153349"><b>Scope</b></a></li><li>C++ : protected: <a href="class153349.html#refclass153349"><b>Scope</b></a> path_</li></ul><p>Stereotype: vector</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
doc/devel/uml/class153605.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class QueryFocus</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class QueryFocus</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153605"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class QueryFocus </li></ul><div class="sub">
|
||||
<a name="refrelation193029"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class152965.html#refclass152965"><b>Handle</b></a></li><li>C++ : protected: <a href="class152965.html#refclass152965"><b>Handle</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
23
doc/devel/uml/class153733.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class QueryFocusStack</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class QueryFocusStack</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153733"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class QueryFocusStack </li></ul><div class="sub">
|
||||
<a name="refrelation192901"></a>
|
||||
<table><tr><td><div class="element">Relation <b><directional composition></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class153477.html#refclass153477"><b>ScopePath</b></a></li><li>C++ : protected: <a href="class153477.html#refclass153477"><b>ScopePath</b></a> </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
26
doc/devel/uml/class153861.html
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class ScopeLocator</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class ScopeLocator</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153861"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class ScopeLocator </li></ul><p>Stereotype: singleton</p>
|
||||
<div class="sub">
|
||||
<a name="refrelation178181"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class153733.html#refclass153733"><b>QueryFocusStack</b></a></li><li>C++ : protected: <a href="class153733.html#refclass153733"><b>QueryFocusStack</b></a>* </li></ul><a name="refrelation178565"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class153989.html#refclass153989"><b>QueryResolver</b></a></li><li>C++ : protected: <a href="class153989.html#refclass153989"><b>QueryResolver</b></a>* </li></ul><p>Stereotype: uses</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
28
doc/devel/uml/class153989.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class QueryResolver</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class QueryResolver</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass153989"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class QueryResolver </li><li>Java : package interface QueryResolver </li><li>Php : interface QueryResolver </li></ul><p>Directly inherited by : <a href="class152069.html#refclass152069"><b>PlacementIndex</b></a> <a href="class155525.html#refclass155525"><b>ResolvingFacility</b></a> </p>
|
||||
<p>Stereotype: interface</p>
|
||||
<div class="sub">
|
||||
<a name="refoperation141317"></a>
|
||||
<table><tr><td><div class="element">Operation <b>issue</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + issue(in query : <a href="class156805.html#refclass156805"><b>Goal</b></a>) : </li><li>C++ : public: issue () </li></ul><table><tr><td><div class="element">Class <b><a href="class159237.html#refclass159237"><b>Resolution</b></a></b></div></td></tr></table>
|
||||
<a name="refrelation191621"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class159237.html#refclass159237"><b>Resolution</b></a></li><li>C++ : protected: <a href="class159237.html#refclass159237"><b>Resolution</b></a>* </li></ul></div>
|
||||
<p>All public operations : <a href="class153989.html#refoperation141317"><b>issue</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
25
doc/devel/uml/class155141.html
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Query</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Query</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass155141"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : template<class TY> class Query : public <a href="class156805.html#refclass156805"><b>Goal</b></a> </li></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class155269.html#refclass155269"><b>Cursor</b></a></b></div></td></tr></table>
|
||||
<a name="refrelation184837"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class155397.html#refclass155397"><b>IterAdapter</b></a></li><li>C++ : protected: <a href="class155397.html#refclass155397"><b>IterAdapter</b></a>* </li></ul><p>Stereotype: type-def</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
doc/devel/uml/class155269.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Cursor</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Cursor</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass155269"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : template<class TY> class Cursor : public <a href="class156933.html#refclass156933"><b>Result</b></a> </li></ul><p>nested in <a href="class155141.html#refclass155141"><b>Query</b></a></p>
|
||||
<div class="sub">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
24
doc/devel/uml/class155397.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class IterAdapter</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class IterAdapter</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass155397"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : template<class POS, class CON> class IterAdapter </li></ul><div class="sub">
|
||||
<a name="refrelation188805"></a>
|
||||
<table><tr><td><div class="element">Relation <b>source_ (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # source_ : <a href="class159237.html#refclass159237"><b>Resolution</b></a></li><li>C++ : protected: <a href="class159237.html#refclass159237"><b>Resolution</b></a>* source_</li></ul><a name="refrelation188933"></a>
|
||||
<table><tr><td><div class="element">Relation <b>pos_ (<unidirectional association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # pos_ : <a href="class155269.html#refclass155269"><b>Cursor</b></a></li><li>C++ : protected: <a href="class155269.html#refclass155269"><b>Cursor</b></a>* pos_</li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
25
doc/devel/uml/class155525.html
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class ResolvingFacility</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class ResolvingFacility</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass155525"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class ResolvingFacility : public <a href="class153989.html#refclass153989"><b>QueryResolver</b></a> </li></ul><div class="sub">
|
||||
<a name="refrelation186117"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class158085.html#refclass158085"><b>ResultSet</b></a></li><li>C++ : protected: <a href="class158085.html#refclass158085"><b>ResultSet</b></a>* </li></ul><p>Stereotype: produce</p>
|
||||
</div>
|
||||
<p>All public operations : <a href="class153989.html#refoperation141317"><b>issue</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
26
doc/devel/uml/class156805.html
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Goal</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Goal</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass156805"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Goal </li></ul><p>Directly inherited by : <a href="class155141.html#refclass155141"><b>Query</b></a> </p>
|
||||
<p>Stereotype: interface</p>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class156933.html#refclass156933"><b>Result</b></a></b></div></td></tr></table>
|
||||
<a name="refrelation182533"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class156933.html#refclass156933"><b>Result</b></a></li><li>C++ : protected: <a href="class156933.html#refclass156933"><b>Result</b></a>* </li></ul></div>
|
||||
</body>
|
||||
</html>
|
||||
22
doc/devel/uml/class156933.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Result</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Result</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass156933"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Result </li></ul><p>Directly inherited by : <a href="class155269.html#refclass155269"><b>Cursor</b></a> </p>
|
||||
<p>nested in <a href="class156805.html#refclass156805"><b>Goal</b></a></p>
|
||||
</body>
|
||||
</html>
|
||||
23
doc/devel/uml/class158085.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class ResultSet</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class ResultSet</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass158085"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class ResultSet : public <a href="class159237.html#refclass159237"><b>Resolution</b></a> </li></ul><div class="sub">
|
||||
</div>
|
||||
<p>All public operations : <a href="class159237.html#refoperation140037"><b>isValid</b></a> , <a href="class159237.html#refoperation140165"><b>nextResult</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
28
doc/devel/uml/class159237.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class Resolution</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class Resolution</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass159237"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Resolution </li></ul><p>Directly inherited by : <a href="class158085.html#refclass158085"><b>ResultSet</b></a> </p>
|
||||
<p>nested in <a href="class153989.html#refclass153989"><b>QueryResolver</b></a></p>
|
||||
<div class="sub">
|
||||
<a name="refoperation140037"></a>
|
||||
<table><tr><td><div class="element">Operation <b>isValid</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + isValid(in pos : <a href="class156933.html#refclass156933"><b>Result</b></a>) : bool</li><li>C++ : public: bool isValid () </li></ul><a name="refoperation140165"></a>
|
||||
<table><tr><td><div class="element">Operation <b>nextResult</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + nextResult() : <a href="class156933.html#refclass156933"><b>Result</b></a></li><li>C++ : public: <a href="class156933.html#refclass156933"><b>Result</b></a> nextResult () </li></ul><a name="refrelation190469"></a>
|
||||
<table><tr><td><div class="element">Relation <b><unidirectional association></b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # : <a href="class156933.html#refclass156933"><b>Result</b></a></li><li>C++ : protected: <a href="class156933.html#refclass156933"><b>Result</b></a>* </li></ul></div>
|
||||
<p>All public operations : <a href="class159237.html#refoperation140037"><b>isValid</b></a> , <a href="class159237.html#refoperation140165"><b>nextResult</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -23,15 +23,19 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram134021" target = "projectFrame"><b>Command structure</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128645" target = "projectFrame"><b>Controller Entities</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128181" target = "projectFrame"><b>File Mapping</b></a></td><td></td><td>Shows whats used to access Frames</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram136325" target = "projectFrame"><b>Focus of Query</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td></td><td>Lumiera Exception hierarchy</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128309" target = "projectFrame"><b>In Memory Database</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130949" target = "projectFrame"><b>interface components</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132869" target = "projectFrame"><b>Layer Separation Interface</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130437" target = "projectFrame"><b>Media-Asset Relations</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram136581" target = "projectFrame"><b>MObjectRef</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131077" target = "projectFrame"><b>Proc-Asset Relations</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram137733" target = "projectFrame"><b>Query Interface</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128389" target = "projectFrame"><b>Render Entities</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131973" target = "projectFrame"><b>Render Mechanics</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram131461" target = "projectFrame"><b>Rules access</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram136453" target = "projectFrame"><b>Session backbone</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128133" target = "projectFrame"><b>Session structure</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132357" target = "projectFrame"><b>StateAdapter composition</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132485" target = "projectFrame"><b>Stream Type Framework</b></a></td><td></td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class136581.html#refclass136581" target = "projectFrame"><b>AssetManager</b></a></td><td>boundary</td><td>Facade for the Asset subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129925.html#refclass129925" target = "projectFrame"><b>Auto</b></a></td><td></td><td>Automation data for some parameter (i.e. a time varying function)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143109.html#refclass143109" target = "projectFrame"><b>BackendCache</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152325.html#refclass152325" target = "projectFrame"><b>Binding</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144133.html#refclass144133" target = "projectFrame"><b>BuffHandle</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144005.html#refclass144005" target = "projectFrame"><b>BuffTable</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134021.html#refclass134021" target = "projectFrame"><b>Buildable</b></a></td><td>interface</td><td></td></tr>
|
||||
|
|
@ -52,6 +53,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class130821.html#refclass130821" target = "projectFrame"><b>ConManager</b></a></td><td></td><td>Connection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal "data pull" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130309.html#refclass130309" target = "projectFrame"><b>ControllerFacade</b></a></td><td>boundary</td><td>Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155269.html#refclass155269" target = "projectFrame"><b>Cursor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138245.html#refclass138245" target = "projectFrame"><b>Dataset</b></a></td><td></td><td>meta asset describing a collection of control data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138373.html#refclass138373" target = "projectFrame"><b>DB</b></a></td><td></td><td>Implementation of the registry holding all Asset instances known to the Asset Manager subsystem. As of 8/2007 implemented by a hashtable.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141445.html#refclass141445" target = "projectFrame"><b>DefaultsManager</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -83,18 +85,23 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class128949.html#refclass128949" target = "projectFrame"><b>FrameDescriptor</b></a></td><td>interface</td><td>A FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128225.html#refclass128225" target = "projectFrame"><b>FrameReference</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class133637.html#refclass133637" target = "projectFrame"><b>GLBuf</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class156805.html#refclass156805" target = "projectFrame"><b>Goal</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152965.html#refclass152965" target = "projectFrame"><b>Handle</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class148613.html#refclass148613" target = "projectFrame"><b>HandlingPattern</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152581.html#refclass152581" target = "projectFrame"><b>Id</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145029.html#refclass145029" target = "projectFrame"><b>ImplFacade</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class147205.html#refclass147205" target = "projectFrame"><b>InstanceHandle</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134789.html#refclass134789" target = "projectFrame"><b>Interpolator</b></a></td><td></td><td>Provides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136069.html#refclass136069" target = "projectFrame"><b>Invalid</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144261.html#refclass144261" target = "projectFrame"><b>Invocation</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155397.html#refclass155397" target = "projectFrame"><b>IterAdapter</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129669.html#refclass129669" target = "projectFrame"><b>Label</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131973.html#refclass131973" target = "projectFrame"><b>Link</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139909.html#refclass139909" target = "projectFrame"><b>LocatingPin</b></a></td><td></td><td>An element with value semantics, which actually implements the placement of some MObject by positioning it in some way.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128522.html#refclass128522" target = "projectFrame"><b>Lock</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128650.html#refclass128650" target = "projectFrame"><b>Lock</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135685.html#refclass135685" target = "projectFrame"><b>Logic</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152709.html#refclass152709" target = "projectFrame"><b>LuidH</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132357.html#refclass132357" target = "projectFrame"><b>Mask</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136709.html#refclass136709" target = "projectFrame"><b>Media</b></a></td><td></td><td>key abstraction: media-like assets</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139525.html#refclass139525" target = "projectFrame"><b>MediaAccessFacade</b></a></td><td>boundary</td><td>provides functions for querying (opening) a media file, detecting the channels or streams found within this file, etc. Delegating to the actual backend functions</td></tr>
|
||||
|
|
@ -103,18 +110,22 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class137093.html#refclass137093" target = "projectFrame"><b>Meta</b></a></td><td></td><td>key abstraction: metadata and organisational asset</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152837.html#refclass152837" target = "projectFrame"><b>MObjectRef</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146053.html#refclass146053" target = "projectFrame"><b>Monitor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class148741.html#refclass148741" target = "projectFrame"><b>Mutation</b></a></td><td>func</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td></td><td>I provided a reworked Mutex class in my Cinelerra2 repository</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a></td><td></td><td>This Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143365.html#refclass143365" target = "projectFrame"><b>NodeWiring</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143493.html#refclass143493" target = "projectFrame"><b>OperationBase</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153221.html#refclass153221" target = "projectFrame"><b>P</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class149637.html#refclass149637" target = "projectFrame"><b>ParamAccessor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a></td><td></td><td>Descriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a></td><td>interface</td><td>A facility to get the actual value of a plugin/effect parameter</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130437.html#refclass130437" target = "projectFrame"><b>PathManager</b></a></td><td></td><td>While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138117.html#refclass138117" target = "projectFrame"><b>Pipe</b></a></td><td></td><td>structural asset representing a basic building block within the high level model: a port for building a processing chain and generating media output</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128645.html#refclass128645" target = "projectFrame"><b>Placement</b></a></td><td>interface</td><td>used to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative). <br />Placement at the same time acts as (refcounting) smart pointer for accessing the MObject.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152069.html#refclass152069" target = "projectFrame"><b>PlacementIndex</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152453.html#refclass152453" target = "projectFrame"><b>PlacementRef</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145925.html#refclass145925" target = "projectFrame"><b>PlayControl</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146437.html#refclass146437" target = "projectFrame"><b>PlayheadCursor</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140421.html#refclass140421" target = "projectFrame"><b>Plug</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -131,9 +142,13 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class144901.html#refclass144901" target = "projectFrame"><b>Prototype</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146693.html#refclass146693" target = "projectFrame"><b>Proxy</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143749.html#refclass143749" target = "projectFrame"><b>PullInput</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155141.html#refclass155141" target = "projectFrame"><b>Query</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143621.html#refclass143621" target = "projectFrame"><b>QueryCache</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153605.html#refclass153605" target = "projectFrame"><b>QueryFocus</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153733.html#refclass153733" target = "projectFrame"><b>QueryFocusStack</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140677.html#refclass140677" target = "projectFrame"><b>QueryHandler</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141189.html#refclass141189" target = "projectFrame"><b>QueryHandlerImpl</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153989.html#refclass153989" target = "projectFrame"><b>QueryResolver</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143877.html#refclass143877" target = "projectFrame"><b>ReadSource</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class149509.html#refclass149509" target = "projectFrame"><b>RedoLast</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129413.html#refclass129413" target = "projectFrame"><b>RelativeLocation</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -142,18 +157,27 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class131461.html#refclass131461" target = "projectFrame"><b>RenderGraph</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130949.html#refclass130949" target = "projectFrame"><b>RenderState</b></a></td><td></td><td>Encapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146181.html#refclass146181" target = "projectFrame"><b>RenderTask</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class159237.html#refclass159237" target = "projectFrame"><b>Resolution</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140933.html#refclass140933" target = "projectFrame"><b>ResolverBase</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155525.html#refclass155525" target = "projectFrame"><b>ResolvingFacility</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class156933.html#refclass156933" target = "projectFrame"><b>Result</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class158085.html#refclass158085" target = "projectFrame"><b>ResultSet</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129205.html#refclass129205" target = "projectFrame"><b>Scheduler</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153349.html#refclass153349" target = "projectFrame"><b>Scope</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153861.html#refclass153861" target = "projectFrame"><b>ScopeLocator</b></a></td><td>singleton</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153477.html#refclass153477" target = "projectFrame"><b>ScopePath</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class147333.html#refclass147333" target = "projectFrame"><b>Segmentation</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refclass134277" target = "projectFrame"><b>SegmentationTool</b></a></td><td></td><td>Tool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. "Constant" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>Seq</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152197.html#refclass152197" target = "projectFrame"><b>Sequence</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146309.html#refclass146309" target = "projectFrame"><b>Sequence</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141829.html#refclass141829" target = "projectFrame"><b>Serializer</b></a></td><td>actor</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146821.html#refclass146821" target = "projectFrame"><b>ServiceImpl</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a></td><td></td><td>Primary Interface for all editing tasks.<br />The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128005.html#refclass128005" target = "projectFrame"><b>SessionImpl</b></a></td><td></td><td>Implementation class for the Session interface</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139781.html#refclass139781" target = "projectFrame"><b>SessManager</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153093.html#refclass153093" target = "projectFrame"><b>shared_ptr</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138885.html#refclass138885" target = "projectFrame"><b>SimpleClip</b></a></td><td></td><td>Elementary clip consisting of only one media stream</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128906.html#refclass128906" target = "projectFrame"><b>SmartPointer</b></a></td><td>auxiliary</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class133765.html#refclass133765" target = "projectFrame"><b>Source</b></a></td><td></td><td>Source Node: represents a media source to pull data from.</td></tr>
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
<a href="class136581.html#refclass136581" target = "projectFrame"><b>AssetManager</b></a><br />
|
||||
<a href="class129925.html#refclass129925" target = "projectFrame"><b>Auto</b></a><br />
|
||||
<a href="class143109.html#refclass143109" target = "projectFrame"><b>BackendCache</b></a><br />
|
||||
<a href="class152325.html#refclass152325" target = "projectFrame"><b>Binding</b></a><br />
|
||||
<a href="class144133.html#refclass144133" target = "projectFrame"><b>BuffHandle</b></a><br />
|
||||
<a href="class144005.html#refclass144005" target = "projectFrame"><b>BuffTable</b></a><br />
|
||||
<a href="class134021.html#refclass134021" target = "projectFrame"><b>Buildable</b></a><br />
|
||||
|
|
@ -53,6 +54,7 @@
|
|||
<a href="class130821.html#refclass130821" target = "projectFrame"><b>ConManager</b></a><br />
|
||||
<a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a><br />
|
||||
<a href="class130309.html#refclass130309" target = "projectFrame"><b>ControllerFacade</b></a><br />
|
||||
<a href="class155269.html#refclass155269" target = "projectFrame"><b>Cursor</b></a><br />
|
||||
<a href="class138245.html#refclass138245" target = "projectFrame"><b>Dataset</b></a><br />
|
||||
<a href="class138373.html#refclass138373" target = "projectFrame"><b>DB</b></a><br />
|
||||
<a href="class141445.html#refclass141445" target = "projectFrame"><b>DefaultsManager</b></a><br />
|
||||
|
|
@ -84,18 +86,23 @@
|
|||
<a href="class128949.html#refclass128949" target = "projectFrame"><b>FrameDescriptor</b></a><br />
|
||||
<a href="class128225.html#refclass128225" target = "projectFrame"><b>FrameReference</b></a><br />
|
||||
<a href="class133637.html#refclass133637" target = "projectFrame"><b>GLBuf</b></a><br />
|
||||
<a href="class156805.html#refclass156805" target = "projectFrame"><b>Goal</b></a><br />
|
||||
<a href="class152965.html#refclass152965" target = "projectFrame"><b>Handle</b></a><br />
|
||||
<a href="class148613.html#refclass148613" target = "projectFrame"><b>HandlingPattern</b></a><br />
|
||||
<a href="class152581.html#refclass152581" target = "projectFrame"><b>Id</b></a><br />
|
||||
<a href="class145029.html#refclass145029" target = "projectFrame"><b>ImplFacade</b></a><br />
|
||||
<a href="class147205.html#refclass147205" target = "projectFrame"><b>InstanceHandle</b></a><br />
|
||||
<a href="class134789.html#refclass134789" target = "projectFrame"><b>Interpolator</b></a><br />
|
||||
<a href="class136069.html#refclass136069" target = "projectFrame"><b>Invalid</b></a><br />
|
||||
<a href="class144261.html#refclass144261" target = "projectFrame"><b>Invocation</b></a><br />
|
||||
<a href="class155397.html#refclass155397" target = "projectFrame"><b>IterAdapter</b></a><br />
|
||||
<a href="class129669.html#refclass129669" target = "projectFrame"><b>Label</b></a><br />
|
||||
<a href="class131973.html#refclass131973" target = "projectFrame"><b>Link</b></a><br />
|
||||
<a href="class139909.html#refclass139909" target = "projectFrame"><b>LocatingPin</b></a><br />
|
||||
<a href="class128522.html#refclass128522" target = "projectFrame"><b>Lock</b></a><br />
|
||||
<a href="class128650.html#refclass128650" target = "projectFrame"><b>Lock</b></a><br />
|
||||
<a href="class135685.html#refclass135685" target = "projectFrame"><b>Logic</b></a><br />
|
||||
<a href="class152709.html#refclass152709" target = "projectFrame"><b>LuidH</b></a><br />
|
||||
<a href="class132357.html#refclass132357" target = "projectFrame"><b>Mask</b></a><br />
|
||||
<a href="class136709.html#refclass136709" target = "projectFrame"><b>Media</b></a><br />
|
||||
<a href="class139525.html#refclass139525" target = "projectFrame"><b>MediaAccessFacade</b></a><br />
|
||||
|
|
@ -104,18 +111,22 @@
|
|||
<a href="class137093.html#refclass137093" target = "projectFrame"><b>Meta</b></a><br />
|
||||
<a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a><br />
|
||||
<a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a><br />
|
||||
<a href="class152837.html#refclass152837" target = "projectFrame"><b>MObjectRef</b></a><br />
|
||||
<a href="class146053.html#refclass146053" target = "projectFrame"><b>Monitor</b></a><br />
|
||||
<a href="class148741.html#refclass148741" target = "projectFrame"><b>Mutation</b></a><br />
|
||||
<a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a><br />
|
||||
<a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a><br />
|
||||
<a href="class143365.html#refclass143365" target = "projectFrame"><b>NodeWiring</b></a><br />
|
||||
<a href="class143493.html#refclass143493" target = "projectFrame"><b>OperationBase</b></a><br />
|
||||
<a href="class153221.html#refclass153221" target = "projectFrame"><b>P</b></a><br />
|
||||
<a href="class149637.html#refclass149637" target = "projectFrame"><b>ParamAccessor</b></a><br />
|
||||
<a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a><br />
|
||||
<a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a><br />
|
||||
<a href="class130437.html#refclass130437" target = "projectFrame"><b>PathManager</b></a><br />
|
||||
<a href="class138117.html#refclass138117" target = "projectFrame"><b>Pipe</b></a><br />
|
||||
<a href="class128645.html#refclass128645" target = "projectFrame"><b>Placement</b></a><br />
|
||||
<a href="class152069.html#refclass152069" target = "projectFrame"><b>PlacementIndex</b></a><br />
|
||||
<a href="class152453.html#refclass152453" target = "projectFrame"><b>PlacementRef</b></a><br />
|
||||
<a href="class145925.html#refclass145925" target = "projectFrame"><b>PlayControl</b></a><br />
|
||||
<a href="class146437.html#refclass146437" target = "projectFrame"><b>PlayheadCursor</b></a><br />
|
||||
<a href="class140421.html#refclass140421" target = "projectFrame"><b>Plug</b></a><br />
|
||||
|
|
@ -132,9 +143,13 @@
|
|||
<a href="class144901.html#refclass144901" target = "projectFrame"><b>Prototype</b></a><br />
|
||||
<a href="class146693.html#refclass146693" target = "projectFrame"><b>Proxy</b></a><br />
|
||||
<a href="class143749.html#refclass143749" target = "projectFrame"><b>PullInput</b></a><br />
|
||||
<a href="class155141.html#refclass155141" target = "projectFrame"><b>Query</b></a><br />
|
||||
<a href="class143621.html#refclass143621" target = "projectFrame"><b>QueryCache</b></a><br />
|
||||
<a href="class153605.html#refclass153605" target = "projectFrame"><b>QueryFocus</b></a><br />
|
||||
<a href="class153733.html#refclass153733" target = "projectFrame"><b>QueryFocusStack</b></a><br />
|
||||
<a href="class140677.html#refclass140677" target = "projectFrame"><b>QueryHandler</b></a><br />
|
||||
<a href="class141189.html#refclass141189" target = "projectFrame"><b>QueryHandlerImpl</b></a><br />
|
||||
<a href="class153989.html#refclass153989" target = "projectFrame"><b>QueryResolver</b></a><br />
|
||||
<a href="class143877.html#refclass143877" target = "projectFrame"><b>ReadSource</b></a><br />
|
||||
<a href="class149509.html#refclass149509" target = "projectFrame"><b>RedoLast</b></a><br />
|
||||
<a href="class129413.html#refclass129413" target = "projectFrame"><b>RelativeLocation</b></a><br />
|
||||
|
|
@ -143,18 +158,27 @@
|
|||
<a href="class131461.html#refclass131461" target = "projectFrame"><b>RenderGraph</b></a><br />
|
||||
<a href="class130949.html#refclass130949" target = "projectFrame"><b>RenderState</b></a><br />
|
||||
<a href="class146181.html#refclass146181" target = "projectFrame"><b>RenderTask</b></a><br />
|
||||
<a href="class159237.html#refclass159237" target = "projectFrame"><b>Resolution</b></a><br />
|
||||
<a href="class140933.html#refclass140933" target = "projectFrame"><b>ResolverBase</b></a><br />
|
||||
<a href="class155525.html#refclass155525" target = "projectFrame"><b>ResolvingFacility</b></a><br />
|
||||
<a href="class156933.html#refclass156933" target = "projectFrame"><b>Result</b></a><br />
|
||||
<a href="class158085.html#refclass158085" target = "projectFrame"><b>ResultSet</b></a><br />
|
||||
<a href="class129205.html#refclass129205" target = "projectFrame"><b>Scheduler</b></a><br />
|
||||
<a href="class153349.html#refclass153349" target = "projectFrame"><b>Scope</b></a><br />
|
||||
<a href="class153861.html#refclass153861" target = "projectFrame"><b>ScopeLocator</b></a><br />
|
||||
<a href="class153477.html#refclass153477" target = "projectFrame"><b>ScopePath</b></a><br />
|
||||
<a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a><br />
|
||||
<a href="class147333.html#refclass147333" target = "projectFrame"><b>Segmentation</b></a><br />
|
||||
<a href="class134277.html#refclass134277" target = "projectFrame"><b>SegmentationTool</b></a><br />
|
||||
<a href="class128133.html#refclass128133" target = "projectFrame"><b>Seq</b></a><br />
|
||||
<a href="class152197.html#refclass152197" target = "projectFrame"><b>Sequence</b></a><br />
|
||||
<a href="class146309.html#refclass146309" target = "projectFrame"><b>Sequence</b></a><br />
|
||||
<a href="class141829.html#refclass141829" target = "projectFrame"><b>Serializer</b></a><br />
|
||||
<a href="class146821.html#refclass146821" target = "projectFrame"><b>ServiceImpl</b></a><br />
|
||||
<a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a><br />
|
||||
<a href="class128005.html#refclass128005" target = "projectFrame"><b>SessionImpl</b></a><br />
|
||||
<a href="class139781.html#refclass139781" target = "projectFrame"><b>SessManager</b></a><br />
|
||||
<a href="class153093.html#refclass153093" target = "projectFrame"><b>shared_ptr</b></a><br />
|
||||
<a href="class138885.html#refclass138885" target = "projectFrame"><b>SimpleClip</b></a><br />
|
||||
<a href="class128906.html#refclass128906" target = "projectFrame"><b>SmartPointer</b></a><br />
|
||||
<a href="class133765.html#refclass133765" target = "projectFrame"><b>Source</b></a><br />
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
BIN
doc/devel/uml/fig136325.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
doc/devel/uml/fig136453.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
doc/devel/uml/fig136581.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
doc/devel/uml/fig137733.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
|
@ -147,7 +147,7 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Artifact <b>Lumiera</b></div></td></tr></table>
|
||||
<p>the main executable to be built<br /></p>
|
||||
<p>Depends on <a href="index.html#refpackage129413"><b>common</b></a></p><p>Depends on <a href="index.html#refpackage129797"><b>gui</b></a></p><p>Depends on <a href="index.html#refpackage129669"><b>proc</b></a></p><p>Depends on <a href="index.html#refpackage129541"><b>backend</b></a></p><p>Stereotype: executable</p>
|
||||
<p><i>executable</i> associated with : <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>rendergraph</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>buildertool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a></p>
|
||||
<p><i>executable</i> associated with : <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>rendergraph</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>buildertool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a></p>
|
||||
<a name="refartifact128133"></a>
|
||||
<table><tr><td><div class="element">Artifact <b>main</b></div></td></tr></table>
|
||||
<p>Stereotype: source</p>
|
||||
|
|
@ -949,8 +949,11 @@ undo</pre></li></ul><div class="sub">
|
|||
<a name="refpackage128261"></a>
|
||||
<h2 class ="package">2.3 Package MObject</h2>
|
||||
<div class="sub">
|
||||
<a name="refpackage132229"></a>
|
||||
<h3 class ="package">2.3.1 Package Session</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass view128005"></a>
|
||||
<h3 class ="view">2.3.1 Class View Session</h3>
|
||||
<h4 class ="view">2.3.1.1 Class View Session parts</h4>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram128133"></a>
|
||||
<p align="center"><img src="fig128133.png" alt="" /></p>
|
||||
|
|
@ -987,17 +990,55 @@ undo</pre></li></ul><div class="sub">
|
|||
<table><tr><td><div class="element">Class <b><a href="class134789.html#refclass134789"><b>Interpolator</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class139909.html#refclass139909"><b>LocatingPin</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view131973"></a>
|
||||
<h4 class ="view">2.3.1.2 Class View Object ref</h4>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram136581"></a>
|
||||
<p align="center"><img src="fig136581.png" alt="" /></p>
|
||||
<p align="center"><b>MObjectRef</b></p><p><br /></p><p><br /></p>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152453.html#refclass152453"><b>PlacementRef</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152581.html#refclass152581"><b>Id</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152709.html#refclass152709"><b>LuidH</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152837.html#refclass152837"><b>MObjectRef</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view132101"></a>
|
||||
<h4 class ="view">2.3.1.3 Class View Datastructure</h4>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram136453"></a>
|
||||
<p align="center"><img src="fig136453.png" alt="" /></p>
|
||||
<p align="center"><b>Session backbone</b></p><p><br /></p><p><br /></p>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152069.html#refclass152069"><b>PlacementIndex</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152197.html#refclass152197"><b>Sequence</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class152325.html#refclass152325"><b>Binding</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage132357"></a>
|
||||
<h3 class ="package">2.3.2 Package Placement</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass view131845"></a>
|
||||
<h4 class ="view">2.3.2.1 Class View Scopes</h4>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram136325"></a>
|
||||
<p align="center"><img src="fig136325.png" alt="" /></p>
|
||||
<p align="center"><b>Focus of Query</b></p><p><br /></p><p><br /></p>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153349.html#refclass153349"><b>Scope</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153477.html#refclass153477"><b>ScopePath</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153605.html#refclass153605"><b>QueryFocus</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153733.html#refclass153733"><b>QueryFocusStack</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153861.html#refclass153861"><b>ScopeLocator</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage128901"></a>
|
||||
<h3 class ="package">2.3.2 Package Builder</h3>
|
||||
<h3 class ="package">2.3.3 Package Builder</h3>
|
||||
<div class="sub">
|
||||
<a name="refclass view128261"></a>
|
||||
<h4 class ="view">2.3.2.1 Class View Builder Workings</h4>
|
||||
<h4 class ="view">2.3.3.1 Class View Builder Workings</h4>
|
||||
<div class="sub">
|
||||
<a name="refcollaboration diagram128517"></a>
|
||||
<p align="center"><img src="fig128517.png" alt="" /></p>
|
||||
<p align="center"><b>build process</b></p><p><br /></p><p><br /></p>
|
||||
<p>This figure shows the process of building and starting a RenderEngine<br /></p><a name="refactivity128005"></a>
|
||||
<h4 class ="activity">2.3.2.1.1 Activity building the Engine</h4>
|
||||
<h4 class ="activity">2.3.3.1.1 Activity building the Engine</h4>
|
||||
<p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><div class="sub">
|
||||
<a name="refactivity diagram129413"></a>
|
||||
<p align="center"><img src="fig129413.png" alt="" /></p>
|
||||
|
|
@ -1011,7 +1052,7 @@ undo</pre></li></ul><div class="sub">
|
|||
<p>Defined in <a href="index.html#refactivity128005"><b>building the Engine</b></a></p><p>Pre Condition :</p><ul></ul><p>Post Condition :</p><ul></ul><p>Behavior :</p><ul></ul><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#refopaque activity action128645"><b>configure Tools</b></a> To <a href="index.html#reffork activity node129029"><b>fork activity node</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refexpansion region128133"></a>
|
||||
<h4 class ="expansionregion">2.3.2.1.1.1 Expansion region establish partitioning</h4>
|
||||
<h4 class ="expansionregion">2.3.3.1.1.1 Expansion region establish partitioning</h4>
|
||||
<div class="sub">
|
||||
<a name="refopaque activity action128773"></a>
|
||||
<table><tr><td><div class="element">Opaque activity action <b>define segment</b></div></td></tr></table>
|
||||
|
|
@ -1038,7 +1079,7 @@ undo</pre></li></ul><div class="sub">
|
|||
<p>Defined in <a href="index.html#refactivity128005"><b>building the Engine</b></a></p><div class="sub">
|
||||
<table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#reffork activity node129029"><b>fork activity node</b></a> To <a href="index.html#refactivity object128005"><b>segment Tool</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul><table><tr><td><div class="element">Flow <b><flow></div></td></tr></table><p>From <a href="index.html#reffork activity node129029"><b>fork activity node</b></a> To <a href="index.html#refactivity object128261"><b>build Tool</b></a></p><p>Weight :</p><ul></ul><p>Guard :</p><ul></ul><p>Selection :</p><ul></ul><p>Transformation :</p><ul></ul></div>
|
||||
<a name="refexpansion region128261"></a>
|
||||
<h4 class ="expansionregion">2.3.2.1.1.2 Expansion region build Processors</h4>
|
||||
<h4 class ="expansionregion">2.3.3.1.1.2 Expansion region build Processors</h4>
|
||||
<div class="sub">
|
||||
<a name="refactivity object128261"></a>
|
||||
<table><tr><td><div class="element">Activity object <b>build Tool</b></div></td></tr></table>
|
||||
|
|
@ -1086,7 +1127,7 @@ undo</pre></li></ul><div class="sub">
|
|||
</div>
|
||||
</div>
|
||||
<a name="refuse case view128261"></a>
|
||||
<h3 class ="view">2.3.3 Use Case View config examples</h3>
|
||||
<h3 class ="view">2.3.4 Use Case View config examples</h3>
|
||||
<div class="sub">
|
||||
<a name="refobject diagram131333"></a>
|
||||
<p align="center"><img src="fig131333.png" alt="" /></p>
|
||||
|
|
@ -1474,6 +1515,15 @@ undo</pre></li></ul><div class="sub">
|
|||
<table><tr><td><div class="element">Class <b><a href="class141317.html#refclass141317"><b>TypeHandler<Pipe></b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class141445.html#refclass141445"><b>DefaultsManager</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class141573.html#refclass141573"><b>DefaultsRegistry</b></a></b></div></td></tr></table>
|
||||
<a name="refclass diagram137733"></a>
|
||||
<p align="center"><img src="fig137733.png" alt="" /></p>
|
||||
<p align="center"><b>Query Interface</b></p><p><br /></p><p><br /></p>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153989.html#refclass153989"><b>QueryResolver</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class156805.html#refclass156805"><b>Goal</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class155141.html#refclass155141"><b>Query</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class155397.html#refclass155397"><b>IterAdapter</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class155525.html#refclass155525"><b>ResolvingFacility</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class158085.html#refclass158085"><b>ResultSet</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refuse case view128389"></a>
|
||||
<h3 class ="view">5.3.3 Use Case View query use</h3>
|
||||
|
|
@ -1503,8 +1553,18 @@ undo</pre></li></ul><div class="sub">
|
|||
<a name="refclass instance135941"></a>
|
||||
<table><tr><td><div class="element">Class instance <b>predicate impl</div></td></tr></table><p>type :<a href="class140805.html#refclass140805"><b>TypeHandler</b></a></p></div>
|
||||
</div>
|
||||
<a name="refpackage132485"></a>
|
||||
<h2 class ="package">5.4 Package Containers</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass view132229"></a>
|
||||
<h3 class ="view">5.4.1 Class View Custom holders</h3>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class152965.html#refclass152965"><b>Handle</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153221.html#refclass153221"><b>P</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refclass view128773"></a>
|
||||
<h2 class ="view">5.4 Class View error</h2>
|
||||
<h2 class ="view">5.5 Class View error</h2>
|
||||
<div class="sub">
|
||||
<a name="refclass diagram130181"></a>
|
||||
<p align="center"><img src="fig130181.png" alt="" /></p>
|
||||
|
|
@ -1518,7 +1578,7 @@ undo</pre></li></ul><div class="sub">
|
|||
<table><tr><td><div class="element">Class <b><a href="class136325.html#refclass136325"><b>std::exception</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128645"></a>
|
||||
<h2 class ="view">5.5 Class View Service Components</h2>
|
||||
<h2 class ="view">5.6 Class View Service Components</h2>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class140293.html#refclass140293"><b>Applicable</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class140037.html#refclass140037"><b>Tool</b></a></b></div></td></tr></table>
|
||||
|
|
@ -1528,7 +1588,7 @@ undo</pre></li></ul><div class="sub">
|
|||
<table><tr><td><div class="element">Class <b><a href="class135429.html#refclass135429"><b>Appconfig</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128138"></a>
|
||||
<h2 class ="view">5.6 Class View Posix Threads Abstraction</h2>
|
||||
<h2 class ="view">5.7 Class View Posix Threads Abstraction</h2>
|
||||
<p>C++ wrapers for pthreads<br /></p>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class128138.html#refclass128138"><b>Thread</b></a></b></div></td></tr></table>
|
||||
|
|
@ -1536,9 +1596,10 @@ undo</pre></li></ul><div class="sub">
|
|||
<table><tr><td><div class="element">Class <b><a href="class128394.html#refclass128394"><b>Mutex</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
<a name="refclass view128266"></a>
|
||||
<h2 class ="view">5.7 Class View SmartPointers</h2>
|
||||
<h2 class ="view">5.8 Class View SmartPointers</h2>
|
||||
<div class="sub">
|
||||
<table><tr><td><div class="element">Class <b><a href="class128906.html#refclass128906"><b>SmartPointer</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class153093.html#refclass153093"><b>shared_ptr</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129797" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129669" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130309" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131205" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
|
|
@ -28,10 +28,10 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131461" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130693" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129029" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131717" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130949" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131077" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130949" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130053" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128901" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130565" target = "projectFrame"><b><flow></b></a></td><td>transition</td><td></td></tr>
|
||||
|
|
@ -45,20 +45,20 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128645" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128901" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128261" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128389" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129925" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129285" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128773" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130565" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129413" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129029" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128389" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130565" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129925" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129669" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129157" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition128773" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129413" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129285" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130693" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130437" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130309" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130437" target = "projectFrame"><b><transition></b></a></td><td>transition</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -57,8 +57,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128901" target = "projectFrame"><b>Assets</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129285" target = "projectFrame"><b>ATTACH</b></a></td><td>attribute</td><td>attach subject to anchor (e.g. an effect to a clip)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance137221" target = "projectFrame"><b>au1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131845" target = "projectFrame"><b>aud_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128773" target = "projectFrame"><b>aud_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131845" target = "projectFrame"><b>aud_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131205" target = "projectFrame"><b>audio</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128389" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128901" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent diagram130693" target = "projectFrame"><b>backend-components</b></a></td><td>component diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143109.html#refclass143109" target = "projectFrame"><b>BackendCache</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129157" target = "projectFrame"><b>BackendLayer</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152325.html#refclass152325" target = "projectFrame"><b>Binding</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144133.html#refclass144133" target = "projectFrame"><b>BuffHandle</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class144005.html#refclass144005" target = "projectFrame"><b>BuffTable</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128901" target = "projectFrame"><b>build</b></a></td><td>operation</td><td></td></tr>
|
||||
|
|
@ -37,8 +38,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact131077" target = "projectFrame"><b>buildable</b></a></td><td>artifact</td><td>marker interface denoting any MObject able to be treated by Tools</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128517" target = "projectFrame"><b>buildEngine</b></a></td><td>operation</td><td>Main Operation of the Builder: create a render engine for a given part of the timeline</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128005" target = "projectFrame"><b>Builder</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>package</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128901" target = "projectFrame"><b>Builder</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>package</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132868" target = "projectFrame"><b>Builder Entities</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram129285" target = "projectFrame"><b>Builder Tool (Visitor)</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128261" target = "projectFrame"><b>Builder Workings</b></a></td><td>class view</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -34,39 +34,39 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129633" target = "projectFrame"><b>checked_in</b></a></td><td>relation</td><td>checked_in objects are subject of cache aging and must be not in use</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129290" target = "projectFrame"><b>checked_out</b></a></td><td>relation</td><td>this list keeps all mappings which are in use, and thus prevents them from Cache aging</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refchoice pseudo state128133" target = "projectFrame"><b>choice pseudo state</b></a></td><td>choice pseudo state</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135813" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134789" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134661" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134917" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135301" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135557" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135685" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134661" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135429" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134789" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134917" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135813" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132357" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130693" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130309" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130181" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133765" target = "projectFrame"><b>clear</b></a></td><td>operation</td><td>clear current session contents <br />without resetting overall session config.<br />Afterwards, the session will contain only one <br />empty EDL, while all Assets are retained.<br /></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent131077" target = "projectFrame"><b>client code</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137349.html#refclass137349" target = "projectFrame"><b>Clip</b></a></td><td>class</td><td>bookkeeping (asset) view of a media clip.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact136325" target = "projectFrame"><b>clip</b></a></td><td>artifact</td><td>bookkeeping (asset) view of a media clip.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129413" target = "projectFrame"><b>clip</b></a></td><td>artifact</td><td>a Media Clip</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact136325" target = "projectFrame"><b>clip</b></a></td><td>artifact</td><td>bookkeeping (asset) view of a media clip.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128901.html#refclass128901" target = "projectFrame"><b>Clip</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128901" target = "projectFrame"><b>clips</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute133125" target = "projectFrame"><b>closure</b></a></td><td>attribute</td><td></td></tr>
|
||||
|
|
@ -109,6 +109,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action129029" target = "projectFrame"><b>connect</b></a></td><td>opaque activity action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139397" target = "projectFrame"><b>constraint</b></a></td><td>artifact</td><td>LocatingPin representing an directive by the user that<br />must not be violated</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage132485" target = "projectFrame"><b>Containers</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>control</b></a></td><td>package</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />and the Proc-Layer dispatcher</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Control</b></a></td><td>package</td><td>Command handling, Proc-Layer dispatcher, controller and administrative facilities</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128261" target = "projectFrame"><b>Controller</b></a></td><td>component</td><td></td></tr>
|
||||
|
|
@ -124,6 +125,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance136453" target = "projectFrame"><b>current</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation144773" target = "projectFrame"><b>current</b></a></td><td>relation</td><td>Standard access path to get at the current session via the Session Manager, which acts as a "PImpl" smart pointer</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation135941" target = "projectFrame"><b>currFrame</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155269.html#refclass155269" target = "projectFrame"><b>Cursor</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view132229" target = "projectFrame"><b>Custom holders</b></a></td><td>class view</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class138245.html#refclass138245" target = "projectFrame"><b>Dataset</b></a></td><td>class</td><td>meta asset describing a collection of control data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137733" target = "projectFrame"><b>dataset</b></a></td><td>artifact</td><td>meta asset describing a collection of control data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation136965" target = "projectFrame"><b>datasrc</b></a></td><td>relation</td><td>The predecessor in a processing pipeline, i.e. a source to get data to be processed</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view132101" target = "projectFrame"><b>Datastructure</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138373.html#refclass138373" target = "projectFrame"><b>DB</b></a></td><td>class</td><td>Implementation of the registry holding all Asset instances known to the Asset Manager subsystem. As of 8/2007 implemented by a hashtable.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137861" target = "projectFrame"><b>db</b></a></td><td>artifact</td><td>registry holding known Asset instances.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation150917" target = "projectFrame"><b>defaults</b></a></td><td>relation</td><td></td></tr>
|
||||
|
|
@ -32,8 +33,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128138" target = "projectFrame"><b>design</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128005" target = "projectFrame"><b>design</b></a></td><td>package</td><td>All things concering the big picture.<br />Not a real code package, rather a container for design drafts, specifications, decisions.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case128261" target = "projectFrame"><b>detect Channels</b></a></td><td>use case</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action128389" target = "projectFrame"><b>determine Render Params</b></a></td><td>opaque activity action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refexpansion region128005" target = "projectFrame"><b>determine Render Params</b></a></td><td>expansion region</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action128389" target = "projectFrame"><b>determine Render Params</b></a></td><td>opaque activity action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132613" target = "projectFrame"><b>devnull</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128773" target = "projectFrame"><b>Dispatcher</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134917" target = "projectFrame"><b>dispatchOp</b></a></td><td>operation</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -39,9 +39,10 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128773" target = "projectFrame"><b>fixture</b></a></td><td>artifact</td><td>the (low level) representation of the EDL with concrete placement data</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128517" target = "projectFrame"><b>Fixture</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128261.html#refclass128261" target = "projectFrame"><b>Fixture</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram136325" target = "projectFrame"><b>Focus of Query</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reffork activity node129029" target = "projectFrame"><b>fork activity node</b></a></td><td>fork activity node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reffork pseudo state128261" target = "projectFrame"><b>fork pseudo state</b></a></td><td>fork pseudo state</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reffork pseudo state128389" target = "projectFrame"><b>fork pseudo state</b></a></td><td>fork pseudo state</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#reffork pseudo state128261" target = "projectFrame"><b>fork pseudo state</b></a></td><td>fork pseudo state</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128821.html#refclass128821" target = "projectFrame"><b>Frame</b></a></td><td>class</td><td>Frames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128645" target = "projectFrame"><b>Frame</b></a></td><td>node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class133253.html#refclass133253" target = "projectFrame"><b>Frame</b></a></td><td>class</td><td>TODO: how to relate to Cehteh's Frame entity in the Backend?<br />The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date</td></tr>
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133637" target = "projectFrame"><b>getFixture</b></a></td><td>operation</td><td>While the session can be comprised of several EDLs, <br />there is only one Fixture, which represents the actual<br />configuration of all Objects to be rendered</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128181" target = "projectFrame"><b>getFrame</b></a></td><td>operation</td><td>mode = READ, WRITE, ...</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133125" target = "projectFrame"><b>getID</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation138885" target = "projectFrame"><b>getParent</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132101" target = "projectFrame"><b>getParents</b></a></td><td>operation</td><td>List of entities this asset depends on or requires to be functional. May be empty. The head of this list can be considered the primary prerequisite</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128645" target = "projectFrame"><b>getPlaylistForRender</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128389" target = "projectFrame"><b>getStateProxy</b></a></td><td>operation</td><td></td></tr>
|
||||
|
|
@ -49,6 +50,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation160005" target = "projectFrame"><b>globalBusses</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133253" target = "projectFrame"><b>glpipe</b></a></td><td>artifact</td><td>specialized connection element for handling OpenGL implementation details</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133637" target = "projectFrame"><b>glrender</b></a></td><td>artifact</td><td>Representation of a OpenGL accellerated Video render process</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class156805.html#refclass156805" target = "projectFrame"><b>Goal</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128389" target = "projectFrame"><b>graph</b></a></td><td>node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131077" target = "projectFrame"><b>groups</b></a></td><td>attribute</td><td>additional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129797" target = "projectFrame"><b>gui</b></a></td><td>package</td><td>sourcecode package<br /><br />User Interface classes go here</td></tr>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152965.html#refclass152965" target = "projectFrame"><b>Handle</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128225" target = "projectFrame"><b>handle</b></a></td><td>relation</td><td>weak pointer</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128737" target = "projectFrame"><b>handles</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128225" target = "projectFrame"><b>handles_available</b></a></td><td>attribute</td><td>initialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.<br />Else this number is decremented for each new filehandle used and incremented for any one explicitly freed.</td></tr>
|
||||
|
|
@ -24,8 +25,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td>class diagram</td><td>Lumiera Exception hierarchy</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133381" target = "projectFrame"><b>howtoProc</b></a></td><td>operation</td><td>@return descriptor how to build a render pipeline corresponding to this media</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132741" target = "projectFrame"><b>hub</b></a></td><td>artifact</td><td>special ProcNode used to build data distributing connections</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133253" target = "projectFrame"><b>HUE</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133893" target = "projectFrame"><b>HUE</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133253" target = "projectFrame"><b>HUE</b></a></td><td>class instance</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130437" target = "projectFrame"><b>id</b></a></td><td>attribute</td><td>Asset primary key.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute132613" target = "projectFrame"><b>ID</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refentry point pseudo state128005" target = "projectFrame"><b>ID</b></a></td><td>entry point pseudo state</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152581.html#refclass152581" target = "projectFrame"><b>Id</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation176901" target = "projectFrame"><b>id_</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145029.html#refclass145029" target = "projectFrame"><b>ImplFacade</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128309" target = "projectFrame"><b>In Memory Database</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity action pin128133" target = "projectFrame"><b>inFixture</b></a></td><td>activity action pin</td><td></td></tr>
|
||||
|
|
@ -40,6 +42,9 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation138373" target = "projectFrame"><b>ipo</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132869" target = "projectFrame"><b>isActive</b></a></td><td>operation</td><td>weather this asset is swithced on and consequently included in the fixture and participates in rendering</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation136325" target = "projectFrame"><b>isCalculated</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation141317" target = "projectFrame"><b>issue</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation140037" target = "projectFrame"><b>isValid</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155397.html#refclass155397" target = "projectFrame"><b>IterAdapter</b></a></td><td>class</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class128650.html#refclass128650" target = "projectFrame"><b>Lock</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135685.html#refclass135685" target = "projectFrame"><b>Logic</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131333" target = "projectFrame"><b>longDesc</b></a></td><td>attribute</td><td>user visible qualification of the thing, unit or concept represented by this asset. perferably "in one line". To be localized.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152709.html#refclass152709" target = "projectFrame"><b>LuidH</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128005" target = "projectFrame"><b>Lumiera</b></a></td><td>artifact</td><td>the main executable to be built</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>lumiera</b></a></td><td>package</td><td></td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130181" target = "projectFrame"><b>mobject</b></a></td><td>package</td><td>sourcecode package<br /><br />MObject Subsystem<br />including the Session (EDL), Builder and Processing Controller</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128261" target = "projectFrame"><b>MObject</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram136581" target = "projectFrame"><b>MObjectRef</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152837.html#refclass152837" target = "projectFrame"><b>MObjectRef</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146053.html#refclass146053" target = "projectFrame"><b>Monitor</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram131333" target = "projectFrame"><b>multichannel clip</b></a></td><td>object diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class148741.html#refclass148741" target = "projectFrame"><b>Mutation</b></a></td><td>class</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute132741" target = "projectFrame"><b>name</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case129157" target = "projectFrame"><b>need sub object</b></a></td><td>use case</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation146053" target = "projectFrame"><b>next</b></a></td><td>relation</td><td>next additional LocatingPin, if any</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation140165" target = "projectFrame"><b>nextResult</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance136197" target = "projectFrame"><b>node1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance136581" target = "projectFrame"><b>node2</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance136837" target = "projectFrame"><b>node3</b></a></td><td>class instance</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -17,11 +17,12 @@
|
|||
|
||||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view131973" target = "projectFrame"><b>Object ref</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129029" target = "projectFrame"><b>offset</b></a></td><td>attribute</td><td>Offset the actual position by this (time) value relative to the anchor point. TODO: Representation?</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143493.html#refclass143493" target = "projectFrame"><b>OperationBase</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130821" target = "projectFrame"><b>org</b></a></td><td>attribute</td><td>origin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core Lumiera codebase is "lumi".</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131333" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134405" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131333" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133125" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147973" target = "projectFrame"><b>outPort</b></a></td><td>relation</td><td>the Port this MObject wants to be conected to</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent diagram128005" target = "projectFrame"><b>Overview</b></a></td><td>component diagram</td><td>This drawing shows the top level compoents and relations</td></tr>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153221.html#refclass153221" target = "projectFrame"><b>P</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation137989" target = "projectFrame"><b>param</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class149637.html#refclass149637" target = "projectFrame"><b>ParamAccessor</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134405" target = "projectFrame"><b>parameter</b></a></td><td>artifact</td><td>representation of an automatable effect/plugin parameter</td></tr>
|
||||
|
|
@ -25,6 +26,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a></td><td>class</td><td>A facility to get the actual value of a plugin/effect parameter</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation175109" target = "projectFrame"><b>params</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation137861" target = "projectFrame"><b>params</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation177669" target = "projectFrame"><b>path_</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130437.html#refclass130437" target = "projectFrame"><b>PathManager</b></a></td><td>class</td><td>While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact131717" target = "projectFrame"><b>pathmanager</b></a></td><td>artifact</td><td>Manager for deciding the actual render strategy</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138117.html#refclass138117" target = "projectFrame"><b>Pipe</b></a></td><td>class</td><td>structural asset representing a basic building block within the high level model: a port for building a processing chain and generating media output</td></tr>
|
||||
|
|
@ -32,7 +34,10 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation132613" target = "projectFrame"><b>pipes</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147717" target = "projectFrame"><b>pipes</b></a></td><td>relation</td><td>the global ports (busses) of the session</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129029" target = "projectFrame"><b>placement</b></a></td><td>artifact</td><td>Key Abstraction: a way to place and locate a Media Object</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage132357" target = "projectFrame"><b>Placement</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128645.html#refclass128645" target = "projectFrame"><b>Placement</b></a></td><td>class</td><td>used to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative). <br />Placement at the same time acts as (refcounting) smart pointer for accessing the MObject.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152069.html#refclass152069" target = "projectFrame"><b>PlacementIndex</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152453.html#refclass152453" target = "projectFrame"><b>PlacementRef</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129413" target = "projectFrame"><b>play</b></a></td><td>operation</td><td>TODO: will probably be handled differently (see Cehteh)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class145925.html#refclass145925" target = "projectFrame"><b>PlayControl</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146437.html#refclass146437" target = "projectFrame"><b>PlayheadCursor</b></a></td><td>class</td><td></td></tr>
|
||||
|
|
@ -44,9 +49,11 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133125" target = "projectFrame"><b>pluginadapter</b></a></td><td>artifact</td><td>Adapter for integrating various Effect processors in the render pipeline</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128517" target = "projectFrame"><b>pnode</b></a></td><td>node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131461" target = "projectFrame"><b>point</b></a></td><td>attribute</td><td>identifying the point where the nodes should be attached</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation188933" target = "projectFrame"><b>pos_</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128138" target = "projectFrame"><b>Posix Threads Abstraction</b></a></td><td>class view</td><td>C++ wrapers for pthreads</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation152581" target = "projectFrame"><b>predecessors</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135941" target = "projectFrame"><b>predicate impl</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation177285" target = "projectFrame"><b>pRef_</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129077.html#refclass129077" target = "projectFrame"><b>Prefetch</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class137605.html#refclass137605" target = "projectFrame"><b>Preview</b></a></td><td>class</td><td>alternative version of the media data, probably with lower resolution</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact136965" target = "projectFrame"><b>preview</b></a></td><td>artifact</td><td>alternative version of the media data, probably with lower resolution</td></tr>
|
||||
|
|
|
|||
|
|
@ -18,11 +18,16 @@
|
|||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view129157" target = "projectFrame"><b>query</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155141.html#refclass155141" target = "projectFrame"><b>Query</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram137733" target = "projectFrame"><b>Query Interface</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent view128261" target = "projectFrame"><b>Query System overview</b></a></td><td>component view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case view128389" target = "projectFrame"><b>query use</b></a></td><td>use case view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class143621.html#refclass143621" target = "projectFrame"><b>QueryCache</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153605.html#refclass153605" target = "projectFrame"><b>QueryFocus</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153733.html#refclass153733" target = "projectFrame"><b>QueryFocusStack</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140677.html#refclass140677" target = "projectFrame"><b>QueryHandler</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141189.html#refclass141189" target = "projectFrame"><b>QueryHandlerImpl</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153989.html#refclass153989" target = "projectFrame"><b>QueryResolver</b></a></td><td>class</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -45,11 +45,15 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class146181.html#refclass146181" target = "projectFrame"><b>RenderTask</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128773" target = "projectFrame"><b>repr</b></a></td><td>attribute</td><td>human readable representation of the condition characterizing this allocaton, e.g. "t >= 10"</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133893" target = "projectFrame"><b>reset</b></a></td><td>operation</td><td>reset all session config and <br />start with a pristine default session.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class159237.html#refclass159237" target = "projectFrame"><b>Resolution</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128005" target = "projectFrame"><b>resolve</b></a></td><td>operation</td><td>create an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation135301" target = "projectFrame"><b>resolve</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation135429" target = "projectFrame"><b>resolve</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent130693" target = "projectFrame"><b>Resolver</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140933.html#refclass140933" target = "projectFrame"><b>ResolverBase</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class155525.html#refclass155525" target = "projectFrame"><b>ResolvingFacility</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class156933.html#refclass156933" target = "projectFrame"><b>Result</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class158085.html#refclass158085" target = "projectFrame"><b>ResultSet</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation135557" target = "projectFrame"><b>retrieve</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131973" target = "projectFrame"><b>rootCause</b></a></td><td>operation</td><td>If this exception was caused by a chain of further exceptions,<br />return the first one registered in this throw sequence.<br />This works only, if every exceptions thrown as a consequence<br />of another exception is propperly constructed by passing<br />the original exception to the constructor</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent130821" target = "projectFrame"><b>Rule Base</b></a></td><td>component</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129157" target = "projectFrame"><b>SAMETIME</b></a></td><td>attribute</td><td>place subject at the sime time as the anchor</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134149" target = "projectFrame"><b>save</b></a></td><td>operation</td><td>create a complete, serialized representation<br />of the current session config and contents.<br />@todo how to serialize, prameters, return value?</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129205.html#refclass129205" target = "projectFrame"><b>Scheduler</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153349.html#refclass153349" target = "projectFrame"><b>Scope</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153861.html#refclass153861" target = "projectFrame"><b>ScopeLocator</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153477.html#refclass153477" target = "projectFrame"><b>ScopePath</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view131845" target = "projectFrame"><b>Scopes</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation177797" target = "projectFrame"><b>scopes</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate128133" target = "projectFrame"><b>scratch</b></a></td><td>state</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135045" target = "projectFrame"><b>segment</b></a></td><td>artifact</td><td>Segment of the Timeline.<br />Used at the moment (7/07) for partitioning the timeline/fixture into segments<br />to be rendered by a specialized render node network for each, without the need<br />to change any connections within a given segment. <br />Note this concept may be superfluos alltogether; is a draft and the real<br />use still needs to be worked out...</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a></td><td>class</td><td></td></tr>
|
||||
|
|
@ -31,15 +36,18 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128133" target = "projectFrame"><b>segments</b></a></td><td>activity object</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation139013" target = "projectFrame"><b>segments</b></a></td><td>relation</td><td>the partitioning of the Timeline to be created by this tool.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>Seq</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class152197.html#refclass152197" target = "projectFrame"><b>Sequence</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146309.html#refclass146309" target = "projectFrame"><b>Sequence</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class141829.html#refclass141829" target = "projectFrame"><b>Serializer</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128645" target = "projectFrame"><b>Service Components</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class146821.html#refclass146821" target = "projectFrame"><b>ServiceImpl</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128133" target = "projectFrame"><b>Session</b></a></td><td>component</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact138757" target = "projectFrame"><b>session</b></a></td><td>artifact</td><td>Interface: the session edited by the user</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128005" target = "projectFrame"><b>Session</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130437" target = "projectFrame"><b>session</b></a></td><td>package</td><td>sourcecode package<br /><br />Everything concerning the EDL and Session, within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage132229" target = "projectFrame"><b>Session</b></a></td><td>package</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a></td><td>class</td><td>Primary Interface for all editing tasks.<br />The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram136453" target = "projectFrame"><b>Session backbone</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128005" target = "projectFrame"><b>Session parts</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128133" target = "projectFrame"><b>Session structure</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128517" target = "projectFrame"><b>sessionimpl</b></a></td><td>artifact</td><td>holds the complete session data to be edited by the user</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128005.html#refclass128005" target = "projectFrame"><b>SessionImpl</b></a></td><td>class</td><td>Implementation class for the Session interface</td></tr>
|
||||
|
|
@ -47,6 +55,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class139781.html#refclass139781" target = "projectFrame"><b>SessManager</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action128005" target = "projectFrame"><b>setup Build Params</b></a></td><td>opaque activity action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action128133" target = "projectFrame"><b>setup StateProxy</b></a></td><td>opaque activity action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153093.html#refclass153093" target = "projectFrame"><b>shared_ptr</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131205" target = "projectFrame"><b>shortDesc</b></a></td><td>attribute</td><td>user visible Name-ID. To be localized.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact138373" target = "projectFrame"><b>simpleclip</b></a></td><td>artifact</td><td>Elementary clip (single media stream only)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class138885.html#refclass138885" target = "projectFrame"><b>SimpleClip</b></a></td><td>class</td><td>Elementary clip consisting of only one media stream</td></tr>
|
||||
|
|
@ -57,21 +66,22 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class133765.html#refclass133765" target = "projectFrame"><b>Source</b></a></td><td>class</td><td>Source Node: represents a media source to pull data from.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134277" target = "projectFrame"><b>source</b></a></td><td>artifact</td><td>Representation of a Media source</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refdeployment diagram129797" target = "projectFrame"><b>Source Overview</b></a></td><td>deployment diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation188805" target = "projectFrame"><b>source_</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129413" target = "projectFrame"><b>start</b></a></td><td>attribute</td><td>begin of the timerange covered by this processor</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129925" target = "projectFrame"><b>start</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132741.html#refclass132741" target = "projectFrame"><b>State</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128773" target = "projectFrame"><b>State</b></a></td><td>node</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135941.html#refclass135941" target = "projectFrame"><b>State</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation152709" target = "projectFrame"><b>state</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action129157" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128133" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128773" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128261" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128005" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td>try to fetch existing definition</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action129029" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128261" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128389" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128517" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128645" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128773" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action129029" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action128133" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refstate action129157" target = "projectFrame"><b>state action</b></a></td><td>state action</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class142597.html#refclass142597" target = "projectFrame"><b>StateAdapter</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram132357" target = "projectFrame"><b>StateAdapter composition</b></a></td><td>class diagram</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class142469.html#refclass142469" target = "projectFrame"><b>StateProxy</b></a></td><td>class</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class137989.html#refclass137989" target = "projectFrame"><b>Track</b></a></td><td>class</td><td>structural asset holding the configuration of a track in the EDL</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128389" target = "projectFrame"><b>track</b></a></td><td>attribute</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147589" target = "projectFrame"><b>track</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128901" target = "projectFrame"><b>track</b></a></td><td>artifact</td><td>A grouping device within the EDL. The corresponding Placement<br />by which this Track object is refered defines fallback placing<br />properties to be used by all objects placed on this track in<br />case they don't specify more concrete placements.<br />Typically, tracks are used do make default Port connections,<br />define a layer or pan for sound and for for disabling groups<br />of clips. Note tracks are grouped in a tree like fashion.<br /></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137477" target = "projectFrame"><b>track</b></a></td><td>artifact</td><td>structural asset holding the configuration of a track in the EDL</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128901" target = "projectFrame"><b>track</b></a></td><td>artifact</td><td>A grouping device within the EDL. The corresponding Placement<br />by which this Track object is refered defines fallback placing<br />properties to be used by all objects placed on this track in<br />case they don't specify more concrete placements.<br />Typically, tracks are used do make default Port connections,<br />define a layer or pan for sound and for for disabling groups<br />of clips. Note tracks are grouped in a tree like fashion.<br /></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147333" target = "projectFrame"><b>track</b></a></td><td>relation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128389.html#refclass128389" target = "projectFrame"><b>Track</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation142341" target = "projectFrame"><b>tracks</b></a></td><td>relation</td><td>elementary media assets comprising this compound</td></tr>
|
||||
|
|
@ -45,9 +45,9 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134405" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129797" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td>This operation is to be overloaded for the specific MObject subclasses to be treated.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130437" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130693" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130565" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130309" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130693" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130181" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129925" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130053" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -21,21 +21,21 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class133509.html#refclass133509" target = "projectFrame"><b>VFrame</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134021" target = "projectFrame"><b>vframe</b></a></td><td>artifact</td><td>a buffer and render process holding a Video frame</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance137093" target = "projectFrame"><b>vid1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128645" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129413" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131717" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134021" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131717" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129413" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129925" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128645" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133765" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132741" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131077" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133765" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134533" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132997" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133637" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129157" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134277" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128517" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130949" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134277" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129157" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133637" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132997" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128517" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140165.html#refclass140165" target = "projectFrame"><b>Visitable</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130949" target = "projectFrame"><b>visitor</b></a></td><td>package</td><td>sub-namespace for visitor library implementation</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139141" target = "projectFrame"><b>visitor</b></a></td><td>artifact</td><td>Acyclic Visitor library</td></tr>
|
||||
|
|
|
|||
|
|
@ -20,12 +20,13 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128133" target = "projectFrame"><b>Asset</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129541" target = "projectFrame"><b>backend</b></a></td><td>src</td><td>sourcecode package<br /><br />Data backend classes here...</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129157" target = "projectFrame"><b>BackendLayer</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128901" target = "projectFrame"><b>Builder</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>src</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128901" target = "projectFrame"><b>Builder</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128645" target = "projectFrame"><b>codegen</b></a></td><td></td><td>This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129413" target = "projectFrame"><b>common</b></a></td><td>src</td><td>sourcecode package<br /><br />Common library and helper classes</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128517" target = "projectFrame"><b>CommonLib</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage131077" target = "projectFrame"><b>ConfigQuery</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage132485" target = "projectFrame"><b>Containers</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>control</b></a></td><td>src</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />and the Proc-Layer dispatcher</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Control</b></a></td><td></td><td>Command handling, Proc-Layer dispatcher, controller and administrative facilities</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128138" target = "projectFrame"><b>design</b></a></td><td></td><td></td></tr>
|
||||
|
|
@ -37,10 +38,12 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>lumiera</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130181" target = "projectFrame"><b>mobject</b></a></td><td>src</td><td>sourcecode package<br /><br />MObject Subsystem<br />including the Session (EDL), Builder and Processing Controller</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128261" target = "projectFrame"><b>MObject</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage132357" target = "projectFrame"><b>Placement</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129669" target = "projectFrame"><b>proc</b></a></td><td>src</td><td>sourcecode package<br /><br />All classes belonging to the (middle) processing layer</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129285" target = "projectFrame"><b>ProcessingLayer</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128389" target = "projectFrame"><b>RenderEngine</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130437" target = "projectFrame"><b>session</b></a></td><td>src</td><td>sourcecode package<br /><br />Everything concerning the EDL and Session, within the MObject Subsystem</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage132229" target = "projectFrame"><b>Session</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129925" target = "projectFrame"><b>tool</b></a></td><td>src</td><td>sourcecode package<br /><br />Tools and Utilities <br />(separate from the main cinelrra binary)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130949" target = "projectFrame"><b>visitor</b></a></td><td></td><td>sub-namespace for visitor library implementation</td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class139653.html#refoperation133637"><b>getFixture</b></a></td><td><a href="class139653.html#refclass139653"><b>Session</b></a></td><td>While the session can be comprised of several EDLs, <br />there is only one Fixture, which represents the actual<br />configuration of all Objects to be rendered</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128181.html#refoperation128181"><b>getFrame</b></a></td><td><a href="class128181.html#refclass128181"><b>File</b></a></td><td>mode = READ, WRITE, ...</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136581.html#refoperation133125"><b>getID</b></a></td><td><a href="class136581.html#refclass136581"><b>AssetManager</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153349.html#refoperation138885"><b>getParent</b></a></td><td><a href="class153349.html#refclass153349"><b>Scope</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refoperation132101"><b>getParents</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>List of entities this asset depends on or requires to be functional. May be empty. The head of this list can be considered the primary prerequisite</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128261.html#refoperation128645"><b>getPlaylistForRender</b></a></td><td><a href="class128261.html#refclass128261"><b>Fixture</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class130949.html#refoperation128389"><b>getStateProxy</b></a></td><td><a href="class130949.html#refclass130949"><b>RenderState</b></a></td><td></td></tr>
|
||||
|
|
@ -53,9 +54,12 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class136709.html#refoperation133381"><b>howtoProc</b></a></td><td><a href="class136709.html#refclass136709"><b>Media</b></a></td><td>@return descriptor how to build a render pipeline corresponding to this media</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refoperation132869"><b>isActive</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>weather this asset is swithced on and consequently included in the fixture and participates in rendering</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132741.html#refoperation136325"><b>isCalculated</b></a></td><td><a href="class132741.html#refclass132741"><b>State</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class153989.html#refoperation141317"><b>issue</b></a></td><td><a href="class153989.html#refclass153989"><b>QueryResolver</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class159237.html#refoperation140037"><b>isValid</b></a></td><td><a href="class159237.html#refclass159237"><b>Resolution</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class136581.html#refoperation132613"><b>known</b></a></td><td><a href="class136581.html#refclass136581"><b>AssetManager</b></a></td><td>@return true if the given id is registered in the internal asset DB</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class139781.html#refoperation134021"><b>load</b></a></td><td><a href="class139781.html#refclass139781"><b>SessManager</b></a></td><td>replace the current session by a new<br />session loaded from serialized state.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140805.html#refoperation135173"><b>make</b></a></td><td><a href="class140805.html#refclass140805"><b>TypeHandler</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class159237.html#refoperation140165"><b>nextResult</b></a></td><td><a href="class159237.html#refclass159237"><b>Resolution</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131333.html#refoperation129413"><b>play</b></a></td><td><a href="class131333.html#refclass131333"><b>RenderEngine</b></a></td><td>TODO: will probably be handled differently (see Cehteh)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131717.html#refoperation136069"><b>process</b></a></td><td><a href="class131717.html#refclass131717"><b>ProcNode</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131717.html#refoperation135685"><b>pull</b></a></td><td><a href="class131717.html#refclass131717"><b>ProcNode</b></a></td><td></td></tr>
|
||||
|
|
@ -70,13 +74,13 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class139781.html#refoperation134149"><b>save</b></a></td><td><a href="class139781.html#refclass139781"><b>SessManager</b></a></td><td>create a complete, serialized representation<br />of the current session config and contents.<br />@todo how to serialize, prameters, return value?</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class140293.html#refoperation134405"><b>treat</b></a></td><td><a href="class140293.html#refclass140293"><b>Applicable</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134149.html#refoperation129797"><b>treat</b></a></td><td><a href="class134149.html#refclass134149"><b>BuilderTool</b></a></td><td>This operation is to be overloaded for the specific MObject subclasses to be treated.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130565"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130437"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130309"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130565"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130693"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation129925"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130053"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130181"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130053"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129333.html#refoperation128010"><b>useFile</b></a></td><td><a href="class129333.html#refclass129333"><b>FileProvider</b></a></td><td>Announces that the application intends to use this file with mode (READ|WRITE|READWRITE)</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129333.html#refoperation128138"><b>useTemporaryStorage</b></a></td><td><a href="class129333.html#refclass129333"><b>FileProvider</b></a></td><td>Provides a pool for interminate frames</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class135557.html#refoperation131845"><b>what</b></a></td><td><a href="class135557.html#refclass135557"><b>Error</b></a></td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/util.hpp"
|
||||
#include "lib/util-foreach.hpp"
|
||||
#include "common/subsys.hpp"
|
||||
#include "lib/sync.hpp"
|
||||
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@ NOBUG_CPP_DEFINE_FLAG_PARENT ( thread, backend);
|
|||
NOBUG_CPP_DEFINE_FLAG_PARENT ( proc, progress);
|
||||
/** progress log for proc-layer command dispatch */
|
||||
NOBUG_CPP_DEFINE_FLAG_PARENT ( command, proc);
|
||||
/** progress log for session datastructure */
|
||||
NOBUG_CPP_DEFINE_FLAG_PARENT ( session, proc);
|
||||
/** progress log for the gui */
|
||||
NOBUG_CPP_DEFINE_FLAG_PARENT ( gui, progress);
|
||||
/** progress log for the support lib */
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
#define LIB_BOOL_CHECKABLE_H
|
||||
|
||||
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace lib {
|
||||
|
||||
|
|
@ -117,9 +118,34 @@ namespace lib {
|
|||
return !(obj.*isValid)();
|
||||
}
|
||||
|
||||
|
||||
/** safety guard: when this comparison kicks in, the compiler
|
||||
* is about to use an implicit bool conversion on both sides to
|
||||
* perform an equality test. This is most likely not what you want.
|
||||
* Define an explicit equality comparison in the class using BoolCheckable!
|
||||
*/
|
||||
friend bool
|
||||
operator== (BoolCheckable const&, BoolCheckable const&)
|
||||
{
|
||||
BOOST_STATIC_ASSERT (false && sizeof(T) );
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
///////////////////////////////////////TICKET #477 : consider alternative safe-bool idiom
|
||||
// struct _Hidden_type
|
||||
// {
|
||||
// _Hidden_type* _M_bool;
|
||||
// };
|
||||
//
|
||||
// /// This typedef is used to implement the safe_bool idiom.
|
||||
// typedef _Hidden_type* _Hidden_type::* _Safe_bool;
|
||||
//
|
||||
// public:
|
||||
// operator _Safe_bool() const
|
||||
// {
|
||||
// return isValid()? &_Hidden_type::_M_bool : 0; }
|
||||
|
||||
|
||||
} // namespace lib
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace util {
|
|||
/**
|
||||
* Abstraction of the usual "int argc, int** argv"-Commandline,
|
||||
* to be able to treat it as a vector of strings. Inherits from
|
||||
* vector<std::string>, but provides convienient conversions to
|
||||
* vector<std::string>, but provides convenient conversions to
|
||||
* string (joining delimited by space)...
|
||||
*/
|
||||
class Cmdline : public VectS
|
||||
|
|
|
|||
|
|
@ -43,50 +43,44 @@
|
|||
* @param nobugflag NoBug flag used to log actions on the condition
|
||||
* @param cnd Condition variable to be locked
|
||||
*/
|
||||
#define LUMIERA_CONDITION_SECTION(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_cond_section_ = { \
|
||||
(void*)1, lumiera_condition_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_cond_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
lumiera_cond_section_.lock = (cnd); \
|
||||
NOBUG_IF_ALPHA(lumiera_cond_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (cnd)->rh, "acquire condmutex", lumiera_cond_section_.rh) \
|
||||
{ \
|
||||
if (pthread_mutex_lock (&(cnd)->cndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_cond_section_.rh); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_cond_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_CONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_CONDITION_SECTION(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_cond_section_ = { \
|
||||
cnd, lumiera_condition_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_cond_section_.lock) \
|
||||
{ \
|
||||
RESOURCE_WAIT (nobugflag, (cnd)->rh, "acquire condmutex", lumiera_cond_section_.rh); \
|
||||
if (pthread_mutex_lock (&(cnd)->cndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_cond_section_.rh); \
|
||||
} \
|
||||
lumiera_cond_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_CONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
#define LUMIERA_CONDITION_SECTION_CHAIN(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_cond_section_ = { \
|
||||
(void*)1, lumiera_condition_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_cond_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
lumiera_cond_section_.lock = cnd; \
|
||||
NOBUG_IF_ALPHA(lumiera_cond_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_ENTER (nobugflag, (cnd)->rh, "acquire condmutex", lumiera_cond_section_.rh) \
|
||||
{ \
|
||||
if (pthread_mutex_lock (&(cnd)->cndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_cond_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_cond_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_CONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_CONDITION_SECTION_CHAIN(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_cond_section_ = { \
|
||||
cnd, lumiera_condition_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_cond_section_.lock) \
|
||||
{ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
RESOURCE_ENTER (nobugflag, (cnd)->rh, "acquire condmutex", lumiera_cond_section_.rh); \
|
||||
if (pthread_mutex_lock (&(cnd)->cndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_cond_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
lumiera_cond_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_CONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -124,6 +124,7 @@ namespace lumiera {
|
|||
/* generic error situations */
|
||||
LUMIERA_ERROR_DECLARE (WRONG_TYPE); ///< runtime type mismatch
|
||||
LUMIERA_ERROR_DECLARE (ITER_EXHAUST); ///< end of sequence reached
|
||||
LUMIERA_ERROR_DECLARE (BOTTOM_VALUE); ///< invalid or NIL value
|
||||
|
||||
|
||||
/** Macro for creating derived exception classes properly
|
||||
|
|
|
|||
|
|
@ -66,7 +66,9 @@ namespace lumiera {
|
|||
|
||||
/* some further generic error situations */
|
||||
LUMIERA_ERROR_DEFINE (WRONG_TYPE, "runtime type mismatch");
|
||||
LUMIERA_ERROR_DEFINE (ITER_EXHAUST, "end of sequence reached");
|
||||
LUMIERA_ERROR_DEFINE (ITER_EXHAUST, "end of sequence reached");
|
||||
LUMIERA_ERROR_DEFINE (BOTTOM_VALUE, "invalid or NIL value");
|
||||
|
||||
|
||||
} // namespace error
|
||||
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@
|
|||
|
||||
namespace util {
|
||||
|
||||
using lumiera::typelist::can_ToString;
|
||||
using lumiera::typelist::can_lexical2string;
|
||||
using lib::meta::can_ToString;
|
||||
using lib::meta::can_lexical2string;
|
||||
using lib::Symbol;
|
||||
using boost::enable_if;
|
||||
using boost::disable_if;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
** for the generic ID.
|
||||
** - providing a Mixin, which allows any hierarchy to use this facility without
|
||||
** much code duplication, including an adapter for tr1::unordered_map
|
||||
** - equality comparison
|
||||
**
|
||||
** @see HashIndexed_test
|
||||
** @see Placement usage example
|
||||
|
|
@ -103,12 +104,12 @@ namespace lib {
|
|||
|
||||
typedef lumiera_uid* LUID;
|
||||
|
||||
operator size_t () const { return lumiera_uid_hash ((LUID)&luid_); }
|
||||
bool operator== (LuidH const& o) const { return lumiera_uid_eq ((LUID)&luid_, (LUID)&o.luid_); }
|
||||
operator size_t () const { return lumiera_uid_hash (get()); }
|
||||
bool operator== (LuidH const& o) const { return lumiera_uid_eq (get(), o.get()); }
|
||||
bool operator!= (LuidH const& o) const { return !operator== (o); }
|
||||
|
||||
/** for passing to C APIs */
|
||||
LUID get() const { return (LUID)&luid_; }
|
||||
LUID get() const { return const_cast<LUID> (&luid_);}
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -187,6 +188,11 @@ namespace lib {
|
|||
this->id_ = ref.getID();
|
||||
}
|
||||
|
||||
/** equality comparison delegated to the ID implementation */
|
||||
friend bool operator== (HashIndexed const& hal, HashIndexed const& har) { return hal.id_==har.id_; }
|
||||
friend bool operator!= (HashIndexed const& hal, HashIndexed const& har) { return hal.id_!=har.id_; }
|
||||
|
||||
|
||||
protected:
|
||||
HashIndexed () : id_() {}
|
||||
HashIndexed (IMP const& iref) : id_(iref) {}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@
|
|||
**
|
||||
** @todo WIP WIP WIP
|
||||
** @todo see Ticket #182
|
||||
** @todo naming of the iteration control function: TICKET #410
|
||||
**
|
||||
** @see scoped-ptrvect.hpp
|
||||
*/
|
||||
|
|
@ -113,6 +114,14 @@ namespace lib {
|
|||
typedef const TY* pointer;
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
_throwIterExhausted()
|
||||
{
|
||||
throw lumiera::error::Invalid ("Can't iterate further",
|
||||
lumiera::error::LUMIERA_ERROR_ITER_EXHAUST);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -125,9 +134,24 @@ namespace lib {
|
|||
* - it is not just a disguised pointer (meaning, it's more expensive)
|
||||
* - it checks validity on every operation and may throw
|
||||
* - it has a distinct back-link to the source container
|
||||
* - the source container needs to implement iterStart() and iterInc()
|
||||
* - we need friendship to access the callbacks on the container
|
||||
* - the source container needs to provide hasNext() and iterNext() free functions.
|
||||
* - we may need friendship to implement those extension points on the container
|
||||
* - the end-of-iteration can be detected by bool check
|
||||
* @note it is possible to "hide" a smart-ptr within the CON template parameter.
|
||||
*
|
||||
* \par Stipulations
|
||||
* - POS refers to the current position within the data source of this iterator.
|
||||
* -# it should be default constructible
|
||||
* -# it should be copy constructible
|
||||
* -# when IterAdapter is supposed to be assignable, then POS should be
|
||||
* -# it should provide embedded typedefs for pointer, reference and value_type,
|
||||
* or alternatively resolve these types through a specialisation if IterTraits.
|
||||
* -# it should be convertible to the pointer type it declares
|
||||
* -# dereferencing it should yield type that is convertible to the reference type
|
||||
* - CON points to the data source of this iterator (typically a data container type)
|
||||
* We store a pointer-like backlink to invoke a special iteration control API:
|
||||
* -# \c hasNext yields true iff the source has yet more result values to yield
|
||||
* -# \c iterNext advances the POS to the next element
|
||||
*
|
||||
* @see scoped-ptrvect.hpp usage example
|
||||
* @see iter-adaptor-test.cpp
|
||||
|
|
@ -136,7 +160,7 @@ namespace lib {
|
|||
class IterAdapter
|
||||
: public lib::BoolCheckable<IterAdapter<POS,CON> >
|
||||
{
|
||||
const CON* source_;
|
||||
CON source_;
|
||||
mutable POS pos_;
|
||||
|
||||
public:
|
||||
|
|
@ -144,7 +168,7 @@ namespace lib {
|
|||
typedef typename IterTraits<POS>::reference reference;
|
||||
typedef typename IterTraits<POS>::value_type value_type;
|
||||
|
||||
IterAdapter (const CON* src, const POS& startpos)
|
||||
IterAdapter (CON src, POS const& startpos)
|
||||
: source_(src)
|
||||
, pos_(startpos)
|
||||
{
|
||||
|
|
@ -152,8 +176,8 @@ namespace lib {
|
|||
}
|
||||
|
||||
IterAdapter ()
|
||||
: source_(0)
|
||||
, pos_(0)
|
||||
: source_()
|
||||
, pos_()
|
||||
{ }
|
||||
|
||||
|
||||
|
|
@ -213,7 +237,7 @@ namespace lib {
|
|||
bool
|
||||
checkPos() const
|
||||
{
|
||||
return source_ && CON::hasNext (source_,pos_);
|
||||
return source_ && hasNext (source_,pos_); //////////////TICKET #410
|
||||
}
|
||||
|
||||
/** ask the controlling container to yield the next position.
|
||||
|
|
@ -226,7 +250,7 @@ namespace lib {
|
|||
{
|
||||
if (!checkPos()) return false;
|
||||
|
||||
CON::iterNext (source_,pos_);
|
||||
iterNext (source_,pos_);
|
||||
return checkPos();
|
||||
}
|
||||
|
||||
|
|
@ -237,8 +261,7 @@ namespace lib {
|
|||
_maybe_throw() const
|
||||
{
|
||||
if (!isValid())
|
||||
throw lumiera::error::Invalid ("Can't iterate further",
|
||||
lumiera::error::LUMIERA_ERROR_ITER_EXHAUST);
|
||||
_throwIterExhausted();
|
||||
}
|
||||
|
||||
/// comparison is allowed to access impl iterator
|
||||
|
|
@ -286,8 +309,8 @@ namespace lib {
|
|||
{ }
|
||||
|
||||
RangeIter ()
|
||||
: p_(0)
|
||||
, e_(0)
|
||||
: p_()
|
||||
, e_()
|
||||
{ }
|
||||
|
||||
|
||||
|
|
@ -335,7 +358,7 @@ namespace lib {
|
|||
bool
|
||||
isValid () const
|
||||
{
|
||||
return (p_!= IT(0)) && (p_ != e_);
|
||||
return (p_!= IT()) && (p_ != e_);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -356,8 +379,7 @@ namespace lib {
|
|||
_maybe_throw() const
|
||||
{
|
||||
if (!isValid())
|
||||
throw lumiera::error::Invalid ("Can't iterate further",
|
||||
lumiera::error::LUMIERA_ERROR_ITER_EXHAUST);
|
||||
_throwIterExhausted();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
395
src/lib/iter-source.hpp
Normal file
|
|
@ -0,0 +1,395 @@
|
|||
/*
|
||||
ITER-SOURCE.hpp - an interface to build an opaque iterator-based data source
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2010, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
/** @file iter-source.hpp
|
||||
** Extension module to build an opaque data source, accessible as
|
||||
** <i>Lumiera Forward Iterator</i>. It is based on combining an IterAdapter
|
||||
** with classical polymorphism; here, the data source, which is addressed
|
||||
** by IderAdapter through the "iteration control API", is abstracted behind
|
||||
** an interface (with virtual functions). Together this allows to build
|
||||
** a simple data source type, without needing to disclose details of
|
||||
** the implementation.
|
||||
**
|
||||
** \par Standard Adapters
|
||||
** As a complement, this header contains a generic implementation
|
||||
** of the IterSource interface by wrapping an existing Lumiera Forward Iterator.
|
||||
** Using this WrappedLumieraIterator, the details of this wrapped source iterator
|
||||
** remain opaque. To ease the use of this adapter, a selection of free functions
|
||||
** is provided, allowing to build opaque "all elements" or "all keys" iterators
|
||||
** for various STL containers.
|
||||
**
|
||||
** @see iter-adapter.hpp
|
||||
** @see itertool.hpp
|
||||
** @see iter-source-test.cpp
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIB_ITER_SOURCE_H
|
||||
#define LIB_ITER_SOURCE_H
|
||||
|
||||
|
||||
#include "lib/iter-adapter.hpp"
|
||||
#include "lib/itertools.hpp"
|
||||
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <boost/noncopyable.hpp>
|
||||
#include <tr1/memory>
|
||||
|
||||
|
||||
|
||||
|
||||
namespace lib {
|
||||
|
||||
using std::tr1::shared_ptr;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Iteration source interface to abstract a data source,
|
||||
* which then can be accessed through IterAdapter as a frontend,
|
||||
* allowing to pull individual elements until exhaustion.
|
||||
*
|
||||
* This base class is empty and makes no assumptions regarding
|
||||
* identity, instantiation and copying.
|
||||
*
|
||||
* @see PlacementIndex::Table#_eachEntry_4check usage example
|
||||
* @see iter-source-test.cpp
|
||||
*/
|
||||
template<typename TY>
|
||||
class IterSource
|
||||
{
|
||||
|
||||
protected: /* == data source API to implement == */
|
||||
|
||||
typedef TY* Pos;
|
||||
typedef shared_ptr<IterSource> DataHandle;
|
||||
|
||||
|
||||
/** iteration start: prepare the first element.
|
||||
* may return NULL in case of empty data source
|
||||
*/
|
||||
virtual Pos firstResult () =0;
|
||||
|
||||
/** iteration step: switch on to the next element.
|
||||
* The pos pointer may be set to NULL to report
|
||||
* iteration end
|
||||
*/
|
||||
virtual void nextResult(Pos& pos) =0;
|
||||
|
||||
/** disconnect the data source / iteration frontend.
|
||||
* Depending on the way the IterSource got created
|
||||
* this \em might (or might not) be followed by
|
||||
* destroying the data source.
|
||||
* @note must not throw
|
||||
*/
|
||||
virtual void disconnect () { }
|
||||
|
||||
|
||||
|
||||
public:
|
||||
virtual ~IterSource() { }; ///< is ABC
|
||||
|
||||
/* == Iteration control API for IterAdapter frontend == */
|
||||
|
||||
friend bool
|
||||
hasNext (DataHandle const&, Pos const& pos) ////TICKET #410
|
||||
{
|
||||
return bool(pos);
|
||||
}
|
||||
|
||||
friend void
|
||||
iterNext (DataHandle& source, Pos& pos)
|
||||
{
|
||||
ASSERT (source);
|
||||
source->nextResult(pos);
|
||||
}
|
||||
|
||||
|
||||
/* == public builder API to create instances == */
|
||||
|
||||
typedef IterAdapter<Pos, DataHandle> iterator;
|
||||
|
||||
/** build an iterator frontend for the given source,
|
||||
* @note the source is allocated separately and
|
||||
* \em not owned by the iterator frontend
|
||||
*/
|
||||
static iterator
|
||||
build (IterSource& sourceImpl)
|
||||
{
|
||||
DataHandle sourceHandle (&sourceImpl, &detach_without_destroy);
|
||||
return startIteration(sourceHandle);
|
||||
}
|
||||
|
||||
/** build an iterator frontend, thereby managing
|
||||
* the given heap allocated source object instance.
|
||||
* @note we take ownership and destroy the source
|
||||
* when the last copy of the created iterator
|
||||
* goes out of scope.
|
||||
*/
|
||||
static iterator
|
||||
build (IterSource* sourceImplObject)
|
||||
{
|
||||
DataHandle sourceHandle (sourceImplObject, &destroy_managed_source);
|
||||
return startIteration(sourceHandle);
|
||||
}
|
||||
|
||||
static iterator EMPTY_SOURCE;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
static iterator
|
||||
startIteration (DataHandle sourceHandle)
|
||||
{
|
||||
REQUIRE (sourceHandle);
|
||||
Pos first = sourceHandle->firstResult();
|
||||
return iterator (sourceHandle, first);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
detach_without_destroy (IterSource * source)
|
||||
{
|
||||
WARN_IF (!source, library, "IterSource deleter called with NULL source pointer");
|
||||
if (source)
|
||||
source->disconnect();
|
||||
}
|
||||
|
||||
static void
|
||||
destroy_managed_source (IterSource * source)
|
||||
{
|
||||
WARN_IF (!source, library, "IterSource deleter called with NULL source pointer");
|
||||
if (source)
|
||||
{
|
||||
source->disconnect();
|
||||
delete source;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** storage for the empty data-source constant */
|
||||
template<typename TY>
|
||||
typename IterSource<TY>::iterator IterSource<TY>::EMPTY_SOURCE = iterator();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Standard implementation of the IterSource interface:
|
||||
* a wrapped "Lumiera Forward Iterator". Usually, such a wrapper instance
|
||||
* is passed to one of the IterSource's builder functions, thereby
|
||||
* erasing the specific type information of the template parameter IT
|
||||
*/
|
||||
template<class IT>
|
||||
class WrappedLumieraIterator
|
||||
: public IterSource<typename IT::value_type>
|
||||
, boost::noncopyable
|
||||
{
|
||||
typedef IterSource<typename IT::value_type> _Base;
|
||||
typedef typename _Base::Pos Pos;
|
||||
|
||||
IT src_;
|
||||
|
||||
Pos
|
||||
firstResult ()
|
||||
{
|
||||
if (!src_)
|
||||
return 0;
|
||||
else
|
||||
return & *src_;
|
||||
}
|
||||
|
||||
void
|
||||
nextResult (Pos& pos)
|
||||
{
|
||||
if (!pos) return;
|
||||
if (src_) ++src_;
|
||||
if (src_)
|
||||
pos = & *src_;
|
||||
else
|
||||
pos = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public:
|
||||
WrappedLumieraIterator (IT const& orig)
|
||||
: src_(orig)
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* === pre-defined Adapters for frequently used Containers === */
|
||||
|
||||
namespace iter_impl {
|
||||
namespace { // traits and helpers...
|
||||
|
||||
template<class CON>
|
||||
struct _SeqT
|
||||
{
|
||||
typedef typename CON::iterator::value_type Val;
|
||||
typedef typename IterSource<Val>::iterator Iter;
|
||||
};
|
||||
|
||||
template<class MAP>
|
||||
struct _MapT
|
||||
{
|
||||
typedef typename MAP::key_type Key;
|
||||
typedef typename MAP::value_type::second_type Val;
|
||||
typedef typename IterSource<Key>::iterator KeyIter;
|
||||
typedef typename IterSource<Val>::iterator ValIter;
|
||||
};
|
||||
|
||||
|
||||
template<class IT>
|
||||
struct _IterT
|
||||
{
|
||||
typedef typename IT::value_type Val;
|
||||
typedef typename IterSource<Val>::iterator Iter;
|
||||
};
|
||||
|
||||
template<class IT>
|
||||
struct _PairIterT
|
||||
{
|
||||
typedef typename IT::value_type PairType;
|
||||
typedef typename PairType::second_type ValType;
|
||||
typedef typename PairType::first_type ConstKeyType;
|
||||
|
||||
// since we're returning the keys always by value,
|
||||
// we can strip the const added by the STL map types
|
||||
typedef typename boost::remove_const<ConstKeyType>::type KeyType;
|
||||
|
||||
typedef TransformIter<IT,KeyType> KeyIter;
|
||||
typedef TransformIter<IT,ValType> ValIter;
|
||||
|
||||
static KeyType takeFirst (PairType const& pair) { return pair.first; }
|
||||
static ValType takeSecond(PairType const& pair) { return pair.second;}
|
||||
};
|
||||
|
||||
|
||||
template<class IT>
|
||||
typename _PairIterT<IT>::KeyIter
|
||||
takePairFirst (IT const& source)
|
||||
{
|
||||
return transformIterator(source, _PairIterT<IT>::takeFirst );
|
||||
}
|
||||
|
||||
template<class IT>
|
||||
typename _PairIterT<IT>::ValIter
|
||||
takePairSecond (IT const& source)
|
||||
{
|
||||
return transformIterator(source, _PairIterT<IT>::takeSecond );
|
||||
}
|
||||
|
||||
} //(END) type helpers...
|
||||
|
||||
|
||||
|
||||
/** wraps a given Lumiera Forward Iterator,
|
||||
* exposing just a IterSource based frontend.
|
||||
*/
|
||||
template<class IT>
|
||||
typename _IterT<IT>::Iter
|
||||
wrapIter (IT const& source)
|
||||
{
|
||||
typedef typename _IterT<IT>::Val ValType;
|
||||
|
||||
return IterSource<ValType>::build (new WrappedLumieraIterator<IT> (source));
|
||||
}
|
||||
|
||||
|
||||
/** @return a Lumiera Forward Iterator to yield
|
||||
* all the keys of the given Map or Hashtable
|
||||
*/
|
||||
template<class MAP>
|
||||
typename _MapT<MAP>::KeyIter
|
||||
eachMapKey (MAP& map)
|
||||
{
|
||||
typedef RangeIter<typename MAP::iterator> Range;
|
||||
|
||||
Range contents (map.begin(), map.end());
|
||||
return wrapIter (takePairFirst (contents));
|
||||
}
|
||||
|
||||
|
||||
/** @return a Lumiera Forward Iterator to yield
|
||||
* all the keys of the given Map or Hashtable
|
||||
*/
|
||||
template<class MAP>
|
||||
typename _MapT<MAP>::ValIter
|
||||
eachMapVal (MAP& map)
|
||||
{
|
||||
typedef RangeIter<typename MAP::iterator> Range;
|
||||
|
||||
Range contents (map.begin(), map.end());
|
||||
return wrapIter (takePairSecond(contents));
|
||||
}
|
||||
|
||||
|
||||
/** @return a Lumiera Forward Iterator to yield
|
||||
* all \em distinct keys of a Multimap
|
||||
* @warning we do a full table scan to find
|
||||
* the distinct keys
|
||||
*/
|
||||
template<class MAP>
|
||||
typename _MapT<MAP>::KeyIter
|
||||
eachDistinctKey (MAP& map)
|
||||
{
|
||||
typedef RangeIter<typename MAP::iterator> Range;
|
||||
|
||||
Range contents (map.begin(), map.end());
|
||||
return wrapIter (filterRepetitions (takePairFirst(contents)));
|
||||
}
|
||||
|
||||
|
||||
/** @param container a STL-like container, providing
|
||||
* - a typedef \c iterator
|
||||
* - functions \c begin() and \c end()
|
||||
* @return a Lumiera Forward Iterator yielding all values
|
||||
* starting with \c begin and excluding \c end .
|
||||
*/
|
||||
template<class CON>
|
||||
typename _SeqT<CON>::Iter
|
||||
eachEntry (CON& container)
|
||||
{
|
||||
typedef typename _SeqT<CON>::Val ValType;
|
||||
typedef RangeIter<typename CON::iterator> Range;
|
||||
|
||||
Range contents (container.begin(), container.end());
|
||||
return IterSource<ValType>::build (new WrappedLumieraIterator<Range>(contents));
|
||||
}
|
||||
|
||||
}
|
||||
using iter_impl::wrapIter;
|
||||
using iter_impl::eachMapKey;
|
||||
using iter_impl::eachDistinctKey;
|
||||
using iter_impl::eachMapVal;
|
||||
using iter_impl::eachEntry;
|
||||
|
||||
|
||||
} // namespace lib
|
||||
#endif
|
||||
558
src/lib/itertools.hpp
Normal file
|
|
@ -0,0 +1,558 @@
|
|||
/*
|
||||
ITERTOOLS.hpp - collection of tools for building and combining iterators
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
/** @file itertools.hpp
|
||||
** Helpers for working with iterators based on the pipeline model.
|
||||
** Iterators abstract from the underlying data container and provide
|
||||
** the contained data as a source to pull values from. Based on this
|
||||
** model, we can build pipelines, with filters, valves, junction points
|
||||
** and transforming facilities. The templates in this header enable such,
|
||||
** based on the Lumiera Forward Iterator concept. They build on generic
|
||||
** programming techniques, thus are intended to be combined at compile time
|
||||
** using definitive type information. Contrast this to an iterator model
|
||||
** as in Java's Commons-Collections, where Iterator is an Interface based
|
||||
** on virtual functions. Thus, the basic problem to overcome is the lack
|
||||
** of a single common interface, which could serve as foundation for
|
||||
** type inference. As a solution, we use a "onion" approach, where a
|
||||
** generic base gets configured with an active core, implementing
|
||||
** the filtering or processing functionality, while the base class
|
||||
** (IterTool) exposes the operations necessary to comply to the
|
||||
** Forward Iterator Concept.
|
||||
**
|
||||
** \par filtering Iterator
|
||||
** The FilterIter template can be used to build a filter into a pipeline,
|
||||
** as it forwards only those elements from its source iterator, which pass
|
||||
** the predicate evaluation. Anything acceptable as ctor parameter for a
|
||||
** tr1::function object can be passed in as predicate, but of course the
|
||||
** signature must be sensible. Please note, that -- depending on the
|
||||
** predicate -- already the ctor or even a simple \c bool test might
|
||||
** pull and exhaust the source iterator completely, in an attempt
|
||||
** to find the first element passing the predicate test.
|
||||
**
|
||||
** \par processing Iterator
|
||||
** the TransformIter template can be used as processing (or transforming)
|
||||
** step within the pipeline. It is created with a functor, which, when
|
||||
** pulling elements, is invoked for each element pulled from the
|
||||
** source iterator. The signature of the functor must match the
|
||||
** desired value (output) type.
|
||||
**
|
||||
** @todo WIP WIP WIP
|
||||
** @todo see Ticket #347
|
||||
**
|
||||
** @see IterAdapter
|
||||
** @see itertools-test.cpp
|
||||
** @see contents-query.hpp
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIB_ITERTOOLS_H
|
||||
#define LIB_ITERTOOLS_H
|
||||
|
||||
|
||||
#include "lib/bool-checkable.hpp"
|
||||
#include "lib/iter-adapter.hpp"
|
||||
#include "lib/meta/function.hpp"
|
||||
#include "lib/meta/trait.hpp"
|
||||
#include "lib/wrapper.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
#include <tr1/functional>
|
||||
|
||||
|
||||
|
||||
namespace lib {
|
||||
|
||||
using std::tr1::function;
|
||||
using util::unConst;
|
||||
|
||||
using lib::meta::RefTraits;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A neutral \em identity-function core,
|
||||
* also serving as point-of reference how any
|
||||
* core is intended to work. Any core is intended
|
||||
* to serve as inner part of an iterator tool template.
|
||||
* - it provides the trait typedefs
|
||||
* - it abstracts the "source"
|
||||
* - it abstracts the local operation to be performed
|
||||
* - the ctor of the core sets up the configuration.
|
||||
* @note cores should be copyable without much overhead
|
||||
*/
|
||||
template<class IT>
|
||||
struct IdentityCore
|
||||
{
|
||||
IT source_;
|
||||
|
||||
IdentityCore (IT const& orig)
|
||||
: source_(orig)
|
||||
{ }
|
||||
|
||||
IT&
|
||||
pipe ()
|
||||
{
|
||||
return source_;
|
||||
}
|
||||
|
||||
IT const&
|
||||
pipe () const
|
||||
{
|
||||
return source_;
|
||||
}
|
||||
|
||||
void
|
||||
advance ()
|
||||
{
|
||||
++source_;
|
||||
}
|
||||
|
||||
bool
|
||||
evaluate () const
|
||||
{
|
||||
return bool(source_);
|
||||
}
|
||||
|
||||
typedef typename IT::pointer pointer;
|
||||
typedef typename IT::reference reference;
|
||||
typedef typename IT::value_type value_type;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Standard functionality to build up any iterator tool.
|
||||
* IterTool exposes the frontend functions necessary to
|
||||
* comply to the Lumiera Forward Iterator concept.
|
||||
* The protected part provides the building blocks
|
||||
* to implement the actual processing/filter logic.
|
||||
*/
|
||||
template<class CORE>
|
||||
class IterTool
|
||||
: public lib::BoolCheckable<IterTool<CORE> >
|
||||
{
|
||||
|
||||
protected: /* iteration control */
|
||||
CORE core_;
|
||||
|
||||
bool
|
||||
hasData() const
|
||||
{
|
||||
return core_.evaluate()
|
||||
|| unConst(this)->iterate();
|
||||
} // skipping irrelevant results doesn't count as "mutation"
|
||||
|
||||
bool
|
||||
iterate ()
|
||||
{
|
||||
if (!core_.pipe()) return false;
|
||||
|
||||
do core_.advance();
|
||||
while (core_.pipe() && !core_.evaluate());
|
||||
return core_.pipe();
|
||||
}
|
||||
|
||||
void
|
||||
_maybe_throw() const
|
||||
{
|
||||
if (!isValid())
|
||||
_throwIterExhausted();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public:
|
||||
typedef typename CORE::pointer pointer;
|
||||
typedef typename CORE::reference reference;
|
||||
typedef typename CORE::value_type value_type;
|
||||
|
||||
|
||||
IterTool (CORE const& setup)
|
||||
: core_(setup)
|
||||
{
|
||||
hasData();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* === lumiera forward iterator concept === */
|
||||
|
||||
reference
|
||||
operator*() const
|
||||
{
|
||||
_maybe_throw();
|
||||
return *core_.pipe();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
_maybe_throw();
|
||||
return & *core_.pipe();
|
||||
}
|
||||
|
||||
IterTool&
|
||||
operator++()
|
||||
{
|
||||
_maybe_throw();
|
||||
iterate();
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool
|
||||
isValid () const
|
||||
{
|
||||
return hasData();
|
||||
}
|
||||
|
||||
bool
|
||||
empty () const
|
||||
{
|
||||
return !isValid();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
template<class CX>
|
||||
inline bool
|
||||
operator== (IterTool<CX> const& it1, IterTool<CX> const& it2)
|
||||
{
|
||||
return (!it1 && !it2 )
|
||||
|| ( it1 && it2 && (*it1) == (*it2) )
|
||||
;
|
||||
}
|
||||
|
||||
template<class CX>
|
||||
inline bool
|
||||
operator!= (IterTool<CX> const& ito1, IterTool<CX> const& ito2)
|
||||
{
|
||||
return !(ito1 == ito2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of the filter logic.
|
||||
* This core stores a function object instance,
|
||||
* passing each pulled source element to this
|
||||
* predicate function for evaluation.
|
||||
* @note predicate is evaluated <i>at most once</i>
|
||||
* for each value yielded by the source
|
||||
*/
|
||||
template<class IT>
|
||||
struct FilterCore
|
||||
: IdentityCore<IT>
|
||||
{
|
||||
typedef IdentityCore<IT> Raw;
|
||||
typedef typename IT::reference Val;
|
||||
|
||||
|
||||
function<bool(Val)> predicate_;
|
||||
|
||||
bool
|
||||
evaluate () const
|
||||
{
|
||||
return Raw::pipe()
|
||||
&& currVal_isOK();
|
||||
}
|
||||
|
||||
|
||||
mutable bool isOK_;
|
||||
mutable bool cached_;
|
||||
|
||||
bool
|
||||
currVal_isOK () const ///< @return (maybe cached) result of filter predicate
|
||||
{
|
||||
return (cached_ && isOK_)
|
||||
|| (cached_ = true
|
||||
&&(isOK_ = predicate_(*Raw::pipe())));
|
||||
}
|
||||
|
||||
void
|
||||
advance ()
|
||||
{
|
||||
cached_ = false;
|
||||
Raw::advance();
|
||||
}
|
||||
|
||||
|
||||
template<typename PRED>
|
||||
FilterCore (IT const& source, PRED prediDef)
|
||||
: Raw(source)
|
||||
, predicate_(prediDef) // induces a signature check
|
||||
, cached_(false)
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Iterator tool filtering pulled data according to a predicate
|
||||
*/
|
||||
template<class IT>
|
||||
class FilterIter
|
||||
: public IterTool<FilterCore<IT> >
|
||||
{
|
||||
typedef FilterCore<IT> _Filter;
|
||||
typedef IterTool<_Filter> _Impl;
|
||||
|
||||
static bool acceptAll(typename _Filter::Val) { return true; }
|
||||
|
||||
|
||||
public:
|
||||
FilterIter ()
|
||||
: _Impl(FilterCore<IT>(IT(), acceptAll))
|
||||
{ }
|
||||
|
||||
template<typename PRED>
|
||||
FilterIter (IT const& src, PRED filterPredicate)
|
||||
: _Impl(_Filter(src,filterPredicate))
|
||||
{ }
|
||||
|
||||
FilterIter&
|
||||
operator++ ()
|
||||
{
|
||||
_Impl::operator++();
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** Build a FilterIter: convenience free function shortcut,
|
||||
* picking up the involved types automatically.
|
||||
* @param filterPredicate to be invoked for each source element
|
||||
* @return Iterator filtering contents of the source
|
||||
*/
|
||||
template<class IT, typename PRED>
|
||||
inline FilterIter<IT>
|
||||
filterIterator (IT const& src, PRED filterPredicate)
|
||||
{
|
||||
return FilterIter<IT>(src,filterPredicate);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper: predicate returning \c true
|
||||
* whenever the argument value changes
|
||||
* during a sequence of invocations.
|
||||
*/
|
||||
template<typename VAL>
|
||||
class SkipRepetition
|
||||
{
|
||||
typedef wrapper::ItemWrapper<VAL> Item;
|
||||
|
||||
Item prev_;
|
||||
|
||||
public:
|
||||
bool
|
||||
operator() (VAL const& elm)
|
||||
{
|
||||
if (prev_ &&
|
||||
(*prev_ == elm))
|
||||
return false;
|
||||
|
||||
// element differs from predecessor
|
||||
prev_ = elm;
|
||||
return true;
|
||||
}
|
||||
|
||||
typedef bool result_type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of custom processing logic.
|
||||
* This core stores a function object instance
|
||||
* to treat each source element pulled.
|
||||
*/
|
||||
template<class IT, class VAL>
|
||||
class TransformingCore
|
||||
{
|
||||
typedef typename IT::reference InType;
|
||||
typedef wrapper::ItemWrapper<VAL> Item;
|
||||
|
||||
function<VAL(InType)> trafo_;
|
||||
|
||||
IT source_;
|
||||
Item treated_;
|
||||
|
||||
void
|
||||
processItem ()
|
||||
{
|
||||
if (source_)
|
||||
treated_ = trafo_(*source_);
|
||||
else
|
||||
treated_.reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public:
|
||||
TransformingCore () ///< deactivated core
|
||||
: trafo_()
|
||||
, source_()
|
||||
, treated_()
|
||||
{ }
|
||||
|
||||
template<typename FUN>
|
||||
TransformingCore (IT const& orig, FUN processor)
|
||||
: trafo_(processor) // induces a signature check
|
||||
, source_(orig)
|
||||
{
|
||||
processItem();
|
||||
}
|
||||
|
||||
Item const&
|
||||
pipe () const
|
||||
{
|
||||
return treated_;
|
||||
}
|
||||
|
||||
void
|
||||
advance ()
|
||||
{
|
||||
++source_;
|
||||
processItem();
|
||||
}
|
||||
|
||||
bool
|
||||
evaluate () const
|
||||
{
|
||||
return bool(source_);
|
||||
}
|
||||
|
||||
typedef typename RefTraits<VAL>::pointer pointer;
|
||||
typedef typename RefTraits<VAL>::reference reference;
|
||||
typedef typename RefTraits<VAL>::value_type value_type;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Iterator tool treating pulled data by a custom transformation (function)
|
||||
*/
|
||||
template<class IT, class VAL>
|
||||
class TransformIter
|
||||
: public IterTool<TransformingCore<IT,VAL> >
|
||||
{
|
||||
typedef TransformingCore<IT,VAL> _Trafo;
|
||||
typedef IterTool<_Trafo> _IteratorImpl;
|
||||
|
||||
public:
|
||||
TransformIter ()
|
||||
: _IteratorImpl(_Trafo())
|
||||
{ }
|
||||
|
||||
template<typename FUN>
|
||||
TransformIter (IT const& src, FUN trafoFunc)
|
||||
: _IteratorImpl(_Trafo(src,trafoFunc))
|
||||
{ }
|
||||
|
||||
TransformIter&
|
||||
operator++ ()
|
||||
{
|
||||
_IteratorImpl::operator++();
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
namespace { // Helper to pick up the produced value type automatically
|
||||
|
||||
using lumiera::typelist::FunctionSignature;
|
||||
|
||||
template<typename SIG>
|
||||
struct _ProducedOutput
|
||||
{
|
||||
typedef typename FunctionSignature<function<SIG> >::Ret Type;
|
||||
};
|
||||
|
||||
template<typename SIG>
|
||||
struct _ProducedOutput<function<SIG> >
|
||||
{
|
||||
typedef typename FunctionSignature<function<SIG> >::Ret Type;
|
||||
};
|
||||
|
||||
template<typename FUN>
|
||||
struct _ProducedOutput<FUN*>
|
||||
{
|
||||
typedef typename FunctionSignature<function<FUN> >::Ret Type;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/** Build a TransformIter: convenience free function shortcut,
|
||||
* picking up the involved types automatically.
|
||||
* @param processingFunc to be invoked for each source element
|
||||
* @return Iterator processing the source feed
|
||||
*/
|
||||
template<class IT, typename FUN>
|
||||
inline TransformIter<IT, typename _ProducedOutput<FUN>::Type>
|
||||
transformIterator (IT const& src, FUN processingFunc)
|
||||
{
|
||||
typedef typename _ProducedOutput<FUN>::Type OutVal;
|
||||
return TransformIter<IT,OutVal>(src,processingFunc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* === utility functions === */
|
||||
|
||||
template<class IT, class CON>
|
||||
inline void
|
||||
append_all (IT iter, CON& container)
|
||||
{
|
||||
for ( ; iter; ++iter )
|
||||
container.push_back (*iter);
|
||||
}
|
||||
|
||||
|
||||
/** filters away repeated values
|
||||
* emitted by source iterator */
|
||||
template<class IT>
|
||||
FilterIter<IT>
|
||||
filterRepetitions (IT const& source)
|
||||
{
|
||||
typedef typename IT::value_type Val;
|
||||
return filterIterator(source, SkipRepetition<Val>() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} // namespace lib
|
||||
#endif
|
||||
205
src/lib/meta/duck-detector.hpp
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
/*
|
||||
DUCK-DETECTOR.hpp - helpers for statically detecting properties of a type
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2010, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/** @file duck-detector.hpp
|
||||
** Metaprogramming helpers to check for specific properties of a type in question.
|
||||
** Building upon the "SFINE" principle, it is possible to create \em metafunction templates,
|
||||
** which answer some questions about a given type at compile time. A lot of generic flavours of
|
||||
** this kind can be found in the boost-type-trait library (part of std::tr1). At times though,
|
||||
** you want to ask more specific questions, like e.g. "does this type provide an operation \c quack() "?
|
||||
** Because, if we can get a \c bool answer to such a question <i>at compile time,</i> we can use
|
||||
** \c boost::enable_if to pick a special implementation based on the test result. Together, these
|
||||
** techniques allow to adopt a duck-typed programming style, where an arbitrary object is allowed
|
||||
** to enter a given API function, provided this object supports some special operations.
|
||||
**
|
||||
** While C++ certainly isn't a dynamic language and doesn't provide any kind of run time introspection,
|
||||
** doing such check-and branch at compile time allows even to combine such a flexible approach with
|
||||
** static type safety, which is compelling. (The downside is the danger of code bloat, as is with all
|
||||
** template based techniques).
|
||||
**
|
||||
** \par how the implementation works
|
||||
**
|
||||
** Most of these trait templates rely on a creative use of function overloading. The C++ standard
|
||||
** requires the compiler <i>silently to drop</i> any candidate of overload resolution which has
|
||||
** gotten an invalid function signature as a result of instantiating a template (type). This allow
|
||||
** us to set up kind of a "trap" for the compiler: we present two overloaded candidate functions
|
||||
** with a different return type; by investigating the resulting return type we're able to figure
|
||||
** out the overload actually picked by the compiler.
|
||||
**
|
||||
** This header provides some pre-configured tests, available as macros. Each of them contains
|
||||
** a template based on the described setup, containing a \em probe type expression at some point.
|
||||
** The key is to build this probe expression in a way that it's valid only if the type in question
|
||||
** has a specific property
|
||||
**
|
||||
** - if the type should contain a nested type of typedef with a specific name, we simply use
|
||||
** this nested type in the signature of the overloaded function
|
||||
** - if the type should contain a \em member with a specific name, we initialise a member pointer
|
||||
** within a probe template with this member (if there isn't such a member, the probe template
|
||||
** initialisation fails and the other function overload gets picked)
|
||||
** - as an extension to this approach, we can even declare a member function pointer with a
|
||||
** specific function signature and then try to assign the named member. This allows even
|
||||
** to determine if a member function of a type in question has the desired signature.
|
||||
**
|
||||
** All these detection building blocks are written such as to provide a bool member \v ::value,
|
||||
** which is in accordance to the conventions of boost metaprogramming. I.e. you can immediately
|
||||
** use them within boost::enable_if
|
||||
**
|
||||
** @see util-foreach.hpp usage example
|
||||
** @see duck-detector-test.cpp
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIB_META_DUCK_DETECTOR_H
|
||||
#define LIB_META_DUCK_DETECTOR_H
|
||||
|
||||
|
||||
#include "lib/meta/util.hpp"
|
||||
|
||||
namespace lib {
|
||||
namespace meta{
|
||||
|
||||
///////////////TICKET #175 sort out meta namespace
|
||||
using lumiera::Yes_t;
|
||||
using lumiera::No_t;
|
||||
|
||||
}} // namespace lib::meta
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Detector for a nested type.
|
||||
* Defines a metafunction (template), allowing to detect
|
||||
* if a type TY in question has a nested type or typedef
|
||||
* with the given name. To answer this question, instantiate
|
||||
* resulting HasNested_XXX template with the type in question
|
||||
* and check the static bool value field.
|
||||
*/
|
||||
#define META_DETECT_NESTED(_TYPE_) \
|
||||
template<typename TY> \
|
||||
class HasNested_##_TYPE_ \
|
||||
{ \
|
||||
\
|
||||
template<class X> \
|
||||
static Yes_t check(typename X::_TYPE_ *); \
|
||||
template<class> \
|
||||
static No_t check(...); \
|
||||
\
|
||||
public: \
|
||||
static const bool value = (sizeof(Yes_t)==sizeof(check<TY>(0))); \
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** Detector for a nested member (field or function).
|
||||
* Defines a metafunction (template), allowing to detect
|
||||
* the presence of a member with the given name within
|
||||
* a type in question.
|
||||
*/
|
||||
#define META_DETECT_MEMBER(_NAME_) \
|
||||
template<typename TY> \
|
||||
class HasMember_##_NAME_ \
|
||||
{ \
|
||||
template<typename X, int i = sizeof(&X::_NAME_)> \
|
||||
struct Probe \
|
||||
{ }; \
|
||||
\
|
||||
template<class X> \
|
||||
static Yes_t check(Probe<X> * ); \
|
||||
template<class> \
|
||||
static No_t check(...); \
|
||||
\
|
||||
public: \
|
||||
static const bool value = (sizeof(Yes_t)==sizeof(check<TY>(0))); \
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** Detector for a specific member function.
|
||||
* Defines a metafunction (template), allowing to detect
|
||||
* the presence of a member function with the specific
|
||||
* signature, as defined by the parameters. Note this
|
||||
* check will probably fail if there are overloads
|
||||
*/
|
||||
#define META_DETECT_FUNCTION(_RET_TYPE_,_FUN_NAME_,_ARGS_) \
|
||||
template<typename TY> \
|
||||
class HasFunSig_##_FUN_NAME_ \
|
||||
{ \
|
||||
template<typename X, _RET_TYPE_ (X::*)_ARGS_> \
|
||||
struct Probe \
|
||||
{ }; \
|
||||
\
|
||||
template<class X> \
|
||||
static Yes_t check(Probe<X, &X::_FUN_NAME_> * ); \
|
||||
template<class> \
|
||||
static No_t check(...); \
|
||||
\
|
||||
public: \
|
||||
static const bool value = (sizeof(Yes_t)==sizeof(check<TY>(0))); \
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** Detector for a dereferentiation operator. Works like member detection */
|
||||
#define META_DETECT_OPERATOR_DEREF() \
|
||||
template<typename TY> \
|
||||
class HasOperator_deref \
|
||||
{ \
|
||||
template<typename X, int i = sizeof(&X::operator*)> \
|
||||
struct Probe \
|
||||
{ }; \
|
||||
\
|
||||
template<class X> \
|
||||
static Yes_t check(Probe<X> * ); \
|
||||
template<class> \
|
||||
static No_t check(...); \
|
||||
\
|
||||
public: \
|
||||
static const bool value = (sizeof(Yes_t)==sizeof(check<TY>(0))); \
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** Detector for a prefix increment operator. Works like function detection */
|
||||
#define META_DETECT_OPERATOR_INC() \
|
||||
template<typename TY> \
|
||||
class HasOperator_inc \
|
||||
{ \
|
||||
template<typename X, X& (X::*)(void)> \
|
||||
struct Probe \
|
||||
{ }; \
|
||||
\
|
||||
template<class X> \
|
||||
static Yes_t check(Probe<X, &X::operator++> * ); \
|
||||
template<class> \
|
||||
static No_t check(...); \
|
||||
\
|
||||
public: \
|
||||
static const bool value = (sizeof(Yes_t)==sizeof(check<TY>(0))); \
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -42,8 +42,14 @@ This code is heavily inspired by
|
|||
** Helpers for working with lumiera::typelist::Types (i.e. lists-of-types).
|
||||
** The main purpose is to build interfaces and polymorphic implementations
|
||||
** (using virtual functions) based on templated Types or Collections of types,
|
||||
** which is not possible without Template Metaprogrmming.
|
||||
** which is not possible without Template Metaprogramming.
|
||||
**
|
||||
** The facilities in this header work by instantiating another template,
|
||||
** which is passed in as (template template) parameter, for each of a
|
||||
** given sequence of types. What varies is the way how this "for each"
|
||||
** instantiation is mixed or inherited into the resulting product.
|
||||
**
|
||||
** @see generator-test.cpp
|
||||
** @see lumiera::query::ConfigRules usage example
|
||||
** @see typelist.hpp
|
||||
**
|
||||
|
|
@ -99,6 +105,13 @@ namespace typelist{
|
|||
};
|
||||
|
||||
|
||||
/** Helper to just inherit from the given type(s) */
|
||||
template<typename T>
|
||||
struct InheritFrom : T
|
||||
{ };
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Build a single inheritance chain of template instantiations.
|
||||
|
|
|
|||
|
|
@ -21,20 +21,208 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifndef LUMIERA_META_TRAIT_H
|
||||
#define LUMIERA_META_TRAIT_H
|
||||
#ifndef LIB_META_TRAIT_H
|
||||
#define LIB_META_TRAIT_H
|
||||
|
||||
|
||||
#include "lib/meta/util.hpp"
|
||||
#include "lib/meta/duck-detector.hpp"
|
||||
#include "lib/wrapper.hpp" ////////////////////////TODO only because of AssignableRefWrapper -- can we get rid of this import?
|
||||
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/type_traits/is_arithmetic.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
#include <boost/type_traits/remove_pointer.hpp>
|
||||
#include <boost/type_traits/remove_cv.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <string>
|
||||
|
||||
//Forward declarations for the Unwrap helper....
|
||||
namespace boost{
|
||||
template<class X> class reference_wrapper;
|
||||
}
|
||||
namespace std {
|
||||
namespace tr1 {
|
||||
template<class X> class reference_wrapper;
|
||||
template<class X> class shared_ptr;
|
||||
}}
|
||||
namespace lumiera{
|
||||
template<class X, class B> class P;
|
||||
}
|
||||
namespace mobject{
|
||||
template<class X, class B> class Placement;
|
||||
}
|
||||
|
||||
namespace lumiera {
|
||||
namespace typelist {
|
||||
|
||||
namespace lib {
|
||||
namespace meta {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Helper for type analysis:
|
||||
* tries to extract a base type from various wrappers.
|
||||
* Additionally allows to extract/deref the wrapped element.
|
||||
* @warning strips away any const
|
||||
*/
|
||||
template<typename X>
|
||||
struct Unwrap
|
||||
{
|
||||
typedef X Type;
|
||||
|
||||
static X&
|
||||
extract (X const& x)
|
||||
{
|
||||
return const_cast<X&> (x);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename X>
|
||||
struct Unwrap<X*>
|
||||
{
|
||||
typedef typename boost::remove_cv<X>::type Type;
|
||||
|
||||
static Type&
|
||||
extract (const X* ptr)
|
||||
{
|
||||
ASSERT (ptr);
|
||||
return const_cast<Type&> (*ptr);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename X>
|
||||
struct Unwrap<boost::reference_wrapper<X> >
|
||||
{
|
||||
typedef X Type;
|
||||
|
||||
static X&
|
||||
extract (boost::reference_wrapper<X> wrapped)
|
||||
{
|
||||
return wrapped;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename X>
|
||||
struct Unwrap<std::tr1::reference_wrapper<X> >
|
||||
{
|
||||
typedef X Type;
|
||||
|
||||
static X&
|
||||
extract (std::tr1::reference_wrapper<X> wrapped)
|
||||
{
|
||||
return wrapped;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename X>
|
||||
struct Unwrap<std::tr1::shared_ptr<X> >
|
||||
{
|
||||
typedef X Type;
|
||||
|
||||
static X&
|
||||
extract (std::tr1::shared_ptr<X> ptr)
|
||||
{
|
||||
ASSERT (ptr);
|
||||
return *ptr;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename X, class B>
|
||||
struct Unwrap<lumiera::P<X, B> >
|
||||
{
|
||||
typedef X Type;
|
||||
|
||||
static X&
|
||||
extract (lumiera::P<X,B> ptr)
|
||||
{
|
||||
ASSERT (ptr);
|
||||
return *ptr;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename X, class B>
|
||||
struct Unwrap<mobject::Placement<X, B> >
|
||||
{
|
||||
typedef X Type;
|
||||
|
||||
static X&
|
||||
extract (mobject::Placement<X,B> placement)
|
||||
{
|
||||
ASSERT (placement.isValid());
|
||||
return *placement;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** convenience shortcut: unwrapping free function.
|
||||
* @return reference to the bare element.
|
||||
* @warning this function is dangerous: it strips away
|
||||
* any managing smart-ptr and any const!
|
||||
* You might even access and return a
|
||||
* reference to an anonymous temporary.
|
||||
*/
|
||||
template<typename X>
|
||||
typename Unwrap<X>::Type&
|
||||
unwrap (X const& wrapped)
|
||||
{
|
||||
return Unwrap<X>::extract(wrapped);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/** Helper for type analysis: tries to strip all kinds of type adornments */
|
||||
template<typename X>
|
||||
struct Strip
|
||||
{
|
||||
typedef typename boost::remove_cv<X> ::type TypeUnconst;
|
||||
typedef typename boost::remove_reference<TypeUnconst>::type TypeReferred;
|
||||
typedef typename boost::remove_pointer<TypeReferred> ::type TypePointee;
|
||||
typedef typename boost::remove_cv<TypePointee> ::type TypePlain;
|
||||
|
||||
typedef typename Unwrap<TypePlain> ::Type Type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/** Type definition helper for pointer and reference types.
|
||||
* Allows to create a member field and to get the basic type
|
||||
* irrespective if the given type is plain, pointer or reference
|
||||
*/
|
||||
template<typename TY>
|
||||
struct RefTraits
|
||||
{
|
||||
typedef TY* pointer;
|
||||
typedef TY& reference;
|
||||
typedef TY value_type;
|
||||
typedef value_type member_type;
|
||||
};
|
||||
|
||||
template<typename TY>
|
||||
struct RefTraits<TY *>
|
||||
{
|
||||
typedef TY* pointer;
|
||||
typedef TY& reference;
|
||||
typedef TY value_type;
|
||||
typedef pointer member_type;
|
||||
};
|
||||
|
||||
template<typename TY>
|
||||
struct RefTraits<TY &>
|
||||
{
|
||||
typedef TY* pointer;
|
||||
typedef TY& reference;
|
||||
typedef TY value_type;
|
||||
typedef lib::wrapper::AssignableRefWrapper<TY> member_type;
|
||||
};
|
||||
//////////////////////////////////////////TODO: member_type not needed anymore 12/09 -- obsolete? useful? keep it?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -69,5 +257,71 @@ namespace typelist {
|
|||
};
|
||||
|
||||
|
||||
}} // namespace lumiera::typelist
|
||||
|
||||
|
||||
/** Trait template to detect a type usable with the STL for-each loop.
|
||||
* Basically we're looking for the functions to get the begin/end iterator
|
||||
*/
|
||||
template<typename T>
|
||||
class can_STL_ForEach
|
||||
{
|
||||
typedef typename Strip<T>::Type Type;
|
||||
|
||||
struct is_iterable
|
||||
{
|
||||
META_DETECT_NESTED(iterator);
|
||||
META_DETECT_FUNCTION(typename X::iterator, begin,(void));
|
||||
META_DETECT_FUNCTION(typename X::iterator, end ,(void));
|
||||
|
||||
enum { value = HasNested_iterator<Type>::value
|
||||
&& HasFunSig_begin<Type>::value
|
||||
&& HasFunSig_end<Type>::value
|
||||
};
|
||||
};
|
||||
|
||||
struct is_const_iterable
|
||||
{
|
||||
META_DETECT_NESTED(const_iterator);
|
||||
META_DETECT_FUNCTION(typename X::const_iterator, begin,(void) const);
|
||||
META_DETECT_FUNCTION(typename X::const_iterator, end ,(void) const);
|
||||
|
||||
enum { value = HasNested_const_iterator<Type>::value
|
||||
&& HasFunSig_begin<Type>::value
|
||||
&& HasFunSig_end<Type>::value
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
public:
|
||||
enum { value = is_iterable::value
|
||||
|| is_const_iterable::value
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/** Trait template to detect a type usable immediately as
|
||||
* "Lumiera Forward Iterator" in a specialised for-each loop
|
||||
* This is just a heuristic, based on some common properties
|
||||
* of such iterators; it is enough to distinguish it from an
|
||||
* STL container, but can certainly be refined.
|
||||
*/
|
||||
template<typename T>
|
||||
class can_IterForEach
|
||||
{
|
||||
typedef typename Strip<T>::Type Type;
|
||||
|
||||
META_DETECT_NESTED(value_type);
|
||||
META_DETECT_OPERATOR_DEREF();
|
||||
META_DETECT_OPERATOR_INC();
|
||||
|
||||
public:
|
||||
enum{ value = boost::is_convertible<Type, bool>::value
|
||||
&& HasNested_value_type<Type>::value
|
||||
&& HasOperator_deref<Type>::value
|
||||
&& HasOperator_inc<Type>::value
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
}} // namespace lib::meta
|
||||
#endif
|
||||
|
|
|
|||
130
src/lib/multifact-arg.hpp
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
/*
|
||||
MULTIFACT-ARG.hpp - variant of family-of-object factory, accepting fabrication arguments
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
/** @file multifact.hpp
|
||||
** Extension allowing the MultiFact to pass arguments to the fabrication.
|
||||
** This extension is implemented by template specialisations and thus kicks in
|
||||
** when specifying a function \em signature as factory "product type". The resulting
|
||||
** factory class exposes a function call operator matching this signature, additionally
|
||||
** expecting the ID (to select the specific fabrication function) as first parameter.
|
||||
**
|
||||
** @note the function signature used for this variant of MultiFact should specify
|
||||
** the raw/base (interface) type of the produced objects as a return type.
|
||||
** Depending on the used wrapper, the actual fabrication functions indeed
|
||||
** should yield the product in a form suitable to be accepted by the
|
||||
** wrapper. E.g., when building smart-ptrs, the fabrication function
|
||||
** should actually deliver a raw pointer to a heap allocated object.
|
||||
**
|
||||
** @see multifact-argument-test.cpp
|
||||
** @see query-resolver.cpp usage example
|
||||
** @see multifact.hpp standard case
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIB_MULTIFACT_ARG_H
|
||||
#define LIB_MULTIFACT_ARG_H
|
||||
|
||||
|
||||
#include "lib/multifact.hpp"
|
||||
|
||||
#include "lib/meta/function.hpp"
|
||||
|
||||
|
||||
|
||||
namespace lib {
|
||||
namespace factory {
|
||||
|
||||
|
||||
using lumiera::typelist::Types;
|
||||
using lumiera::typelist::FunctionSignature;
|
||||
using lumiera::typelist::FunctionTypedef;
|
||||
using std::tr1::function;
|
||||
|
||||
|
||||
/**
|
||||
* Extended MultiFact configuration for arbitrary fabrication functions.
|
||||
* Contrary to the (simple) standard case, such fabrication functions
|
||||
* take additional arguments on each invocation. These arguments need
|
||||
* to be passed through by MultiFact. Moreover, the actual Wrapper
|
||||
* used may require these fabrication functions to deliver their
|
||||
* product in a specific form, e.g. as pointer or reference.
|
||||
* Thus, we have to re-build the actual signature of the
|
||||
* fabrication functions to be installed into MultiFact.
|
||||
*/
|
||||
template< typename SIG
|
||||
, template<class> class Wrapper
|
||||
>
|
||||
struct FabWiring<function<SIG>, Wrapper>
|
||||
: Wrapper<typename FunctionSignature<function<SIG> >::Ret>
|
||||
{
|
||||
typedef typename FunctionSignature<function<SIG> >::Args Args;
|
||||
typedef typename FunctionSignature<function<SIG> >::Ret Element;
|
||||
typedef typename Wrapper<Element>::PType WrappedProduct;
|
||||
typedef typename Wrapper<Element>::RType FabProduct;
|
||||
typedef typename FunctionTypedef<FabProduct, Args>::Sig SIG_Fab;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Variant of MultiFact, accepting an additional invocation argument.
|
||||
* Similar to the (simple) standard case, this MultiFact specialisation
|
||||
* allows to install suitable fabrication function(s) at runtime and
|
||||
* will select the function to use on invocation based on the given ID.
|
||||
* One additional argument will be passed on to this function.
|
||||
* @todo with a bit more metaprogramming it would be possible to
|
||||
* accept multiple arguments; maybe we'll need this later on.
|
||||
*/
|
||||
template< typename ELM, typename ARG
|
||||
, typename ID
|
||||
, template<class> class Wrapper
|
||||
>
|
||||
class MultiFact<ELM(ARG), ID, Wrapper>
|
||||
: public MultiFact<function<ELM(ARG)>,ID,Wrapper>
|
||||
{
|
||||
typedef MultiFact<function<ELM(ARG)>,ID,Wrapper> _Base;
|
||||
typedef typename _Base::Creator Creator;
|
||||
|
||||
public:
|
||||
typedef typename _Base::Product Product;
|
||||
|
||||
Product
|
||||
operator() (ID const& id, ARG arg)
|
||||
{
|
||||
Creator& func = selectProducer (id);
|
||||
return wrap (func(arg));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // namespace factory
|
||||
|
||||
|
||||
|
||||
// TODO is there some suitable standard configuration we could provide here??
|
||||
|
||||
|
||||
} // namespace lib
|
||||
#endif
|
||||
|
|
@ -22,9 +22,32 @@
|
|||
|
||||
/** @file multifact.hpp
|
||||
** Building blocks of a configurable factory, generating families of related objects.
|
||||
** Serving the "classical" factory situation: obtaining objects of various kinds, which
|
||||
** are related somehow (usually through an common interface). The creation of these
|
||||
** objects is non-trivial while number and exact parametrisation aren't known beforehand
|
||||
** and need to be figured out at runtime. Thus, a number of "fabrication lines" is set up,
|
||||
** to be selected on invocation through an ID (which may be symbolic, hashed or structural).
|
||||
**
|
||||
** @todo WIP-WIP-WIP ... currently collecting various bits of implementation here. TICKET #277
|
||||
** Usually, the issue of object and storage management is closely related, while it is
|
||||
** desirable to keep the object production logic clean of these rather technical concerns.
|
||||
** The implementation built here separates the latter into a policy template invoked as a
|
||||
** \em wrapper, accepting the raw product and either registering it, taking ownership, clone
|
||||
** it or use it for more involved wiring. Obviously, the product generated by the installed
|
||||
** "fabrication lines" needs to be delivered in a form acceptable by the concrete wrapper;
|
||||
** mismatch will be spotted by the compiler on registration of the respective fabrication
|
||||
** function.
|
||||
**
|
||||
** \par Singleton generation
|
||||
** For the very common situation of needing various singleton objects, accessible by ID,
|
||||
** there is a convenience shortcut: The nested MultiFact::Singleton template can be instantiated
|
||||
** within the context providing the objects (usually a static context). In itself a lib::Singleton
|
||||
** factory, it automatically registers the singleton access function as "fabrication" function
|
||||
** into a suitable MultiFact instance passed in as ctor parameter.
|
||||
**
|
||||
** @note there is an extension header, multifact-arg.hpp, which provides template specialisations
|
||||
** for the special case when the fabrication functions need additional invocation arguments.
|
||||
**
|
||||
** @see multifact-test.cpp
|
||||
** @see SingletonFactory
|
||||
** @see lib::factory::Factory
|
||||
*/
|
||||
|
|
@ -39,6 +62,7 @@
|
|||
#include "util.hpp"
|
||||
|
||||
#include <tr1/functional>
|
||||
#include <tr1/memory>
|
||||
#include <map>
|
||||
|
||||
|
||||
|
|
@ -46,6 +70,7 @@
|
|||
namespace lib {
|
||||
namespace factory {
|
||||
|
||||
//////TODO: couldn't these wrappers be extracted into a separate header?
|
||||
|
||||
/**
|
||||
* Dummy "wrapper",
|
||||
|
|
@ -54,26 +79,44 @@ namespace lib {
|
|||
template<typename TAR>
|
||||
struct PassReference
|
||||
{
|
||||
typedef TAR& RType;
|
||||
typedef TAR& PType;
|
||||
|
||||
PType wrap (TAR& object) { return object; }
|
||||
PType wrap (RType object) { return object; }
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Wrapper taking ownership,
|
||||
* by wrapping into smart-ptr
|
||||
*/
|
||||
template<typename TAR>
|
||||
struct BuildRefcountPtr
|
||||
{
|
||||
typedef TAR* RType;
|
||||
typedef std::tr1::shared_ptr<TAR> PType;
|
||||
|
||||
PType wrap (RType ptr) { return PType (ptr); }
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Table of registered production functions for MultiFact.
|
||||
* Each stored function can be accessed by ID and is able
|
||||
* to fabricate a specific object, which is assignable to TY
|
||||
* to fabricate a specific object, which is assignable to
|
||||
* the nominal target type in the MultiFact definition.
|
||||
*/
|
||||
template<typename TY, typename ID>
|
||||
template<typename SIG, typename ID>
|
||||
struct Fab
|
||||
{
|
||||
typedef TY& RawProduct;
|
||||
typedef std::tr1::function<RawProduct(void)> FactoryFunc;
|
||||
typedef std::tr1::function<SIG> FactoryFunc;
|
||||
|
||||
|
||||
FactoryFunc&
|
||||
select (ID id)
|
||||
select (ID const& id)
|
||||
{
|
||||
if (!contains (id))
|
||||
throw lumiera::error::Invalid("unknown factory product requested.");
|
||||
|
|
@ -82,7 +125,7 @@ namespace lib {
|
|||
}
|
||||
|
||||
void
|
||||
defineProduction (ID id, FactoryFunc fun)
|
||||
defineProduction (ID const& id, FactoryFunc fun)
|
||||
{
|
||||
producerTable_[id] = fun;
|
||||
}
|
||||
|
|
@ -99,6 +142,23 @@ namespace lib {
|
|||
|
||||
|
||||
|
||||
/**
|
||||
* @internal configuration of the elements
|
||||
* to be combined into a MultiFact instance
|
||||
*/
|
||||
template< typename TY
|
||||
, template<class> class Wrapper
|
||||
>
|
||||
struct FabWiring
|
||||
: Wrapper<TY>
|
||||
{
|
||||
typedef typename Wrapper<TY>::PType WrappedProduct;
|
||||
typedef typename Wrapper<TY>::RType FabProduct;
|
||||
typedef FabProduct SIG_Fab(void);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Factory for creating a family of objects by ID.
|
||||
* The actual factory functions are to be installed
|
||||
|
|
@ -114,20 +174,32 @@ namespace lib {
|
|||
, template<class> class Wrapper
|
||||
>
|
||||
class MultiFact
|
||||
: Wrapper<TY>
|
||||
: public FabWiring<TY,Wrapper>
|
||||
{
|
||||
typedef Fab<TY,ID> _Fab;
|
||||
typedef typename _Fab::FactoryFunc Creator;
|
||||
typedef typename Wrapper<TY>::PType Product;
|
||||
typedef FabWiring<TY,Wrapper> _Conf;
|
||||
typedef typename _Conf::SIG_Fab SIG_Fab;
|
||||
typedef Fab<SIG_Fab,ID> _Fab;
|
||||
|
||||
_Fab funcTable_;
|
||||
|
||||
|
||||
public:
|
||||
Product
|
||||
operator() (ID id)
|
||||
protected:
|
||||
typedef typename _Fab::FactoryFunc Creator;
|
||||
|
||||
Creator&
|
||||
selectProducer (ID const& id)
|
||||
{
|
||||
Creator& func = funcTable_.select(id);
|
||||
return funcTable_.select(id);
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
typedef typename _Conf::WrappedProduct Product;
|
||||
|
||||
Product
|
||||
operator() (ID const& id)
|
||||
{
|
||||
Creator& func = selectProducer (id);
|
||||
return wrap (func());
|
||||
}
|
||||
|
||||
|
|
@ -146,7 +218,7 @@ namespace lib {
|
|||
/**
|
||||
* Convenience shortcut for automatically setting up
|
||||
* a production line, fabricating a singleton instance
|
||||
* of the given target type (TAR)
|
||||
* of the given implementation target type (IMP)
|
||||
*/
|
||||
template<class IMP>
|
||||
class Singleton
|
||||
|
|
@ -170,7 +242,7 @@ namespace lib {
|
|||
|
||||
|
||||
/* === diagnostics === */
|
||||
|
||||
|
||||
bool empty () const { return funcTable_.empty(); }
|
||||
bool contains (ID id) const { return funcTable_.contains (id); }
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,26 +37,23 @@
|
|||
/**
|
||||
* Mutual exclusive section.
|
||||
*/
|
||||
#define LUMIERA_MUTEX_SECTION(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
lumiera_lock_section_.lock = (mtx); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (mtx)->rh, "acquire mutex", lumiera_lock_section_.rh) \
|
||||
{ \
|
||||
if (pthread_mutex_lock (&(mtx)->mutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_MUTEX_SECTION(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
mtx, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
RESOURCE_WAIT (nobugflag, (mtx)->rh, "acquire mutex", lumiera_lock_section_.rh); \
|
||||
if (pthread_mutex_lock (&(mtx)->mutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -66,30 +63,25 @@
|
|||
* This macro should only be used inside LUMIERA_MUTEX_SECTION and should be
|
||||
* called on the correct mutexes, period.
|
||||
*/
|
||||
|
||||
#define LUMIERA_MUTEX_SECTION_CHAIN(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
lumiera_lock_section_.lock = mtx; \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (mtx)->rh, "acquire mutex", lumiera_lock_section_.rh) \
|
||||
{ \
|
||||
if (pthread_mutex_lock (&(mtx)->mutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
#define LUMIERA_MUTEX_SECTION_CHAIN(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
mtx, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
RESOURCE_WAIT (nobugflag, (mtx)->rh, "acquire mutex", lumiera_lock_section_.rh); \
|
||||
if (pthread_mutex_lock (&(mtx)->mutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
#define LUMIERA_MUTEX_SECTION_UNLOCK \
|
||||
LUMIERA_SECTION_UNLOCK_(&lumiera_lock_section_)
|
||||
|
|
|
|||
|
|
@ -41,51 +41,45 @@
|
|||
* @param nobugflag NoBug flag used to log actions on the condition
|
||||
* @param cnd Condition variable to be locked
|
||||
*/
|
||||
#define LUMIERA_RECCONDITION_SECTION(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_reccond_section_ = { \
|
||||
(void*)1, lumiera_reccondition_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_reccond_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
lumiera_reccond_section_.lock = (cnd); \
|
||||
NOBUG_IF_ALPHA(lumiera_reccond_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (cnd)->rh, "acquire reccondmutex", lumiera_reccond_section_.rh) \
|
||||
{ \
|
||||
if (pthread_mutex_lock (&(cnd)->reccndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_reccond_section_.rh); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_reccond_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_RECCONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_RECCONDITION_SECTION(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_reccond_section_ = { \
|
||||
cnd, lumiera_reccondition_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_reccond_section_.lock) \
|
||||
{ \
|
||||
RESOURCE_WAIT (nobugflag, (cnd)->rh, "acquire reccondmutex", lumiera_reccond_section_.rh); \
|
||||
if (pthread_mutex_lock (&(cnd)->reccndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_reccond_section_.rh); \
|
||||
} \
|
||||
lumiera_reccond_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_RECCONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
|
||||
#define LUMIERA_RECCONDITION_SECTION_CHAIN(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock *lumiera_reccond_section_old_ = &lumiera_reccond_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_reccond_section_ = { \
|
||||
(void*)1, lumiera_reccondition_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_reccond_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
REQUIRE (lumiera_reccond_section_old_->lock, "section prematurely unlocked"); \
|
||||
lumiera_reccond_section_.lock = (cnd); \
|
||||
NOBUG_IF_ALPHA(lumiera_reccond_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (cnd)->rh, "acquire reccondmutex", lumiera_reccond_section_.rh) \
|
||||
{ \
|
||||
if (pthread_mutex_lock (&(cnd)->reccndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_reccond_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_reccond_section_old_); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_reccond_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_RECCONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_RECCONDITION_SECTION_CHAIN(nobugflag, cnd) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_reccond_section_ = { \
|
||||
cnd, lumiera_reccondition_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_reccond_section_.lock) \
|
||||
{ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
RESOURCE_WAIT (nobugflag, (cnd)->rh, "acquire reccondmutex", lumiera_reccond_section_.rh); \
|
||||
if (pthread_mutex_lock (&(cnd)->reccndmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_reccond_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
lumiera_reccond_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_RECCONDITION_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
#define LUMIERA_RECCONDITION_SECTION_UNLOCK \
|
||||
|
|
|
|||
|
|
@ -36,47 +36,45 @@
|
|||
/**
|
||||
* Recursive Mutual exclusive section.
|
||||
*/
|
||||
#define LUMIERA_RECMUTEX_SECTION(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
lumiera_lock_section_.lock = (mtx); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_ENTER (nobugflag, (mtx)->rh, "acquire recmutex", \
|
||||
NOBUG_RESOURCE_WAITING, lumiera_lock_section_.rh); \
|
||||
if (pthread_mutex_lock (&(mtx)->recmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_lock_section_.rh); \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
#define LUMIERA_RECMUTEX_SECTION(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
mtx, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
RESOURCE_ENTER (nobugflag, (mtx)->rh, "acquire recmutex", \
|
||||
NOBUG_RESOURCE_WAITING, lumiera_lock_section_.rh); \
|
||||
if (pthread_mutex_lock (&(mtx)->recmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
#define LUMIERA_RECMUTEX_SECTION_CHAIN(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
lumiera_lock_section_.lock = (mtx); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_ENTER (nobugflag, (mtx)->rh, "acquire recmutex", \
|
||||
NOBUG_RESOURCE_WAITING, lumiera_lock_section_.rh); \
|
||||
if (pthread_mutex_lock (&(mtx)->recmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_) \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
#define LUMIERA_RECMUTEX_SECTION_CHAIN(nobugflag, mtx) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
mtx, lumiera_mutex_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
RESOURCE_ENTER (nobugflag, (mtx)->rh, "acquire recmutex", \
|
||||
NOBUG_RESOURCE_WAITING, lumiera_lock_section_.rh); \
|
||||
if (pthread_mutex_lock (&(mtx)->recmutex)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_RECURSIVE, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
|
|
|
|||
151
src/lib/rwlock.h
|
|
@ -45,101 +45,88 @@ LUMIERA_ERROR_DECLARE(RWLOCK_WRLOCK);
|
|||
/**
|
||||
* Read locked section.
|
||||
*/
|
||||
#define LUMIERA_RDLOCK_SECTION(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
lumiera_lock_section_.lock = (rwlck); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire readlock", lumiera_lock_section_.rh) \
|
||||
{ \
|
||||
if (pthread_rwlock_rdlock (&(rwlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_SHARED, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_RWLOCK_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_RDLOCK_SECTION(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
rwlck, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire readlock", lumiera_lock_section_.rh); \
|
||||
if (pthread_rwlock_rdlock (&(rwlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_SHARED, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_RWLOCK_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
#define LUMIERA_RDLOCK_SECTION_CHAIN(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
lumiera_lock_section_.lock = (rwlck); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire readlock", lumiera_lock_section_.rh) \
|
||||
{ \
|
||||
if (pthread_rwlock_rdlock (&(rwlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_SHARED, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
#define LUMIERA_RDLOCK_SECTION_CHAIN(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
rwlck, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire readlock", lumiera_lock_section_.rh); \
|
||||
if (pthread_rwlock_rdlock (&(rwlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_SHARED, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Write locked section.
|
||||
*/
|
||||
#define LUMIERA_WRLOCK_SECTION(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
lumiera_lock_section_.lock = (rwlck); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire writelock", lumiera_lock_section_.rh) \
|
||||
{ \
|
||||
if (pthread_rwlock_wrlock (&(rwlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_RWLOCK_SECTION_UNLOCK; \
|
||||
}))
|
||||
#define LUMIERA_WRLOCK_SECTION(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) \
|
||||
lumiera_lock_section_ = { \
|
||||
rwlck, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire writelock", lumiera_lock_section_.rh); \
|
||||
if (pthread_rwlock_wrlock (&(rwlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_RWLOCK_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
#define LUMIERA_WRLOCK_SECTION_CHAIN(nobugflag, rwlck) \
|
||||
for (lumiera_sectionlock *lumiera_lock_section_old_ = &lumiera_lock_section_, \
|
||||
NOBUG_CLEANUP(lumiera_sectionlock_ensureunlocked) lumiera_lock_section_ = { \
|
||||
(void*)1, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA_NULL NOBUG_ALPHA_COMMA_NULL}; \
|
||||
lumiera_lock_section_.lock;) \
|
||||
for ( \
|
||||
({ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
lumiera_lock_section_.lock = (rwlck); \
|
||||
NOBUG_IF_ALPHA(lumiera_lock_section_.flag = &NOBUG_FLAG(nobugflag);) \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire writelock", lumiera_lock_section_.rh) \
|
||||
{ \
|
||||
if (pthread_rwlock_wrlock (&(twlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
}); \
|
||||
lumiera_lock_section_.lock; \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
rwlck, lumiera_rwlock_unlock_cb NOBUG_ALPHA_COMMA(&NOBUG_FLAG(nobugflag)) NOBUG_ALPHA_COMMA_NULL}; \
|
||||
({ \
|
||||
if (lumiera_lock_section_.lock) \
|
||||
{ \
|
||||
REQUIRE (lumiera_lock_section_old_->lock, "section prematurely unlocked"); \
|
||||
RESOURCE_WAIT (nobugflag, (rwlck)->rh, "acquire writelock", lumiera_lock_section_.rh); \
|
||||
if (pthread_rwlock_wrlock (&(twlck)->rwlock)) \
|
||||
LUMIERA_DIE (LOCK_ACQUIRE); \
|
||||
RESOURCE_STATE (nobugflag, NOBUG_RESOURCE_EXCLUSIVE, lumiera_lock_section_.rh); \
|
||||
LUMIERA_SECTION_UNLOCK_(lumiera_lock_section_old_); \
|
||||
} \
|
||||
lumiera_lock_section_.lock; \
|
||||
}); \
|
||||
({ \
|
||||
LUMIERA_MUTEX_SECTION_UNLOCK; \
|
||||
}))
|
||||
|
||||
|
||||
#define LUMIERA_RWLOCK_SECTION_UNLOCK \
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ namespace lib {
|
|||
char content_[sizeof(TY)];
|
||||
char created_;
|
||||
|
||||
typedef ScopedHolder<TY> _ThisType;
|
||||
typedef ScopedHolder<TY> _ThisType; ////TODO can get rid of this typedef, after using BoolCheckable
|
||||
|
||||
|
||||
static char must_be_empty (_ThisType const& ref)
|
||||
|
|
@ -216,6 +216,7 @@ namespace lib {
|
|||
|
||||
typedef char _ThisType::*unspecified_bool_type;
|
||||
|
||||
//////////////////////////////////TICKET #178
|
||||
/** implicit conversion to "bool" */
|
||||
operator unspecified_bool_type() const // never throws
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,7 +23,15 @@
|
|||
/** @file singleton-ref.hpp
|
||||
** Helper for singleton-kind access without managing object creation and lifecycle.
|
||||
** A typical usage scenario is when implementing C Language Interfaces without any
|
||||
** canonical access to some "this" pointer.
|
||||
** canonical access to some "this" pointer. In this case
|
||||
** - an instance of the \c Access policy class is created "somewhere" (usually as
|
||||
** global variable). Calls from within the C code would enter through this accessor.
|
||||
** - when the actual service implementation class comes up, it creates an SingletonRef
|
||||
** instance and thereby wires the (already existing) accessor up with \c *this
|
||||
** - when the service goes down, access is closed automatically and reliably.
|
||||
** Client code (from within C) should check the accessor (by \c bool check)
|
||||
** prior to any access, because accessing a closed connection will throw
|
||||
** (that's unfortunate, but at least throwing is better than segfaulting)
|
||||
**
|
||||
** @see gui::NotificationService usage example
|
||||
*/
|
||||
|
|
@ -90,7 +98,11 @@ namespace lib {
|
|||
|
||||
/*************************************************************
|
||||
* Helper template providing singleton access without managing
|
||||
* object creation and lifecycle.
|
||||
* object creation and lifecycle. Just the access to the
|
||||
* implementation instance is handled: on creation, access is
|
||||
* enabled, and disabled on destruction. Client code is assumed
|
||||
* to invoke through the Access (template template param),
|
||||
* handed in as ctor parameter.
|
||||
* @param TY the actual type to be made accessible
|
||||
* @param B a base class to inherit from; defaults to noncopyable
|
||||
* @param Accessor how to implement the static instance access
|
||||
|
|
|
|||
|
|
@ -49,14 +49,19 @@
|
|||
#include "lib/format.hpp"
|
||||
|
||||
//#include <functional>
|
||||
#include <boost/functional/hash.hpp> /////TODO better push the hash implementation into a cpp file (and btw, do it more seriously!)
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
|
||||
namespace lib {
|
||||
|
||||
using std::string;
|
||||
using boost::hash_value;
|
||||
|
||||
using std::ostream;
|
||||
using std::string;
|
||||
using std::cout;
|
||||
|
||||
|
||||
|
||||
|
|
@ -73,15 +78,32 @@ namespace lib {
|
|||
|
||||
virtual operator string() const =0;
|
||||
};
|
||||
|
||||
|
||||
ostream&
|
||||
operator<< (ostream& os, SubID const& sID)
|
||||
{
|
||||
return os << string(sID);
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline ostream&
|
||||
operator<< (ostream& os, SubID const& sID)
|
||||
{
|
||||
return os << string(sID);
|
||||
}
|
||||
|
||||
inline size_t
|
||||
hash_value (SubID const& sID)
|
||||
{
|
||||
return hash_value (string (sID));
|
||||
}
|
||||
|
||||
inline bool
|
||||
operator== (SubID const& id1, SubID const& id2)
|
||||
{
|
||||
return (string (id1) == string (id2));
|
||||
}
|
||||
|
||||
////////TODO a serious implementation should descend recursively, instead of relying on the string representation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template<typename I>
|
||||
class SubId
|
||||
|
|
@ -96,7 +118,8 @@ namespace lib {
|
|||
|
||||
operator string() const
|
||||
{
|
||||
return util::str (baseID_);
|
||||
using util::str;
|
||||
return str (baseID_); // note: extension point
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -67,10 +67,13 @@ namespace lib {
|
|||
size_t hash_value (Literal sym)
|
||||
{
|
||||
size_t hash=0;
|
||||
const char *pos = sym;
|
||||
size_t maxpos = STRING_MAX_RELEVANT;
|
||||
for ( ; pos && --maxpos; ++pos)
|
||||
hash_combine(hash, *pos);
|
||||
if (sym)
|
||||
{
|
||||
const char *pos = sym;
|
||||
size_t maxpos = STRING_MAX_RELEVANT;
|
||||
for ( ; *pos && --maxpos; ++pos)
|
||||
hash_combine(hash, *pos);
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ namespace lib {
|
|||
/** inline string literal
|
||||
* @todo improve interaction with Symbol
|
||||
* @todo make it non-nullable
|
||||
* @todo maybe use boost/operators Ticket #417
|
||||
*/
|
||||
class Literal
|
||||
{
|
||||
|
|
@ -126,6 +127,32 @@ namespace lib {
|
|||
return ! (sy1 == sy2);
|
||||
}
|
||||
|
||||
/// comparison with c-strings //////TICKET #417
|
||||
inline bool
|
||||
operator== (Literal sy1, const char* const sy2)
|
||||
{
|
||||
return (sy1 == Literal(sy2));
|
||||
}
|
||||
|
||||
inline bool
|
||||
operator== (const char* const sy1, Literal sy2)
|
||||
{
|
||||
return (Literal(sy1) == sy2);
|
||||
}
|
||||
|
||||
inline bool
|
||||
operator!= (Literal sy1, const char* const sy2)
|
||||
{
|
||||
return ! (sy1 == Literal(sy2));
|
||||
}
|
||||
|
||||
inline bool
|
||||
operator!= (const char* const sy1, Literal sy2)
|
||||
{
|
||||
return ! (Literal(sy1) == sy2);
|
||||
}
|
||||
|
||||
/// string concatenation
|
||||
inline std::string
|
||||
operator+ (std::string str, Literal const& sym)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -41,5 +41,21 @@ namespace test{
|
|||
}
|
||||
|
||||
|
||||
/** @todo probably this can be done in a more clever way. Anyone...?
|
||||
*/
|
||||
string
|
||||
randStr (size_t len)
|
||||
{
|
||||
static const string alpha ("aaaabbccddeeeeffgghiiiijjkkllmmnnooooppqqrrssttuuuuvvwwxxyyyyzz0123456789");
|
||||
static const size_t MAXAL (alpha.size());
|
||||
|
||||
string garbage(len,'\0');
|
||||
size_t p = len;
|
||||
while (p)
|
||||
garbage[--p] = alpha[rand() % MAXAL];
|
||||
return garbage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}} // namespace lib::test
|
||||
|
|
|
|||
|
|
@ -110,6 +110,11 @@ namespace test{
|
|||
return Time (500 * (rand() % 2), (rand() % 600));
|
||||
}
|
||||
|
||||
/** create garbage string of given length
|
||||
* @return string containing arbitrary lower case letters and numbers
|
||||
*/
|
||||
string randStr (size_t len);
|
||||
|
||||
|
||||
}} // namespace lib::test
|
||||
|
||||
|
|
|
|||
347
src/lib/util-foreach.hpp
Normal file
|
|
@ -0,0 +1,347 @@
|
|||
/*
|
||||
UTIL-FOREACH.hpp - helpers for doing something for each element
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/** @file util-foreach.hpp
|
||||
** Perform operations "for each element" of a collection.
|
||||
** This header defines various flavours of these active iteration functions,
|
||||
** which all take a functor and invoke it in some way over the collection's elements.
|
||||
** - basic constructs
|
||||
** - for_each
|
||||
** - and_all (all quantisation)
|
||||
** - has_any (existence quantisation)
|
||||
** - kinds of collection
|
||||
** - STL collections and anything which has an iterator, \c begin() and \c end()
|
||||
** - "Lumiera Forward Iterator" instance to yield all the elements of the collection
|
||||
** - support for on-the-fly binding up to 4 arguments of the functor
|
||||
**
|
||||
** @warning in the standard case (STL container) the collection to operate on is
|
||||
** taken by \c const& -- but the <b>const is stripped</b> silently.
|
||||
**
|
||||
** Thus, within the iteration, the function passed in can \em modify the original collection.
|
||||
** If you pass in a ref to a temporary, the compiler won't complain. Moreover, several kinds
|
||||
** of wrappers are also <b>stripped silently</b>, including reference_wrapper, shared_ptr and
|
||||
** lumiera::P. The rationale for this non-standard behaviour is to allow convenient writing
|
||||
** of in-line iteration, where even the collection to iterate is yielded by function call.
|
||||
**
|
||||
** @see util-foreach-test.cpp
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifndef UTIL_FOREACH_H
|
||||
#define UTIL_FOREACH_H
|
||||
|
||||
#include "lib/util.hpp"
|
||||
#include "lib/meta/trait.hpp"
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
|
||||
namespace util {
|
||||
|
||||
using boost::enable_if;
|
||||
using boost::disable_if;
|
||||
|
||||
using lib::meta::can_STL_ForEach;
|
||||
using lib::meta::can_IterForEach;
|
||||
|
||||
|
||||
|
||||
/** All quantification: check if all elements of a collection
|
||||
* satisfy the given predicate. Actually a short-circuit
|
||||
* evaluation is performed.
|
||||
*/
|
||||
template <typename IT, typename FUN>
|
||||
inline bool
|
||||
and_all (IT i, IT end, FUN predicate)
|
||||
{
|
||||
for ( ; i!=end; ++i )
|
||||
if (!predicate(*i))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/** Existential quantification: check if any element
|
||||
* of a collection satisfies the given predicate.
|
||||
* Actually, a short-circuit evaluation is performed.
|
||||
*/
|
||||
template <typename IT, typename FUN>
|
||||
inline bool
|
||||
has_any (IT i, IT end, FUN predicate)
|
||||
{
|
||||
for ( ; i!=end; ++i )
|
||||
if (predicate(*i))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* === specialisations for STL containers and Lumiera Forward Iterators === */
|
||||
|
||||
/** operating on all elements of a STL container.
|
||||
* @note the container is taken by \c const& and
|
||||
* the \c const is \em stripped before iteration.
|
||||
* @note this case is the default and kicks in
|
||||
* \em unless we detect a Lumiera iterator.
|
||||
* The handling is different for \c and_all
|
||||
*/
|
||||
template <typename Container
|
||||
,typename FUN
|
||||
>
|
||||
inline typename disable_if< can_IterForEach<Container>,
|
||||
FUN >::type
|
||||
for_each (Container const& coll, FUN doIt)
|
||||
{
|
||||
using lib::meta::unwrap;
|
||||
|
||||
return std::for_each (unwrap(coll).begin()
|
||||
,unwrap(coll).end()
|
||||
, doIt);
|
||||
}
|
||||
|
||||
|
||||
/** operating on a Lumiera Forward Iterator until exhaustion. */
|
||||
template <typename IT
|
||||
,typename FUN
|
||||
>
|
||||
inline typename enable_if< can_IterForEach<IT>,
|
||||
FUN >::type
|
||||
for_each (IT const& ii, FUN doIt)
|
||||
{
|
||||
return std::for_each (ii, IT(), doIt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
template <typename Container
|
||||
,typename FUN
|
||||
>
|
||||
inline typename enable_if< can_STL_ForEach<Container>,
|
||||
bool >::type
|
||||
and_all (Container const& coll, FUN predicate)
|
||||
{
|
||||
using lib::meta::unwrap;
|
||||
|
||||
return and_all (unwrap(coll).begin()
|
||||
,unwrap(coll).end()
|
||||
, predicate);
|
||||
}
|
||||
|
||||
|
||||
template <typename IT
|
||||
,typename FUN
|
||||
>
|
||||
inline typename enable_if< can_IterForEach<IT>,
|
||||
bool >::type
|
||||
and_all (IT const& ii, FUN predicate)
|
||||
{
|
||||
return and_all (ii, IT(), predicate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <typename Container
|
||||
,typename FUN
|
||||
>
|
||||
inline typename enable_if< can_STL_ForEach<Container>,
|
||||
bool >::type
|
||||
has_any (Container const& coll, FUN predicate)
|
||||
{
|
||||
using lib::meta::unwrap;
|
||||
|
||||
return has_any (unwrap(coll).begin()
|
||||
,unwrap(coll).end()
|
||||
, predicate);
|
||||
}
|
||||
|
||||
|
||||
template <typename IT
|
||||
,typename FUN
|
||||
>
|
||||
inline typename enable_if< can_IterForEach<IT>,
|
||||
bool >::type
|
||||
has_any (IT const& ii, FUN predicate)
|
||||
{
|
||||
return has_any (ii, IT(), predicate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* === allow creating argument binders on-the-fly === */
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
>
|
||||
inline void //________________________________
|
||||
for_each (CON const& elements, FUN function, P1 bind1) ///< Accept binding for 1 Argument
|
||||
{
|
||||
for_each (elements, std::tr1::bind (function, bind1));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
>
|
||||
inline void //________________________________
|
||||
for_each (CON const& elements, FUN function, P1 bind1, P2 bind2) ///< Accept binding for 2 Arguments
|
||||
{
|
||||
for_each (elements, std::tr1::bind (function, bind1, bind2));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
, typename P3
|
||||
>
|
||||
inline void //________________________________
|
||||
for_each (CON const& elements, FUN function, P1 bind1, P2 bind2, P3 bind3) ///< Accept binding for 3 Arguments
|
||||
{
|
||||
for_each (elements, std::tr1::bind (function, bind1, bind2, bind3));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
, typename P3
|
||||
, typename P4
|
||||
>
|
||||
inline void //________________________________
|
||||
for_each (CON const& elements, FUN function, P1 bind1, P2 bind2, P3 bind3, P4 bind4) ///< Accept binding for 4 Arguments
|
||||
{
|
||||
for_each (elements, std::tr1::bind (function, bind1, bind2, bind3, bind4));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
>
|
||||
inline bool //________________________________
|
||||
and_all (CON const& elements, FUN function, P1 bind1) ///< Accept binding for 1 Argument
|
||||
{
|
||||
return and_all (elements, std::tr1::bind<bool> (function, bind1));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
>
|
||||
inline bool //________________________________
|
||||
and_all (CON const& elements, FUN function, P1 bind1, P2 bind2) ///< Accept binding for 2 Arguments
|
||||
{
|
||||
return and_all (elements, std::tr1::bind<bool> (function, bind1, bind2));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
, typename P3
|
||||
>
|
||||
inline bool //________________________________
|
||||
and_all (CON const& elements, FUN function, P1 bind1, P2 bind2, P3 bind3) ///< Accept binding for 3 Arguments
|
||||
{
|
||||
return and_all (elements, std::tr1::bind<bool> (function, bind1, bind2, bind3));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
, typename P3
|
||||
, typename P4
|
||||
>
|
||||
inline bool //________________________________
|
||||
and_all (CON const& elements, FUN function, P1 bind1, P2 bind2, P3 bind3, P4 bind4) ///< Accept binding for 4 Arguments
|
||||
{
|
||||
return and_all (elements, std::tr1::bind<bool> (function, bind1, bind2, bind3, bind4));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
>
|
||||
inline bool //________________________________
|
||||
has_any (CON const& elements, FUN function, P1 bind1) ///< Accept binding for 1 Argument
|
||||
{
|
||||
return has_any (elements, std::tr1::bind<bool> (function, bind1));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
>
|
||||
inline bool //________________________________
|
||||
has_any (CON const& elements, FUN function, P1 bind1, P2 bind2) ///< Accept binding for 2 Arguments
|
||||
{
|
||||
return has_any (elements, std::tr1::bind<bool> (function, bind1, bind2));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
, typename P3
|
||||
>
|
||||
inline bool //________________________________
|
||||
has_any (CON const& elements, FUN function, P1 bind1, P2 bind2, P3 bind3) ///< Accept binding for 3 Arguments
|
||||
{
|
||||
return has_any (elements, std::tr1::bind<bool> (function, bind1, bind2, bind3));
|
||||
}
|
||||
|
||||
|
||||
template < typename CON, typename FUN
|
||||
, typename P1
|
||||
, typename P2
|
||||
, typename P3
|
||||
, typename P4
|
||||
>
|
||||
inline bool //________________________________
|
||||
has_any (CON const& elements, FUN function, P1 bind1, P2 bind2, P3 bind3, P4 bind4) ///< Accept binding for 4 Arguments
|
||||
{
|
||||
return has_any (elements, std::tr1::bind<bool> (function, bind1, bind2, bind3, bind4));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} // namespace util
|
||||
#endif /*UTIL_FOREACH_H*/
|
||||
|
|
@ -191,32 +191,6 @@ namespace util {
|
|||
}
|
||||
|
||||
|
||||
/** shortcut for operating on all elements of a container.
|
||||
* Isn't this already defined somewhere? It's so obvious..
|
||||
*/
|
||||
template <typename Container, typename Oper>
|
||||
inline Oper
|
||||
for_each (Container& c, Oper doIt)
|
||||
{
|
||||
return std::for_each (c.begin(),c.end(), doIt);
|
||||
}
|
||||
|
||||
|
||||
/** shortcut for testing all elements of a collection
|
||||
* with the given predicate.
|
||||
*/
|
||||
template <typename SEQ, typename Oper>
|
||||
inline bool
|
||||
and_all (SEQ& coll, Oper predicate)
|
||||
{
|
||||
typename SEQ::const_iterator e = coll.end();
|
||||
typename SEQ::const_iterator i = coll.begin();
|
||||
|
||||
while (i!=e && predicate(*i)) ++i;
|
||||
return i==e;
|
||||
}
|
||||
|
||||
|
||||
/** shortcut to save some typing when having to define
|
||||
* const and non-const variants of member functions
|
||||
*/
|
||||
|
|
|
|||
378
src/lib/wrapper.hpp
Normal file
|
|
@ -0,0 +1,378 @@
|
|||
/*
|
||||
WRAPPER.hpp - some smart wrapping and reference managing helper templates
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
/** @file wrapper.hpp
|
||||
** Library implementation: smart-pointer variations, wrappers and managing holders.
|
||||
** This is (intended to become) a loose collection of the various small helper templates
|
||||
** for wrapping, containing, placing or handling a somewhat \em problematic other object.
|
||||
** Mostly these are implemented to suit a specific need and then factored out later on.
|
||||
** - AssignableRefWrapper is not used anymore as of 12/09
|
||||
** - ItemWrapper is a similar concept, but more like a smart-ptr. Moreover,
|
||||
** it can be instantiated with a value type, a pointer or a reference type,
|
||||
** yielding the same behaviour in all cases (useful for building templates)
|
||||
** - FunctionResult is the combination of ItemWrapper with a functor object
|
||||
** to cache the function result value. It is used to implement a transforming
|
||||
** iterator, especially supporting the case when the transformation function
|
||||
** is to return a reference
|
||||
**
|
||||
** @see lib::TransformIter
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIB_WRAPPER_H
|
||||
#define LIB_WRAPPER_H
|
||||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/bool-checkable.hpp"
|
||||
#include "lib/meta/function.hpp"
|
||||
#include "lib/meta/function-closure.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <boost/noncopyable.hpp>
|
||||
#include <tr1/functional>
|
||||
|
||||
|
||||
namespace lib {
|
||||
namespace wrapper {
|
||||
|
||||
using util::unConst;
|
||||
using util::isSameObject;
|
||||
using lumiera::typelist::FunctionSignature;
|
||||
using lumiera::error::LUMIERA_ERROR_BOTTOM_VALUE;
|
||||
|
||||
using boost::remove_const;
|
||||
using std::tr1::function;
|
||||
|
||||
|
||||
/**
|
||||
* Extension to boost::reference_wrapper:
|
||||
* Allows additionally to re-bind to another reference,
|
||||
* almost like a pointer. Helpful for building templates.
|
||||
* @warning potentially dangerous
|
||||
*/
|
||||
template<typename TY>
|
||||
class AssignableRefWrapper
|
||||
: public std::tr1::reference_wrapper<TY>
|
||||
{
|
||||
typedef std::tr1::reference_wrapper<TY> RefWrapper;
|
||||
public:
|
||||
|
||||
explicit AssignableRefWrapper(TY& ref)
|
||||
: RefWrapper(ref)
|
||||
{ }
|
||||
|
||||
AssignableRefWrapper&
|
||||
operator= (RefWrapper const& o)
|
||||
{
|
||||
RefWrapper::operator= (o);
|
||||
return *this;
|
||||
}
|
||||
|
||||
AssignableRefWrapper&
|
||||
operator= (TY& newRef)
|
||||
{
|
||||
(*this) = RefWrapper(newRef);
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Universal value/ref wrapper behaving like a pointer.
|
||||
* A copyable, assignable value object, not managing ownership.
|
||||
* It can be default constructed and \c bool evaluated to detect
|
||||
* an empty holder. The value is retrieved pointer-like, by
|
||||
* explicit dereferentiation. (Contrast this to boost::ref,
|
||||
* where the original reference is retrieved by conversion)
|
||||
*
|
||||
* The purpose of this template is to be able to remember
|
||||
* pretty much any kind of value or pointer or reference,
|
||||
* and to subsume this handling within a single template.
|
||||
* An example would be to remember the value yielded
|
||||
* by a function, without any further assumptions
|
||||
* regarding this function.
|
||||
*/
|
||||
template<typename TY>
|
||||
class ItemWrapper
|
||||
: public BoolCheckable<ItemWrapper<TY> >
|
||||
{
|
||||
|
||||
typedef typename remove_const<TY>::type TY_unconst;
|
||||
|
||||
|
||||
mutable
|
||||
char content_[sizeof(TY)];
|
||||
bool created_;
|
||||
|
||||
void
|
||||
build (TY const& ref)
|
||||
{
|
||||
new(&content_) TY(ref);
|
||||
created_ = true;
|
||||
}
|
||||
|
||||
void
|
||||
discard ()
|
||||
{
|
||||
if (created_) access().~TY();
|
||||
created_ = false;
|
||||
}
|
||||
|
||||
TY&
|
||||
access () const
|
||||
{
|
||||
return reinterpret_cast<TY&> (content_);
|
||||
}
|
||||
|
||||
TY_unconst&
|
||||
access_unconst() const ///< used to assign new buffer contents
|
||||
{
|
||||
return const_cast<TY_unconst&> (access());
|
||||
}
|
||||
|
||||
public:
|
||||
ItemWrapper()
|
||||
: created_(false)
|
||||
{ }
|
||||
|
||||
explicit
|
||||
ItemWrapper(TY const& o)
|
||||
{
|
||||
build (o);
|
||||
}
|
||||
|
||||
~ItemWrapper()
|
||||
{
|
||||
discard();
|
||||
}
|
||||
|
||||
|
||||
/* == copy and assignment == */
|
||||
|
||||
ItemWrapper (ItemWrapper const& ref)
|
||||
: created_(false)
|
||||
{
|
||||
if (ref.isValid())
|
||||
build (*ref);
|
||||
}
|
||||
|
||||
ItemWrapper&
|
||||
operator= (ItemWrapper const& ref)
|
||||
{
|
||||
if (!ref.isValid())
|
||||
discard();
|
||||
else
|
||||
this->operator= (*ref);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename X>
|
||||
ItemWrapper&
|
||||
operator= (X const& something) ///< accept anything assignable to TY
|
||||
{
|
||||
if (!isSameObject (something, access() ))
|
||||
{
|
||||
if (created_)
|
||||
access_unconst() = something;
|
||||
else
|
||||
build (something);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/* == value access == */
|
||||
TY&
|
||||
operator* () const
|
||||
{
|
||||
if (!created_)
|
||||
throw lumiera::error::State ("accessing uninitialised value/ref wrapper"
|
||||
, LUMIERA_ERROR_BOTTOM_VALUE);
|
||||
return access();
|
||||
}
|
||||
|
||||
bool
|
||||
isValid () const
|
||||
{
|
||||
return created_;
|
||||
}
|
||||
|
||||
void
|
||||
reset ()
|
||||
{
|
||||
discard();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Specialisation of the ItemWrapper to deal with references,
|
||||
* as if they were pointer values. Allows the reference value
|
||||
* to be default constructed to \c NULL and to be re-assigned.
|
||||
*/
|
||||
template<typename TY>
|
||||
class ItemWrapper<TY &>
|
||||
: public BoolCheckable<ItemWrapper<TY &> >
|
||||
{
|
||||
|
||||
TY * content_;
|
||||
|
||||
|
||||
public:
|
||||
ItemWrapper()
|
||||
: content_()
|
||||
{ }
|
||||
|
||||
explicit
|
||||
ItemWrapper(TY& o)
|
||||
: content_( &o )
|
||||
{ }
|
||||
|
||||
|
||||
/* using default copy and assignment */
|
||||
|
||||
/** allowing to re-bind the reference */
|
||||
ItemWrapper&
|
||||
operator= (TY& otherRef)
|
||||
{
|
||||
content_ = &otherRef;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* == value access == */
|
||||
TY&
|
||||
operator* () const
|
||||
{
|
||||
if (!content_)
|
||||
throw lumiera::error::State ("accessing uninitialised reference wrapper"
|
||||
, LUMIERA_ERROR_BOTTOM_VALUE);
|
||||
return *content_;
|
||||
}
|
||||
|
||||
bool
|
||||
isValid () const
|
||||
{
|
||||
return bool(content_);
|
||||
}
|
||||
|
||||
void
|
||||
reset ()
|
||||
{
|
||||
content_ = 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** allow equality comparison if the wrapped types are comparable */
|
||||
template<typename TY>
|
||||
inline bool
|
||||
operator== (ItemWrapper<TY> const& w1, ItemWrapper<TY> const& w2)
|
||||
{
|
||||
return (!w1 && !w2)
|
||||
|| ( w1 && w2 && (*w1)==(*w2));
|
||||
}
|
||||
template<typename TY>
|
||||
inline bool
|
||||
operator!= (ItemWrapper<TY> const& w1, ItemWrapper<TY> const& w2)
|
||||
{
|
||||
return !(w1 == w2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Extension of ItemWrapper: a function remembering
|
||||
* the result of the last invocation. Initially, the "value"
|
||||
* is bottom (undefined, NIL), until the function is invoked
|
||||
* for the first time. After that, the result of the last
|
||||
* invocation can be accessed by \c operator*()
|
||||
*
|
||||
* @note non-copyable. (removing this limitation would
|
||||
* require a much more expensive implementation,
|
||||
* by implementing operator() ourselves)
|
||||
*/
|
||||
template<typename SIG>
|
||||
class FunctionResult
|
||||
: public function<SIG>
|
||||
, boost::noncopyable
|
||||
{
|
||||
typedef typename FunctionSignature<function<SIG> >::Ret Res;
|
||||
typedef ItemWrapper<Res> ResWrapper;
|
||||
|
||||
ResWrapper lastResult_;
|
||||
|
||||
|
||||
Res
|
||||
captureResult (Res res)
|
||||
{
|
||||
lastResult_ = res;
|
||||
return res;
|
||||
}
|
||||
|
||||
public:
|
||||
/** default ctor yields an object
|
||||
* locked to \em invalid state */
|
||||
FunctionResult () { }
|
||||
|
||||
/** Create result-remembering functor
|
||||
* by binding the given function. Explanation:
|
||||
* - *this is a \em function
|
||||
* - initially it is defined as invalid
|
||||
* - then we build the function composition of
|
||||
* the target function, and a function storing
|
||||
* the result value into the ResWrapper member
|
||||
* - define ourselves by assigning the resulting
|
||||
* composite function
|
||||
*/
|
||||
template<typename FUN>
|
||||
FunctionResult (FUN targetFunction)
|
||||
{
|
||||
using std::tr1::bind;
|
||||
using std::tr1::placeholders::_1;
|
||||
using lumiera::typelist::func::chained;
|
||||
// note: binding "this" mandates noncopyable
|
||||
function<Res(Res)> doCaptureResult = bind (&FunctionResult::captureResult, this, _1 );
|
||||
function<SIG> chainedWithResCapture = chained (targetFunction, doCaptureResult);
|
||||
|
||||
function<SIG>::operator= (chainedWithResCapture); // define the function (baseclass)
|
||||
}
|
||||
|
||||
|
||||
Res& operator*() const { return *lastResult_; }
|
||||
bool isValid () const { return lastResult_.isValid(); }
|
||||
|
||||
operator bool() const { return isValid(); }
|
||||
// can't use lib::BoolCheckable, because tr1::function implements safe-bool too
|
||||
};
|
||||
|
||||
|
||||
}} // namespace lib::wrap
|
||||
#endif
|
||||
|
|
@ -94,7 +94,6 @@ liblumiprocmobject_la_SOURCES = \
|
|||
$(liblumiprocmobject_la_srcdir)/mobject-ref.cpp \
|
||||
$(liblumiprocmobject_la_srcdir)/parameter.cpp \
|
||||
$(liblumiprocmobject_la_srcdir)/paramprovider.cpp \
|
||||
$(liblumiprocmobject_la_srcdir)/placement-index.cpp \
|
||||
$(liblumiprocmobject_la_srcdir)/placement.cpp
|
||||
|
||||
|
||||
|
|
@ -137,7 +136,6 @@ liblumiprocplay_la_CXXFLAGS = $(AM_CXXFLAGS) -Wall -Wextra
|
|||
liblumiprocplay_la_SOURCES = \
|
||||
$(liblumiprocplay_la_srcdir)/dummy-player-service.cpp \
|
||||
$(liblumiprocplay_la_srcdir)/dummy-image-generator.cpp
|
||||
|
||||
|
||||
|
||||
liblumiprocmobjectsession_la_srcdir = $(top_srcdir)/src/proc/mobject/session
|
||||
|
|
@ -146,32 +144,39 @@ noinst_LTLIBRARIES += liblumiprocmobjectsession.la
|
|||
liblumiprocmobjectsession_la_CFLAGS = $(AM_CFLAGS) -std=gnu99 -Wall -Wextra -Werror
|
||||
liblumiprocmobjectsession_la_CXXFLAGS = $(AM_CXXFLAGS) -Wall -Wextra
|
||||
|
||||
liblumiprocmobjectsession_la_SOURCES = \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/abstractmo.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/allocation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/auto.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/binding.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/clip.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/compoundclip.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/constraint.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/defsmanager.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/effect.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/fixedlocation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/label.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/meta.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/relativelocation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/segment.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/segmentation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/simpleclip.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/plug.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/session-impl.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/sess-manager-impl.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/edl.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/session.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/track.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/fixture.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/locatingpin.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/mobjectfactory.cpp \
|
||||
liblumiprocmobjectsession_la_SOURCES = \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/abstractmo.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/allocation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/auto.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/binding.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/clip.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/compoundclip.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/constraint.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/defsmanager.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/effect.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/fixedlocation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/label.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/meta.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/relativelocation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/segment.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/segmentation.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/simpleclip.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/plug.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/session-impl.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/sess-manager-impl.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/edl.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/session.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/track.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/fixture.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/locatingpin.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/mobjectfactory.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/placement-index.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/query-resolver.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/placement-index-query-resolver.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/session-services.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/root.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/scope.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/scope-path.cpp \
|
||||
$(liblumiprocmobjectsession_la_srcdir)/wish.cpp
|
||||
|
||||
|
||||
|
|
@ -240,6 +245,13 @@ noinst_HEADERS += \
|
|||
$(liblumiproc_la_srcdir)/mobject/session/locatingpin.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/plug.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/defsregistry.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/placement-index.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/query-resolver.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/placement-index-query-resolver.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/session-service-fetch.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/root.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/scope.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/session/scope-path.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/explicitplacement.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/mobject.hpp \
|
||||
$(liblumiproc_la_srcdir)/mobject/placement.hpp \
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include "proc/asset.hpp"
|
||||
#include "proc/assetmanager.hpp"
|
||||
#include "lib/util-foreach.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
#include <boost/format.hpp>
|
||||
|
|
@ -123,7 +124,7 @@ namespace asset {
|
|||
|
||||
// can indeed to do the toggle...
|
||||
this->enabled = on;
|
||||
for_each (dependants, bind (&propagate_down, _1 ,on));
|
||||
for_each (dependants, &propagate_down, _1 ,on);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ namespace asset {
|
|||
static const PAsset NULLP;
|
||||
IdHashtable::const_iterator i = table.find (hash);
|
||||
if (i == table.end())
|
||||
return NULLP; // empty ptr signaling "not found"
|
||||
return NULLP; // empty ptr signalling "not found"
|
||||
else
|
||||
return i->second;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ namespace asset
|
|||
/** use another wiring template. Triggers complete rebuild of the render engine. */
|
||||
void switchProcPatt (PProcPatt& another);
|
||||
|
||||
/** convienience shortcut for retrieving default configured pipes */
|
||||
/** convenience shortcut for retrieving default configured pipes */
|
||||
static PPipe query (string properties) ;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ namespace asset
|
|||
StructFactoryImpl::fabricate (const Query<Track>& caps)
|
||||
{
|
||||
TODO ("actually extract properties/capabilities from the query...");
|
||||
TODO ("make sure AssetManager detects dublicates (currently 4/08 it doesn't)");
|
||||
TODO ("make sure AssetManager detects duplicates (currently 4/08 it doesn't)");
|
||||
return new Track (createIdent (caps));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include "proc/asset/db.hpp"
|
||||
|
||||
#include "lib/sync.hpp"
|
||||
#include "lib/util.hpp"
|
||||
#include "lib/util-foreach.hpp"
|
||||
|
||||
#include <tr1/functional>
|
||||
#include <boost/format.hpp>
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@ namespace asset {
|
|||
/** provide the unique ID for given Asset::Ident tuple */
|
||||
static ID<Asset> getID (const Asset::Ident&);
|
||||
|
||||
/** retrieve the registerd smart-ptr for any asset */
|
||||
/** retrieve the registered smart-ptr for any asset */
|
||||
template<class KIND>
|
||||
static P<KIND> wrap (const KIND& asset);
|
||||
|
||||
/** find and return corresponging object */
|
||||
/** find and return corresponding object */
|
||||
template<class KIND>
|
||||
P<KIND> getAsset (const ID<KIND>& id) throw(lumiera::error::Invalid);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,10 +34,10 @@
|
|||
** \par Services during command lifecycle
|
||||
** Each command starts out as command definition, accessed by client code through CommandDef.
|
||||
** While collecting the necessary parts of such a definition, there is just an empty (pending)
|
||||
** Command (smart-ptr frontend), which is already registered with the intended command-ID.
|
||||
** A lookup on this ID would still fail at this point, as the \link #queryIndex search function \endlink
|
||||
** treats missing and incomplete command definitions similar. When the definition is complete,
|
||||
** a CommandImpl frame is allocated, configured and used to activate the Command (smart-ptr frontend).
|
||||
** Command (smart-ptr frontend), which is not yet usable, being held within the CommandDef.
|
||||
** When the definition is complete, a CommandImpl frame is allocated, configured and used to
|
||||
** activate the Command (smart-ptr frontend), at which point it also gets accessible
|
||||
** through the CommandRegistry.
|
||||
**
|
||||
** Later on, client code is assumed to re-access the command by ID. It may bind arguments, which are
|
||||
** stored in the already allocated ArgumentHolder. (-->Ticket #269). As the Command frontend is a
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ namespace control {
|
|||
|
||||
|
||||
|
||||
/** @return number distinguishable registered command \em instances */
|
||||
/** @return number of distinguishable registered command \em instances */
|
||||
size_t
|
||||
Command::instance_count()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -78,6 +78,8 @@ namespace control {
|
|||
* which needs to be stored within the MementoTie. On UNDO, the undo-operation functor needs
|
||||
* to be provided with a reference to this stored memento value through an additional
|
||||
* parameter (which by convention is always the last argument of the undo function).
|
||||
* @warning take care of the MementoTie storage location, as the bound functions
|
||||
* returned by #tieCaptureFunc and #tieUndoFunc refer to \c this internally.
|
||||
*
|
||||
* @param SIG signature of the command operation
|
||||
* @param MEM type of the memento state to capture. Needs to be default constructible and copyable
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include "proc/engine/procnode.hpp"
|
||||
#include "lib/refarray.hpp"
|
||||
#include "lib/util-foreach.hpp"
|
||||
|
||||
#include <boost/noncopyable.hpp>
|
||||
//#include <boost/scoped_ptr.hpp>
|
||||
|
|
|
|||