diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-04-11 13:07:51 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-04-11 13:07:51 +0000 |
commit | 45d3ec1437cf661533bc7750c623865def4424df (patch) | |
tree | 80cdeb58bc51a22042b91c50334bdd8ee37deed6 /libs/pbd | |
parent | 4bf712f501e21cbf1e555bf010553aaca55edd39 (diff) |
merged with 1697 revision of trunk (which is post-rc1 but pre-rc2
git-svn-id: svn://localhost/ardour2/branches/2.1-staging@1698 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd')
37 files changed, 959 insertions, 112 deletions
diff --git a/libs/pbd/SConscript b/libs/pbd/SConscript index afb24a4311..3aaeb1bf1b 100644 --- a/libs/pbd/SConscript +++ b/libs/pbd/SConscript @@ -34,8 +34,10 @@ pathscanner.cc pool.cc pthread_utils.cc receiver.cc +shortpath.cc stacktrace.cc stateful.cc +strreplace.cc strsplit.cc textreceiver.cc transmitter.cc diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc index 049ad0aa21..00638e6c06 100644 --- a/libs/pbd/controllable.cc +++ b/libs/pbd/controllable.cc @@ -10,9 +10,64 @@ sigc::signal<void,Controllable*> Controllable::Destroyed; sigc::signal<bool,Controllable*> Controllable::StartLearning; sigc::signal<void,Controllable*> Controllable::StopLearning; +Glib::Mutex* Controllable::registry_lock = 0; +Controllable::Controllables Controllable::registry; + Controllable::Controllable (std::string name) : _name (name) { + if (registry_lock == 0) { + registry_lock = new Glib::Mutex; + } + + add (); +} + +void +Controllable::add () +{ + Glib::Mutex::Lock lm (*registry_lock); + registry.insert (this); + this->GoingAway.connect (mem_fun (this, &Controllable::remove)); +} + +void +Controllable::remove () +{ + Glib::Mutex::Lock lm (*registry_lock); + for (Controllables::iterator i = registry.begin(); i != registry.end(); ++i) { + if ((*i) == this) { + registry.erase (i); + break; + } + } +} + +Controllable* +Controllable::by_id (const ID& id) +{ + Glib::Mutex::Lock lm (*registry_lock); + + for (Controllables::iterator i = registry.begin(); i != registry.end(); ++i) { + if ((*i)->id() == id) { + return (*i); + } + } + return 0; +} + + +Controllable* +Controllable::by_name (const std::string& str) +{ + Glib::Mutex::Lock lm (*registry_lock); + + for (Controllables::iterator i = registry.begin(); i != registry.end(); ++i) { + if ((*i)->_name == str) { + return (*i); + } + } + return 0; } XMLNode& diff --git a/libs/pbd/macosx/English.lproj/InfoPlist.strings b/libs/pbd/macosx/English.lproj/InfoPlist.strings Binary files differnew file mode 100644 index 0000000000..d8479018a9 --- /dev/null +++ b/libs/pbd/macosx/English.lproj/InfoPlist.strings diff --git a/libs/pbd/macosx/Info.plist b/libs/pbd/macosx/Info.plist new file mode 100644 index 0000000000..0c31617fd2 --- /dev/null +++ b/libs/pbd/macosx/Info.plist @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>pbd</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>com.apple.carbonframeworktemplate</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>CFBundleShortVersionString</key> + <string>1.01</string> + <key>CSResourcesFileMapped</key> + <true/> +</dict> +</plist> diff --git a/libs/pbd/macosx/pbd.xcodeproj/project.pbxproj b/libs/pbd/macosx/pbd.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..535d16b8a2 --- /dev/null +++ b/libs/pbd/macosx/pbd.xcodeproj/project.pbxproj @@ -0,0 +1,634 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 6941206F0B8A34AB00AF661E /* base_ui.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120270B8A34AB00AF661E /* base_ui.cc */; }; + 694120700B8A34AB00AF661E /* basename.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120280B8A34AB00AF661E /* basename.cc */; }; + 694120710B8A34AB00AF661E /* command.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120290B8A34AB00AF661E /* command.cc */; }; + 694120720B8A34AB00AF661E /* controllable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941202A0B8A34AB00AF661E /* controllable.cc */; }; + 694120730B8A34AB00AF661E /* convert.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941202B0B8A34AB00AF661E /* convert.cc */; }; + 694120740B8A34AB00AF661E /* copyfile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941202C0B8A34AB00AF661E /* copyfile.cc */; }; + 694120750B8A34AB00AF661E /* dmalloc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941202D0B8A34AB00AF661E /* dmalloc.cc */; }; + 694120760B8A34AB00AF661E /* enumwriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941202E0B8A34AB00AF661E /* enumwriter.cc */; }; + 694120770B8A34AB00AF661E /* error.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941202F0B8A34AB00AF661E /* error.cc */; }; + 694120780B8A34AB00AF661E /* gettext.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120300B8A34AB00AF661E /* gettext.h */; settings = {ATTRIBUTES = (); }; }; + 694120790B8A34AB00AF661E /* i18n.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120310B8A34AB00AF661E /* i18n.h */; settings = {ATTRIBUTES = (); }; }; + 6941207A0B8A34AB00AF661E /* id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120320B8A34AB00AF661E /* id.cc */; }; + 6941207B0B8A34AB00AF661E /* mountpoint.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120330B8A34AB00AF661E /* mountpoint.cc */; }; + 6941207C0B8A34AB00AF661E /* path.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120340B8A34AB00AF661E /* path.cc */; }; + 6941207D0B8A34AB00AF661E /* pathscanner.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120350B8A34AB00AF661E /* pathscanner.cc */; }; + 6941207F0B8A34AB00AF661E /* abstract_ui.cc in Headers */ = {isa = PBXBuildFile; fileRef = 694120380B8A34AB00AF661E /* abstract_ui.cc */; }; + 694120800B8A34AB00AF661E /* abstract_ui.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120390B8A34AB00AF661E /* abstract_ui.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120810B8A34AB00AF661E /* base_ui.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941203A0B8A34AB00AF661E /* base_ui.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120820B8A34AB00AF661E /* basename.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941203B0B8A34AB00AF661E /* basename.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120830B8A34AB00AF661E /* command.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941203C0B8A34AB00AF661E /* command.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120840B8A34AB00AF661E /* compose.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941203D0B8A34AB00AF661E /* compose.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120850B8A34AB00AF661E /* controllable.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941203E0B8A34AB00AF661E /* controllable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120860B8A34AB00AF661E /* convert.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941203F0B8A34AB00AF661E /* convert.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120870B8A34AB00AF661E /* copyfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120400B8A34AB00AF661E /* copyfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120880B8A34AB00AF661E /* crossthread.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120410B8A34AB00AF661E /* crossthread.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120890B8A34AB00AF661E /* destructible.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120420B8A34AB00AF661E /* destructible.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941208A0B8A34AB00AF661E /* enumwriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120430B8A34AB00AF661E /* enumwriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941208B0B8A34AB00AF661E /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120440B8A34AB00AF661E /* error.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941208C0B8A34AB00AF661E /* failed_constructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120450B8A34AB00AF661E /* failed_constructor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941208D0B8A34AB00AF661E /* fastlog.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120460B8A34AB00AF661E /* fastlog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941208E0B8A34AB00AF661E /* forkexec.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120470B8A34AB00AF661E /* forkexec.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941208F0B8A34AB00AF661E /* id.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120480B8A34AB00AF661E /* id.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120900B8A34AB00AF661E /* mathfix.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120490B8A34AB00AF661E /* mathfix.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120910B8A34AB00AF661E /* memento_command.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941204A0B8A34AB00AF661E /* memento_command.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120920B8A34AB00AF661E /* mountpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941204B0B8A34AB00AF661E /* mountpoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120930B8A34AB00AF661E /* path.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941204C0B8A34AB00AF661E /* path.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120940B8A34AB00AF661E /* pathscanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941204D0B8A34AB00AF661E /* pathscanner.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120950B8A34AB00AF661E /* pool.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941204E0B8A34AB00AF661E /* pool.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120960B8A34AB00AF661E /* pthread_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941204F0B8A34AB00AF661E /* pthread_utils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120970B8A34AB00AF661E /* rcu.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120500B8A34AB00AF661E /* rcu.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120980B8A34AB00AF661E /* receiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120510B8A34AB00AF661E /* receiver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120990B8A34AB00AF661E /* ringbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120520B8A34AB00AF661E /* ringbuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941209A0B8A34AB00AF661E /* ringbufferNPT.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120530B8A34AB00AF661E /* ringbufferNPT.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941209B0B8A34AB00AF661E /* selectable.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120540B8A34AB00AF661E /* selectable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941209C0B8A34AB00AF661E /* shiva.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120550B8A34AB00AF661E /* shiva.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941209D0B8A34AB00AF661E /* stacktrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120560B8A34AB00AF661E /* stacktrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941209E0B8A34AB00AF661E /* stateful.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120570B8A34AB00AF661E /* stateful.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6941209F0B8A34AB00AF661E /* statefuldestructible.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120580B8A34AB00AF661E /* statefuldestructible.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A00B8A34AB00AF661E /* stl_delete.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120590B8A34AB00AF661E /* stl_delete.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A10B8A34AB00AF661E /* stl_functors.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941205A0B8A34AB00AF661E /* stl_functors.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A20B8A34AB00AF661E /* strsplit.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941205B0B8A34AB00AF661E /* strsplit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A30B8A34AB00AF661E /* textreceiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941205C0B8A34AB00AF661E /* textreceiver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A40B8A34AB00AF661E /* thrown_error.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941205D0B8A34AB00AF661E /* thrown_error.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A50B8A34AB00AF661E /* tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941205E0B8A34AB00AF661E /* tokenizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A60B8A34AB00AF661E /* touchable.h in Headers */ = {isa = PBXBuildFile; fileRef = 6941205F0B8A34AB00AF661E /* touchable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A70B8A34AB00AF661E /* transmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120600B8A34AB00AF661E /* transmitter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A80B8A34AB00AF661E /* undo.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120610B8A34AB00AF661E /* undo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120A90B8A34AB00AF661E /* whitespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120620B8A34AB00AF661E /* whitespace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120AA0B8A34AB00AF661E /* xml++.h in Headers */ = {isa = PBXBuildFile; fileRef = 694120630B8A34AB00AF661E /* xml++.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694120AB0B8A34AB00AF661E /* pool.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120640B8A34AB00AF661E /* pool.cc */; }; + 694120AC0B8A34AB00AF661E /* pthread_utils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120650B8A34AB00AF661E /* pthread_utils.cc */; }; + 694120AD0B8A34AB00AF661E /* receiver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120660B8A34AB00AF661E /* receiver.cc */; }; + 694120AE0B8A34AB00AF661E /* stacktrace.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120670B8A34AB00AF661E /* stacktrace.cc */; }; + 694120AF0B8A34AB00AF661E /* stateful.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120680B8A34AB00AF661E /* stateful.cc */; }; + 694120B00B8A34AB00AF661E /* strsplit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 694120690B8A34AB00AF661E /* strsplit.cc */; }; + 694120B10B8A34AB00AF661E /* textreceiver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941206A0B8A34AB00AF661E /* textreceiver.cc */; }; + 694120B20B8A34AB00AF661E /* transmitter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941206B0B8A34AB00AF661E /* transmitter.cc */; }; + 694120B30B8A34AB00AF661E /* undo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941206C0B8A34AB00AF661E /* undo.cc */; }; + 694120B40B8A34AB00AF661E /* whitespace.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941206D0B8A34AB00AF661E /* whitespace.cc */; }; + 694120B50B8A34AB00AF661E /* xml++.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6941206E0B8A34AB00AF661E /* xml++.cc */; }; + 694120D40B8A36A200AF661E /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 694120D30B8A36A200AF661E /* libxml2.dylib */; }; + 694191980B97CD950083505E /* glibmm.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 694191950B97CD950083505E /* glibmm.framework */; }; + 694191990B97CD950083505E /* sigc.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 694191960B97CD950083505E /* sigc.framework */; }; + 69C63C150B9369CB00BC0BCA /* strreplace.cc in Sources */ = {isa = PBXBuildFile; fileRef = 69C63C140B9369CB00BC0BCA /* strreplace.cc */; }; + 69C63C190B9369DE00BC0BCA /* replace_all.h in Headers */ = {isa = PBXBuildFile; fileRef = 69C63C180B9369DE00BC0BCA /* replace_all.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69C63C2B0B936A6E00BC0BCA /* version.cc in Sources */ = {isa = PBXBuildFile; fileRef = 69C63C290B936A6E00BC0BCA /* version.cc */; }; + 69C63C2C0B936A6E00BC0BCA /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 69C63C2A0B936A6E00BC0BCA /* version.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69CD7FED0B97CDD50049ED98 /* glib in Frameworks */ = {isa = PBXBuildFile; fileRef = 69CD7FE90B97CDD50049ED98 /* glib */; }; + 69CD7FEE0B97CDD50049ED98 /* gmodule in Frameworks */ = {isa = PBXBuildFile; fileRef = 69CD7FEA0B97CDD50049ED98 /* gmodule */; }; + 69CD7FEF0B97CDD50049ED98 /* gobject in Frameworks */ = {isa = PBXBuildFile; fileRef = 69CD7FEB0B97CDD50049ED98 /* gobject */; }; + 69CD7FF00B97CDD50049ED98 /* gthread in Frameworks */ = {isa = PBXBuildFile; fileRef = 69CD7FEC0B97CDD50049ED98 /* gthread */; }; + 8D07F2BE0486CC7A007CD1D0 /* pbd_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 32BAE0B70371A74B00C91783 /* pbd_Prefix.pch */; settings = {ATTRIBUTES = (); }; }; + 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 32BAE0B70371A74B00C91783 /* pbd_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pbd_Prefix.pch; sourceTree = "<group>"; }; + 694120270B8A34AB00AF661E /* base_ui.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = base_ui.cc; path = ../base_ui.cc; sourceTree = SOURCE_ROOT; }; + 694120280B8A34AB00AF661E /* basename.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basename.cc; path = ../basename.cc; sourceTree = SOURCE_ROOT; }; + 694120290B8A34AB00AF661E /* command.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = command.cc; path = ../command.cc; sourceTree = SOURCE_ROOT; }; + 6941202A0B8A34AB00AF661E /* controllable.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = controllable.cc; path = ../controllable.cc; sourceTree = SOURCE_ROOT; }; + 6941202B0B8A34AB00AF661E /* convert.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = convert.cc; path = ../convert.cc; sourceTree = SOURCE_ROOT; }; + 6941202C0B8A34AB00AF661E /* copyfile.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = copyfile.cc; path = ../copyfile.cc; sourceTree = SOURCE_ROOT; }; + 6941202D0B8A34AB00AF661E /* dmalloc.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = dmalloc.cc; path = ../dmalloc.cc; sourceTree = SOURCE_ROOT; }; + 6941202E0B8A34AB00AF661E /* enumwriter.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = enumwriter.cc; path = ../enumwriter.cc; sourceTree = SOURCE_ROOT; }; + 6941202F0B8A34AB00AF661E /* error.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = error.cc; path = ../error.cc; sourceTree = SOURCE_ROOT; }; + 694120300B8A34AB00AF661E /* gettext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = gettext.h; path = ../gettext.h; sourceTree = SOURCE_ROOT; }; + 694120310B8A34AB00AF661E /* i18n.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = i18n.h; path = ../i18n.h; sourceTree = SOURCE_ROOT; }; + 694120320B8A34AB00AF661E /* id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = id.cc; path = ../id.cc; sourceTree = SOURCE_ROOT; }; + 694120330B8A34AB00AF661E /* mountpoint.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mountpoint.cc; path = ../mountpoint.cc; sourceTree = SOURCE_ROOT; }; + 694120340B8A34AB00AF661E /* path.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = path.cc; path = ../path.cc; sourceTree = SOURCE_ROOT; }; + 694120350B8A34AB00AF661E /* pathscanner.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pathscanner.cc; path = ../pathscanner.cc; sourceTree = SOURCE_ROOT; }; + 694120380B8A34AB00AF661E /* abstract_ui.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = abstract_ui.cc; sourceTree = "<group>"; }; + 694120390B8A34AB00AF661E /* abstract_ui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = abstract_ui.h; sourceTree = "<group>"; }; + 6941203A0B8A34AB00AF661E /* base_ui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = base_ui.h; sourceTree = "<group>"; }; + 6941203B0B8A34AB00AF661E /* basename.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = basename.h; sourceTree = "<group>"; }; + 6941203C0B8A34AB00AF661E /* command.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = command.h; sourceTree = "<group>"; }; + 6941203D0B8A34AB00AF661E /* compose.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = compose.h; sourceTree = "<group>"; }; + 6941203E0B8A34AB00AF661E /* controllable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = controllable.h; sourceTree = "<group>"; }; + 6941203F0B8A34AB00AF661E /* convert.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = convert.h; sourceTree = "<group>"; }; + 694120400B8A34AB00AF661E /* copyfile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = copyfile.h; sourceTree = "<group>"; }; + 694120410B8A34AB00AF661E /* crossthread.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = crossthread.h; sourceTree = "<group>"; }; + 694120420B8A34AB00AF661E /* destructible.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = destructible.h; sourceTree = "<group>"; }; + 694120430B8A34AB00AF661E /* enumwriter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = enumwriter.h; sourceTree = "<group>"; }; + 694120440B8A34AB00AF661E /* error.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = "<group>"; }; + 694120450B8A34AB00AF661E /* failed_constructor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = failed_constructor.h; sourceTree = "<group>"; }; + 694120460B8A34AB00AF661E /* fastlog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = fastlog.h; sourceTree = "<group>"; }; + 694120470B8A34AB00AF661E /* forkexec.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = forkexec.h; sourceTree = "<group>"; }; + 694120480B8A34AB00AF661E /* id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = id.h; sourceTree = "<group>"; }; + 694120490B8A34AB00AF661E /* mathfix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mathfix.h; sourceTree = "<group>"; }; + 6941204A0B8A34AB00AF661E /* memento_command.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = memento_command.h; sourceTree = "<group>"; }; + 6941204B0B8A34AB00AF661E /* mountpoint.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mountpoint.h; sourceTree = "<group>"; }; + 6941204C0B8A34AB00AF661E /* path.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = path.h; sourceTree = "<group>"; }; + 6941204D0B8A34AB00AF661E /* pathscanner.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pathscanner.h; sourceTree = "<group>"; }; + 6941204E0B8A34AB00AF661E /* pool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pool.h; sourceTree = "<group>"; }; + 6941204F0B8A34AB00AF661E /* pthread_utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pthread_utils.h; sourceTree = "<group>"; }; + 694120500B8A34AB00AF661E /* rcu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = rcu.h; sourceTree = "<group>"; }; + 694120510B8A34AB00AF661E /* receiver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = receiver.h; sourceTree = "<group>"; }; + 694120520B8A34AB00AF661E /* ringbuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ringbuffer.h; sourceTree = "<group>"; }; + 694120530B8A34AB00AF661E /* ringbufferNPT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ringbufferNPT.h; sourceTree = "<group>"; }; + 694120540B8A34AB00AF661E /* selectable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = selectable.h; sourceTree = "<group>"; }; + 694120550B8A34AB00AF661E /* shiva.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = shiva.h; sourceTree = "<group>"; }; + 694120560B8A34AB00AF661E /* stacktrace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stacktrace.h; sourceTree = "<group>"; }; + 694120570B8A34AB00AF661E /* stateful.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stateful.h; sourceTree = "<group>"; }; + 694120580B8A34AB00AF661E /* statefuldestructible.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = statefuldestructible.h; sourceTree = "<group>"; }; + 694120590B8A34AB00AF661E /* stl_delete.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stl_delete.h; sourceTree = "<group>"; }; + 6941205A0B8A34AB00AF661E /* stl_functors.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stl_functors.h; sourceTree = "<group>"; }; + 6941205B0B8A34AB00AF661E /* strsplit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = strsplit.h; sourceTree = "<group>"; }; + 6941205C0B8A34AB00AF661E /* textreceiver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = textreceiver.h; sourceTree = "<group>"; }; + 6941205D0B8A34AB00AF661E /* thrown_error.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = thrown_error.h; sourceTree = "<group>"; }; + 6941205E0B8A34AB00AF661E /* tokenizer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tokenizer.h; sourceTree = "<group>"; }; + 6941205F0B8A34AB00AF661E /* touchable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = touchable.h; sourceTree = "<group>"; }; + 694120600B8A34AB00AF661E /* transmitter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = transmitter.h; sourceTree = "<group>"; }; + 694120610B8A34AB00AF661E /* undo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = undo.h; sourceTree = "<group>"; }; + 694120620B8A34AB00AF661E /* whitespace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = whitespace.h; sourceTree = "<group>"; }; + 694120630B8A34AB00AF661E /* xml++.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "xml++.h"; sourceTree = "<group>"; }; + 694120640B8A34AB00AF661E /* pool.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pool.cc; path = ../pool.cc; sourceTree = SOURCE_ROOT; }; + 694120650B8A34AB00AF661E /* pthread_utils.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pthread_utils.cc; path = ../pthread_utils.cc; sourceTree = SOURCE_ROOT; }; + 694120660B8A34AB00AF661E /* receiver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = receiver.cc; path = ../receiver.cc; sourceTree = SOURCE_ROOT; }; + 694120670B8A34AB00AF661E /* stacktrace.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stacktrace.cc; path = ../stacktrace.cc; sourceTree = SOURCE_ROOT; }; + 694120680B8A34AB00AF661E /* stateful.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stateful.cc; path = ../stateful.cc; sourceTree = SOURCE_ROOT; }; + 694120690B8A34AB00AF661E /* strsplit.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = strsplit.cc; path = ../strsplit.cc; sourceTree = SOURCE_ROOT; }; + 6941206A0B8A34AB00AF661E /* textreceiver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = textreceiver.cc; path = ../textreceiver.cc; sourceTree = SOURCE_ROOT; }; + 6941206B0B8A34AB00AF661E /* transmitter.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = transmitter.cc; path = ../transmitter.cc; sourceTree = SOURCE_ROOT; }; + 6941206C0B8A34AB00AF661E /* undo.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = undo.cc; path = ../undo.cc; sourceTree = SOURCE_ROOT; }; + 6941206D0B8A34AB00AF661E /* whitespace.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = whitespace.cc; path = ../whitespace.cc; sourceTree = SOURCE_ROOT; }; + 6941206E0B8A34AB00AF661E /* xml++.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "xml++.cc"; path = "../xml++.cc"; sourceTree = SOURCE_ROOT; }; + 694120D30B8A36A200AF661E /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = /usr/lib/libxml2.dylib; sourceTree = "<absolute>"; }; + 694191950B97CD950083505E /* glibmm.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = glibmm.framework; path = /Library/Frameworks/glibmm.framework; sourceTree = "<absolute>"; }; + 694191960B97CD950083505E /* sigc.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = sigc.framework; path = /Library/Frameworks/sigc.framework; sourceTree = "<absolute>"; }; + 69C63C140B9369CB00BC0BCA /* strreplace.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = strreplace.cc; path = ../strreplace.cc; sourceTree = SOURCE_ROOT; }; + 69C63C180B9369DE00BC0BCA /* replace_all.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = replace_all.h; sourceTree = "<group>"; }; + 69C63C290B936A6E00BC0BCA /* version.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = version.cc; sourceTree = "<group>"; }; + 69C63C2A0B936A6E00BC0BCA /* version.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; }; + 69CD7FE90B97CDD50049ED98 /* glib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = glib; path = /Library/Frameworks/GLib.framework/Versions/2.12.3/Libraries/glib; sourceTree = "<absolute>"; }; + 69CD7FEA0B97CDD50049ED98 /* gmodule */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = gmodule; path = /Library/Frameworks/GLib.framework/Versions/2.12.3/Libraries/gmodule; sourceTree = "<absolute>"; }; + 69CD7FEB0B97CDD50049ED98 /* gobject */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = gobject; path = /Library/Frameworks/GLib.framework/Versions/2.12.3/Libraries/gobject; sourceTree = "<absolute>"; }; + 69CD7FEC0B97CDD50049ED98 /* gthread */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = gthread; path = /Library/Frameworks/GLib.framework/Versions/2.12.3/Libraries/gthread; sourceTree = "<absolute>"; }; + 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; + 8D07F2C80486CC7A007CD1D0 /* pbd.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = pbd.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 694120D40B8A36A200AF661E /* libxml2.dylib in Frameworks */, + 694191980B97CD950083505E /* glibmm.framework in Frameworks */, + 694191990B97CD950083505E /* sigc.framework in Frameworks */, + 69CD7FED0B97CDD50049ED98 /* glib in Frameworks */, + 69CD7FEE0B97CDD50049ED98 /* gmodule in Frameworks */, + 69CD7FEF0B97CDD50049ED98 /* gobject in Frameworks */, + 69CD7FF00B97CDD50049ED98 /* gthread in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 8D07F2C80486CC7A007CD1D0 /* pbd.framework */, + ); + name = Products; + sourceTree = "<group>"; + }; + 0867D691FE84028FC02AAC07 /* pbd */ = { + isa = PBXGroup; + children = ( + 69C63C290B936A6E00BC0BCA /* version.cc */, + 69C63C2A0B936A6E00BC0BCA /* version.h */, + 08FB77ACFE841707C02AAC07 /* Source */, + 089C1665FE841158C02AAC07 /* Resources */, + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = pbd; + sourceTree = "<group>"; + }; + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 69CD7FE90B97CDD50049ED98 /* glib */, + 69CD7FEA0B97CDD50049ED98 /* gmodule */, + 69CD7FEB0B97CDD50049ED98 /* gobject */, + 69CD7FEC0B97CDD50049ED98 /* gthread */, + 694191950B97CD950083505E /* glibmm.framework */, + 694191960B97CD950083505E /* sigc.framework */, + 694120D30B8A36A200AF661E /* libxml2.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = "<group>"; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D07F2C70486CC7A007CD1D0 /* Info.plist */, + 089C1666FE841158C02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 08FB77ACFE841707C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 69C63C140B9369CB00BC0BCA /* strreplace.cc */, + 694120270B8A34AB00AF661E /* base_ui.cc */, + 694120280B8A34AB00AF661E /* basename.cc */, + 694120290B8A34AB00AF661E /* command.cc */, + 6941202A0B8A34AB00AF661E /* controllable.cc */, + 6941202B0B8A34AB00AF661E /* convert.cc */, + 6941202C0B8A34AB00AF661E /* copyfile.cc */, + 6941202D0B8A34AB00AF661E /* dmalloc.cc */, + 6941202E0B8A34AB00AF661E /* enumwriter.cc */, + 6941202F0B8A34AB00AF661E /* error.cc */, + 694120300B8A34AB00AF661E /* gettext.h */, + 694120310B8A34AB00AF661E /* i18n.h */, + 694120320B8A34AB00AF661E /* id.cc */, + 694120330B8A34AB00AF661E /* mountpoint.cc */, + 694120340B8A34AB00AF661E /* path.cc */, + 694120350B8A34AB00AF661E /* pathscanner.cc */, + 694120360B8A34AB00AF661E /* pbd */, + 694120640B8A34AB00AF661E /* pool.cc */, + 694120650B8A34AB00AF661E /* pthread_utils.cc */, + 694120660B8A34AB00AF661E /* receiver.cc */, + 694120670B8A34AB00AF661E /* stacktrace.cc */, + 694120680B8A34AB00AF661E /* stateful.cc */, + 694120690B8A34AB00AF661E /* strsplit.cc */, + 6941206A0B8A34AB00AF661E /* textreceiver.cc */, + 6941206B0B8A34AB00AF661E /* transmitter.cc */, + 6941206C0B8A34AB00AF661E /* undo.cc */, + 6941206D0B8A34AB00AF661E /* whitespace.cc */, + 6941206E0B8A34AB00AF661E /* xml++.cc */, + 32BAE0B70371A74B00C91783 /* pbd_Prefix.pch */, + ); + name = Source; + sourceTree = "<group>"; + }; + 694120360B8A34AB00AF661E /* pbd */ = { + isa = PBXGroup; + children = ( + 69C63C180B9369DE00BC0BCA /* replace_all.h */, + 694120380B8A34AB00AF661E /* abstract_ui.cc */, + 694120390B8A34AB00AF661E /* abstract_ui.h */, + 6941203A0B8A34AB00AF661E /* base_ui.h */, + 6941203B0B8A34AB00AF661E /* basename.h */, + 6941203C0B8A34AB00AF661E /* command.h */, + 6941203D0B8A34AB00AF661E /* compose.h */, + 6941203E0B8A34AB00AF661E /* controllable.h */, + 6941203F0B8A34AB00AF661E /* convert.h */, + 694120400B8A34AB00AF661E /* copyfile.h */, + 694120410B8A34AB00AF661E /* crossthread.h */, + 694120420B8A34AB00AF661E /* destructible.h */, + 694120430B8A34AB00AF661E /* enumwriter.h */, + 694120440B8A34AB00AF661E /* error.h */, + 694120450B8A34AB00AF661E /* failed_constructor.h */, + 694120460B8A34AB00AF661E /* fastlog.h */, + 694120470B8A34AB00AF661E /* forkexec.h */, + 694120480B8A34AB00AF661E /* id.h */, + 694120490B8A34AB00AF661E /* mathfix.h */, + 6941204A0B8A34AB00AF661E /* memento_command.h */, + 6941204B0B8A34AB00AF661E /* mountpoint.h */, + 6941204C0B8A34AB00AF661E /* path.h */, + 6941204D0B8A34AB00AF661E /* pathscanner.h */, + 6941204E0B8A34AB00AF661E /* pool.h */, + 6941204F0B8A34AB00AF661E /* pthread_utils.h */, + 694120500B8A34AB00AF661E /* rcu.h */, + 694120510B8A34AB00AF661E /* receiver.h */, + 694120520B8A34AB00AF661E /* ringbuffer.h */, + 694120530B8A34AB00AF661E /* ringbufferNPT.h */, + 694120540B8A34AB00AF661E /* selectable.h */, + 694120550B8A34AB00AF661E /* shiva.h */, + 694120560B8A34AB00AF661E /* stacktrace.h */, + 694120570B8A34AB00AF661E /* stateful.h */, + 694120580B8A34AB00AF661E /* statefuldestructible.h */, + 694120590B8A34AB00AF661E /* stl_delete.h */, + 6941205A0B8A34AB00AF661E /* stl_functors.h */, + 6941205B0B8A34AB00AF661E /* strsplit.h */, + 6941205C0B8A34AB00AF661E /* textreceiver.h */, + 6941205D0B8A34AB00AF661E /* thrown_error.h */, + 6941205E0B8A34AB00AF661E /* tokenizer.h */, + 6941205F0B8A34AB00AF661E /* touchable.h */, + 694120600B8A34AB00AF661E /* transmitter.h */, + 694120610B8A34AB00AF661E /* undo.h */, + 694120620B8A34AB00AF661E /* whitespace.h */, + 694120630B8A34AB00AF661E /* xml++.h */, + ); + name = pbd; + path = ../pbd; + sourceTree = SOURCE_ROOT; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 69C63C2C0B936A6E00BC0BCA /* version.h in Headers */, + 69C63C190B9369DE00BC0BCA /* replace_all.h in Headers */, + 8D07F2BE0486CC7A007CD1D0 /* pbd_Prefix.pch in Headers */, + 6941207F0B8A34AB00AF661E /* abstract_ui.cc in Headers */, + 694120780B8A34AB00AF661E /* gettext.h in Headers */, + 694120790B8A34AB00AF661E /* i18n.h in Headers */, + 694120800B8A34AB00AF661E /* abstract_ui.h in Headers */, + 694120810B8A34AB00AF661E /* base_ui.h in Headers */, + 694120820B8A34AB00AF661E /* basename.h in Headers */, + 694120830B8A34AB00AF661E /* command.h in Headers */, + 694120840B8A34AB00AF661E /* compose.h in Headers */, + 694120850B8A34AB00AF661E /* controllable.h in Headers */, + 694120860B8A34AB00AF661E /* convert.h in Headers */, + 694120870B8A34AB00AF661E /* copyfile.h in Headers */, + 694120880B8A34AB00AF661E /* crossthread.h in Headers */, + 694120890B8A34AB00AF661E /* destructible.h in Headers */, + 6941208A0B8A34AB00AF661E /* enumwriter.h in Headers */, + 6941208B0B8A34AB00AF661E /* error.h in Headers */, + 6941208C0B8A34AB00AF661E /* failed_constructor.h in Headers */, + 6941208D0B8A34AB00AF661E /* fastlog.h in Headers */, + 6941208E0B8A34AB00AF661E /* forkexec.h in Headers */, + 6941208F0B8A34AB00AF661E /* id.h in Headers */, + 694120900B8A34AB00AF661E /* mathfix.h in Headers */, + 694120910B8A34AB00AF661E /* memento_command.h in Headers */, + 694120920B8A34AB00AF661E /* mountpoint.h in Headers */, + 694120930B8A34AB00AF661E /* path.h in Headers */, + 694120940B8A34AB00AF661E /* pathscanner.h in Headers */, + 694120950B8A34AB00AF661E /* pool.h in Headers */, + 694120960B8A34AB00AF661E /* pthread_utils.h in Headers */, + 694120970B8A34AB00AF661E /* rcu.h in Headers */, + 694120980B8A34AB00AF661E /* receiver.h in Headers */, + 694120990B8A34AB00AF661E /* ringbuffer.h in Headers */, + 6941209A0B8A34AB00AF661E /* ringbufferNPT.h in Headers */, + 6941209B0B8A34AB00AF661E /* selectable.h in Headers */, + 6941209C0B8A34AB00AF661E /* shiva.h in Headers */, + 6941209D0B8A34AB00AF661E /* stacktrace.h in Headers */, + 6941209E0B8A34AB00AF661E /* stateful.h in Headers */, + 6941209F0B8A34AB00AF661E /* statefuldestructible.h in Headers */, + 694120A00B8A34AB00AF661E /* stl_delete.h in Headers */, + 694120A10B8A34AB00AF661E /* stl_functors.h in Headers */, + 694120A20B8A34AB00AF661E /* strsplit.h in Headers */, + 694120A30B8A34AB00AF661E /* textreceiver.h in Headers */, + 694120A40B8A34AB00AF661E /* thrown_error.h in Headers */, + 694120A50B8A34AB00AF661E /* tokenizer.h in Headers */, + 694120A60B8A34AB00AF661E /* touchable.h in Headers */, + 694120A70B8A34AB00AF661E /* transmitter.h in Headers */, + 694120A80B8A34AB00AF661E /* undo.h in Headers */, + 694120A90B8A34AB00AF661E /* whitespace.h in Headers */, + 694120AA0B8A34AB00AF661E /* xml++.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8D07F2BC0486CC7A007CD1D0 /* pbd */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "pbd" */; + buildPhases = ( + 8D07F2BD0486CC7A007CD1D0 /* Headers */, + 8D07F2BF0486CC7A007CD1D0 /* Resources */, + 8D07F2C10486CC7A007CD1D0 /* Sources */, + 8D07F2C30486CC7A007CD1D0 /* Frameworks */, + 8D07F2C50486CC7A007CD1D0 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = pbd; + productInstallPath = "$(HOME)/Library/Frameworks"; + productName = pbd; + productReference = 8D07F2C80486CC7A007CD1D0 /* pbd.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "pbd" */; + hasScannedForEncodings = 1; + mainGroup = 0867D691FE84028FC02AAC07 /* pbd */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D07F2BC0486CC7A007CD1D0 /* pbd */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D07F2C50486CC7A007CD1D0 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D07F2C10486CC7A007CD1D0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 69C63C2B0B936A6E00BC0BCA /* version.cc in Sources */, + 6941206F0B8A34AB00AF661E /* base_ui.cc in Sources */, + 69C63C150B9369CB00BC0BCA /* strreplace.cc in Sources */, + 694120700B8A34AB00AF661E /* basename.cc in Sources */, + 694120710B8A34AB00AF661E /* command.cc in Sources */, + 694120720B8A34AB00AF661E /* controllable.cc in Sources */, + 694120730B8A34AB00AF661E /* convert.cc in Sources */, + 694120740B8A34AB00AF661E /* copyfile.cc in Sources */, + 694120750B8A34AB00AF661E /* dmalloc.cc in Sources */, + 694120760B8A34AB00AF661E /* enumwriter.cc in Sources */, + 694120770B8A34AB00AF661E /* error.cc in Sources */, + 6941207A0B8A34AB00AF661E /* id.cc in Sources */, + 6941207B0B8A34AB00AF661E /* mountpoint.cc in Sources */, + 6941207C0B8A34AB00AF661E /* path.cc in Sources */, + 6941207D0B8A34AB00AF661E /* pathscanner.cc in Sources */, + 694120AB0B8A34AB00AF661E /* pool.cc in Sources */, + 694120AC0B8A34AB00AF661E /* pthread_utils.cc in Sources */, + 694120AD0B8A34AB00AF661E /* receiver.cc in Sources */, + 694120AE0B8A34AB00AF661E /* stacktrace.cc in Sources */, + 694120AF0B8A34AB00AF661E /* stateful.cc in Sources */, + 694120B00B8A34AB00AF661E /* strsplit.cc in Sources */, + 694120B10B8A34AB00AF661E /* textreceiver.cc in Sources */, + 694120B20B8A34AB00AF661E /* transmitter.cc in Sources */, + 694120B30B8A34AB00AF661E /* undo.cc in Sources */, + 694120B40B8A34AB00AF661E /* whitespace.cc in Sources */, + 694120B50B8A34AB00AF661E /* xml++.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C1667FE841158C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4FADC24408B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = pbd_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "@executable_path/../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/GLib.framework/Versions/2.12.3/Libraries\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/GLib.framework/Versions/2.12.3/Libraries\""; + LIBRARY_STYLE = DYNAMIC; + MACH_O_TYPE = mh_dylib; + PRODUCT_NAME = pbd; + WRAPPER_EXTENSION = framework; + }; + name = Release; + }; + 4FADC24808B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(NATIVE_ARCH)", + ppc, + ); + GCC_FAST_OBJC_DISPATCH = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_STRICT_ALIASING = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /usr/include/libxml2, + /Library/Frameworks/GLib.framework/Headers, + /Library/Frameworks/glibmm.framework/Headers, + /Library/Frameworks/sigc.framework/Headers, + ); + INSTALL_PATH = "@executable_path/../Frameworks"; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Release; + }; + 69C9AF150B97A83A0097DE90 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH)"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = stabs; + GCC_FAST_OBJC_DISPATCH = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /usr/include/libxml2, + /Library/Frameworks/GLib.framework/Headers, + /Library/Frameworks/glibmm.framework/Headers, + /Library/Frameworks/sigc.framework/Headers, + ); + INSTALL_PATH = "@executable_path/../Frameworks"; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + STRIP_INSTALLED_PRODUCT = NO; + }; + name = Debug; + }; + 69C9AF160B97A83A0097DE90 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = pbd_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "@executable_path/../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/GLib.framework/Versions/2.12.3/Libraries\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/GLib.framework/Versions/2.12.3/Libraries\""; + LIBRARY_STYLE = DYNAMIC; + MACH_O_TYPE = mh_dylib; + PRODUCT_NAME = pbd; + WRAPPER_EXTENSION = framework; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "pbd" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24408B4156D00ABE55E /* Release */, + 69C9AF160B97A83A0097DE90 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "pbd" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24808B4156D00ABE55E /* Release */, + 69C9AF150B97A83A0097DE90 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/libs/pbd/macosx/pbd_Prefix.pch b/libs/pbd/macosx/pbd_Prefix.pch new file mode 100644 index 0000000000..a774fac593 --- /dev/null +++ b/libs/pbd/macosx/pbd_Prefix.pch @@ -0,0 +1,4 @@ +// +// Prefix header for all source files of the 'pbd' target in the 'pbd' project. +// + diff --git a/libs/pbd/macosx/version.cc b/libs/pbd/macosx/version.cc new file mode 100644 index 0000000000..61a94f6fc9 --- /dev/null +++ b/libs/pbd/macosx/version.cc @@ -0,0 +1,3 @@ +int libpbd_major_version = 4; +int libpbd_minor_version = 1; +int libpbd_micro_version = 0; diff --git a/libs/pbd/macosx/version.h b/libs/pbd/macosx/version.h new file mode 100644 index 0000000000..ec6c854141 --- /dev/null +++ b/libs/pbd/macosx/version.h @@ -0,0 +1,7 @@ +#ifndef __libpbd_version_h__ +#define __libpbd_version_h__ +extern const char* libpbd_revision; +extern int libpbd_major_version; +extern int libpbd_minor_version; +extern int libpbd_micro_version; +#endif /* __libpbd_version_h__ */ diff --git a/libs/pbd/pbd/abstract_ui.cc b/libs/pbd/pbd/abstract_ui.cc index eca53916af..97f19e1fe5 100644 --- a/libs/pbd/pbd/abstract_ui.cc +++ b/libs/pbd/pbd/abstract_ui.cc @@ -54,6 +54,8 @@ AbstractUI<RequestObject>::get_request (RequestType rt) } RequestBufferVector vec; + vec.buf[0] = 0; + vec.buf[1] = 0; rbuf->get_write_vector (&vec); @@ -100,16 +102,10 @@ AbstractUI<RequestObject>::handle_ui_requests () if (vec.len[0] == 0) { break; } else { - /* request_factory/copy constructor does a deep - copy of the Request object, - unlike Ringbuffer::read() - */ - - RequestObject req (*vec.buf[0]); - i->second->increment_read_ptr (1); request_buffer_map_lock.unlock (); - do_request (&req); + do_request (vec.buf[0]); request_buffer_map_lock.lock (); + i->second->increment_read_ptr (1); } } } diff --git a/libs/pbd/pbd/abstract_ui.h b/libs/pbd/pbd/abstract_ui.h index f80db7bf1a..88c27aa0bc 100644 --- a/libs/pbd/pbd/abstract_ui.h +++ b/libs/pbd/pbd/abstract_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __pbd_abstract_ui_h__ diff --git a/libs/pbd/pbd/command.h b/libs/pbd/pbd/command.h index 8044b51a83..23bcf85b91 100644 --- a/libs/pbd/pbd/command.h +++ b/libs/pbd/pbd/command.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: /local/undo/libs/pbd3/pbd/undo.h 80 2006-06-22T22:37:01.079855Z fugalh $ */ #ifndef __lib_pbd_command_h__ diff --git a/libs/pbd/pbd/controllable.h b/libs/pbd/pbd/controllable.h index c88eb298bc..c152013c66 100644 --- a/libs/pbd/pbd/controllable.h +++ b/libs/pbd/pbd/controllable.h @@ -2,6 +2,7 @@ #define __pbd_controllable_h__ #include <string> +#include <set> #include <sigc++/trackable.h> #include <sigc++/signal.h> @@ -36,8 +37,18 @@ class Controllable : public PBD::StatefulDestructible { std::string name() const { return _name; } + static Controllable* by_id (const PBD::ID&); + static Controllable* by_name (const std::string&); + private: std::string _name; + + void add (); + void remove (); + + typedef std::set<PBD::Controllable*> Controllables; + static Glib::Mutex* registry_lock; + static Controllables registry; }; } diff --git a/libs/pbd/pbd/error.h b/libs/pbd/pbd/error.h index 4136f02ee2..58842d68eb 100644 --- a/libs/pbd/pbd/error.h +++ b/libs/pbd/pbd/error.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __libpbd_error_h__ #define __libpbd_error_h__ diff --git a/libs/pbd/pbd/mathfix.h b/libs/pbd/pbd/mathfix.h index f0dc7e491e..fd0468905f 100644 --- a/libs/pbd/pbd/mathfix.h +++ b/libs/pbd/pbd/mathfix.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __pbd_mathfix_h__ diff --git a/libs/pbd/pbd/memento_command.h b/libs/pbd/pbd/memento_command.h index fe1aa8e7d0..d913b2c0fe 100644 --- a/libs/pbd/pbd/memento_command.h +++ b/libs/pbd/pbd/memento_command.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: /local/undo/libs/pbd3/pbd/undo.h 132 2006-06-29T18:45:16.609763Z fugalh $ */ #ifndef __lib_pbd_memento_command_h__ diff --git a/libs/pbd/pbd/mountpoint.h b/libs/pbd/pbd/mountpoint.h index 86ccc58190..e0ec1be7f9 100644 --- a/libs/pbd/pbd/mountpoint.h +++ b/libs/pbd/pbd/mountpoint.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __pbd_mountpoint_h__ diff --git a/libs/pbd/pbd/pool.h b/libs/pbd/pbd/pool.h index f8e19e72fb..d604680ae2 100644 --- a/libs/pbd/pbd/pool.h +++ b/libs/pbd/pbd/pool.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __qm_pool_h__ diff --git a/libs/pbd/pbd/rcu.h b/libs/pbd/pbd/rcu.h index a8f3cdd5bc..8b0b8b3548 100644 --- a/libs/pbd/pbd/rcu.h +++ b/libs/pbd/pbd/rcu.h @@ -12,22 +12,21 @@ class RCUManager public: RCUManager (T* new_rcu_value) { - m_rcu_value = new boost::shared_ptr<T> (new_rcu_value); + x.m_rcu_value = new boost::shared_ptr<T> (new_rcu_value); } - virtual ~RCUManager() { delete m_rcu_value; } + virtual ~RCUManager() { delete x.m_rcu_value; } - boost::shared_ptr<T> reader () const { return *((boost::shared_ptr<T> *) g_atomic_pointer_get (the_pointer())); } + boost::shared_ptr<T> reader () const { return *((boost::shared_ptr<T> *) g_atomic_pointer_get (&x.gptr)); } virtual boost::shared_ptr<T> write_copy () = 0; virtual bool update (boost::shared_ptr<T> new_value) = 0; protected: - boost::shared_ptr<T>* m_rcu_value; - - // this monstrosity is needed because of some wierd behavior by g++ - - gpointer * the_pointer() const { return (gpointer *) &m_rcu_value; } + union { + boost::shared_ptr<T>* m_rcu_value; + mutable volatile gpointer gptr; + } x; }; @@ -60,7 +59,7 @@ public: // store the current - current_write_old = RCUManager<T>::m_rcu_value; + current_write_old = RCUManager<T>::x.m_rcu_value; boost::shared_ptr<T> new_copy (new T(**current_write_old)); @@ -76,7 +75,7 @@ public: // update, checking that nobody beat us to it - bool ret = g_atomic_pointer_compare_and_exchange (RCUManager<T>::the_pointer(), + bool ret = g_atomic_pointer_compare_and_exchange (&RCUManager<T>::x.gptr, (gpointer) current_write_old, (gpointer) new_spp); diff --git a/libs/pbd/pbd/receiver.h b/libs/pbd/pbd/receiver.h index 5ce238df63..93192ce787 100644 --- a/libs/pbd/pbd/receiver.h +++ b/libs/pbd/pbd/receiver.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __libmisc_receiver_h__ diff --git a/libs/pbd/pbd/replace_all.h b/libs/pbd/pbd/replace_all.h new file mode 100644 index 0000000000..4434637283 --- /dev/null +++ b/libs/pbd/pbd/replace_all.h @@ -0,0 +1,8 @@ +#ifndef __pbd_replace_all_h__ +#define __pbd_replace_all_h__ + +#include <string> + +int replace_all (std::string& str, const std::string& target, const std::string& replacement); + +#endif // __pbd_replace_all_h__ diff --git a/libs/pbd/pbd/ringbuffer.h b/libs/pbd/pbd/ringbuffer.h index 1d9c9b04e3..d98601461e 100644 --- a/libs/pbd/pbd/ringbuffer.h +++ b/libs/pbd/pbd/ringbuffer.h @@ -15,25 +15,21 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef ringbuffer_h #define ringbuffer_h -//#include <sys/mman.h> - #include <glib.h> template<class T> class RingBuffer { public: - RingBuffer (size_t sz) { - size_t power_of_two; - - for (power_of_two = 1; 1U<<power_of_two < sz; power_of_two++); - + RingBuffer (guint sz) { +// size = ffs(sz); /* find first [bit] set is a single inlined assembly instruction. But it looks like the API rounds up so... */ + guint power_of_two; + for (power_of_two = 1; 1U<<power_of_two < sz; power_of_two++); size = 1<<power_of_two; size_mask = size; size_mask -= 1; @@ -48,44 +44,44 @@ class RingBuffer void reset () { /* !!! NOT THREAD SAFE !!! */ - g_atomic_int_set (&write_ptr, 0); - g_atomic_int_set (&read_ptr, 0); + g_atomic_int_set (&write_idx, 0); + g_atomic_int_set (&read_idx, 0); } - void set (size_t r, size_t w) { + void set (guint r, guint w) { /* !!! NOT THREAD SAFE !!! */ - g_atomic_int_set (&write_ptr, w); - g_atomic_int_set (&read_ptr, r); + g_atomic_int_set (&write_idx, w); + g_atomic_int_set (&read_idx, r); } - size_t read (T *dest, size_t cnt); - size_t write (T *src, size_t cnt); + guint read (T *dest, guint cnt); + guint write (T *src, guint cnt); struct rw_vector { T *buf[2]; - size_t len[2]; + guint len[2]; }; void get_read_vector (rw_vector *); void get_write_vector (rw_vector *); - void decrement_read_ptr (size_t cnt) { - g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) - cnt) & size_mask); + void decrement_read_idx (guint cnt) { + g_atomic_int_set (&read_idx, (g_atomic_int_get(&read_idx) - cnt) & size_mask); } - void increment_read_ptr (size_t cnt) { - g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) + cnt) & size_mask); + void increment_read_idx (guint cnt) { + g_atomic_int_set (&read_idx, (g_atomic_int_get(&read_idx) + cnt) & size_mask); } - void increment_write_ptr (size_t cnt) { - g_atomic_int_set (&write_ptr, (g_atomic_int_get(&write_ptr) + cnt) & size_mask); + void increment_write_idx (guint cnt) { + g_atomic_int_set (&write_idx, (g_atomic_int_get(&write_idx) + cnt) & size_mask); } - size_t write_space () { - size_t w, r; + guint write_space () { + guint w, r; - w = g_atomic_int_get (&write_ptr); - r = g_atomic_int_get (&read_ptr); + w = g_atomic_int_get (&write_idx); + r = g_atomic_int_get (&read_idx); if (w > r) { return ((r - w + size) & size_mask) - 1; @@ -96,11 +92,11 @@ class RingBuffer } } - size_t read_space () { - size_t w, r; + guint read_space () { + guint w, r; - w = g_atomic_int_get (&write_ptr); - r = g_atomic_int_get (&read_ptr); + w = g_atomic_int_get (&write_idx); + r = g_atomic_int_get (&read_idx); if (w > r) { return w - r; @@ -110,28 +106,28 @@ class RingBuffer } T *buffer () { return buf; } - size_t get_write_ptr () const { return g_atomic_int_get (&write_ptr); } - size_t get_read_ptr () const { return g_atomic_int_get (&read_ptr); } - size_t bufsize () const { return size; } + guint get_write_idx () const { return g_atomic_int_get (&write_idx); } + guint get_read_idx () const { return g_atomic_int_get (&read_idx); } + guint bufsize () const { return size; } protected: T *buf; - size_t size; - mutable gint write_ptr; - mutable gint read_ptr; - size_t size_mask; + guint size; + mutable gint write_idx; + mutable gint read_idx; + guint size_mask; }; -template<class T> size_t -RingBuffer<T>::read (T *dest, size_t cnt) +template<class T> guint +RingBuffer<T>::read (T *dest, guint cnt) { - size_t free_cnt; - size_t cnt2; - size_t to_read; - size_t n1, n2; - size_t priv_read_ptr; + guint free_cnt; + guint cnt2; + guint to_read; + guint n1, n2; + guint priv_read_idx; - priv_read_ptr=g_atomic_int_get(&read_ptr); + priv_read_idx=g_atomic_int_get(&read_idx); if ((free_cnt = read_space ()) == 0) { return 0; @@ -139,39 +135,39 @@ RingBuffer<T>::read (T *dest, size_t cnt) to_read = cnt > free_cnt ? free_cnt : cnt; - cnt2 = priv_read_ptr + to_read; + cnt2 = priv_read_idx + to_read; if (cnt2 > size) { - n1 = size - priv_read_ptr; + n1 = size - priv_read_idx; n2 = cnt2 & size_mask; } else { n1 = to_read; n2 = 0; } - memcpy (dest, &buf[priv_read_ptr], n1 * sizeof (T)); - priv_read_ptr = (priv_read_ptr + n1) & size_mask; + memcpy (dest, &buf[priv_read_idx], n1 * sizeof (T)); + priv_read_idx = (priv_read_idx + n1) & size_mask; if (n2) { memcpy (dest+n1, buf, n2 * sizeof (T)); - priv_read_ptr = n2; + priv_read_idx = n2; } - g_atomic_int_set(&read_ptr, priv_read_ptr); + g_atomic_int_set(&read_idx, priv_read_idx); return to_read; } -template<class T> size_t -RingBuffer<T>::write (T *src, size_t cnt) +template<class T> guint +RingBuffer<T>::write (T *src, guint cnt) { - size_t free_cnt; - size_t cnt2; - size_t to_write; - size_t n1, n2; - size_t priv_write_ptr; + guint free_cnt; + guint cnt2; + guint to_write; + guint n1, n2; + guint priv_write_idx; - priv_write_ptr=g_atomic_int_get(&write_ptr); + priv_write_idx=g_atomic_int_get(&write_idx); if ((free_cnt = write_space ()) == 0) { return 0; @@ -179,25 +175,25 @@ RingBuffer<T>::write (T *src, size_t cnt) to_write = cnt > free_cnt ? free_cnt : cnt; - cnt2 = priv_write_ptr + to_write; + cnt2 = priv_write_idx + to_write; if (cnt2 > size) { - n1 = size - priv_write_ptr; + n1 = size - priv_write_idx; n2 = cnt2 & size_mask; } else { n1 = to_write; n2 = 0; } - memcpy (&buf[priv_write_ptr], src, n1 * sizeof (T)); - priv_write_ptr = (priv_write_ptr + n1) & size_mask; + memcpy (&buf[priv_write_idx], src, n1 * sizeof (T)); + priv_write_idx = (priv_write_idx + n1) & size_mask; if (n2) { memcpy (buf, src+n1, n2 * sizeof (T)); - priv_write_ptr = n2; + priv_write_idx = n2; } - g_atomic_int_set(&write_ptr, priv_write_ptr); + g_atomic_int_set(&write_idx, priv_write_idx); return to_write; } @@ -205,12 +201,12 @@ template<class T> void RingBuffer<T>::get_read_vector (RingBuffer<T>::rw_vector *vec) { - size_t free_cnt; - size_t cnt2; - size_t w, r; + guint free_cnt; + guint cnt2; + guint w, r; - w = g_atomic_int_get (&write_ptr); - r = g_atomic_int_get (&read_ptr); + w = g_atomic_int_get (&write_idx); + r = g_atomic_int_get (&read_idx); if (w > r) { free_cnt = w - r; @@ -245,12 +241,12 @@ template<class T> void RingBuffer<T>::get_write_vector (RingBuffer<T>::rw_vector *vec) { - size_t free_cnt; - size_t cnt2; - size_t w, r; + guint free_cnt; + guint cnt2; + guint w, r; - w = g_atomic_int_get (&write_ptr); - r = g_atomic_int_get (&read_ptr); + w = g_atomic_int_get (&write_idx); + r = g_atomic_int_get (&read_idx); if (w > r) { free_cnt = ((r - w + size) & size_mask) - 1; diff --git a/libs/pbd/pbd/ringbufferNPT.h b/libs/pbd/pbd/ringbufferNPT.h index fee2efce3d..9db09098d6 100644 --- a/libs/pbd/pbd/ringbufferNPT.h +++ b/libs/pbd/pbd/ringbufferNPT.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef ringbuffer_npt_h diff --git a/libs/pbd/pbd/selectable.h b/libs/pbd/pbd/selectable.h index 470bc3cfcc..85f3e79ab0 100644 --- a/libs/pbd/pbd/selectable.h +++ b/libs/pbd/pbd/selectable.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __selectable_h__ diff --git a/libs/pbd/pbd/shortpath.h b/libs/pbd/pbd/shortpath.h new file mode 100644 index 0000000000..d126472e77 --- /dev/null +++ b/libs/pbd/pbd/shortpath.h @@ -0,0 +1,8 @@ +#ifndef __pbd_shortpath_h__ +#define __pbd_shortpath_h__ + +#include <glibmm/ustring.h> + +Glib::ustring short_path (const Glib::ustring& path, Glib::ustring::size_type target_characters); + +#endif /* __pbd_shortpath_h__ */ diff --git a/libs/pbd/pbd/stateful.h b/libs/pbd/pbd/stateful.h index 5fbac11e5c..550db5a24e 100644 --- a/libs/pbd/pbd/stateful.h +++ b/libs/pbd/pbd/stateful.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: stateful.h 17 2005-09-24 19:13:41Z taybin $ */ #ifndef __pbd_stateful_h__ diff --git a/libs/pbd/pbd/stl_delete.h b/libs/pbd/pbd/stl_delete.h index 6e5bfa0734..66fb027387 100644 --- a/libs/pbd/pbd/stl_delete.h +++ b/libs/pbd/pbd/stl_delete.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __libmisc_stl_delete_h__ diff --git a/libs/pbd/pbd/stl_functors.h b/libs/pbd/pbd/stl_functors.h index 4a96e91a28..3c83a1ae2f 100644 --- a/libs/pbd/pbd/stl_functors.h +++ b/libs/pbd/pbd/stl_functors.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __stl_functors_h__ diff --git a/libs/pbd/pbd/strsplit.h b/libs/pbd/pbd/strsplit.h index e55ad1c825..f36a3ae5f0 100644 --- a/libs/pbd/pbd/strsplit.h +++ b/libs/pbd/pbd/strsplit.h @@ -3,7 +3,9 @@ #include <string> #include <vector> +#include <glibmm/ustring.h> extern void split (std::string, std::vector<std::string>&, char); +extern void split (Glib::ustring, std::vector<Glib::ustring>&, char); #endif // __pbd_strplit_h__ diff --git a/libs/pbd/pbd/textreceiver.h b/libs/pbd/pbd/textreceiver.h index b8bfe5bc78..e5900fc652 100644 --- a/libs/pbd/pbd/textreceiver.h +++ b/libs/pbd/pbd/textreceiver.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __libmisc_textreceiver_h__ diff --git a/libs/pbd/pbd/thrown_error.h b/libs/pbd/pbd/thrown_error.h index 83cf8acfac..0a63085f11 100644 --- a/libs/pbd/pbd/thrown_error.h +++ b/libs/pbd/pbd/thrown_error.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __qm_thrown_error_h__ #define __qm_thrown_error_h__ diff --git a/libs/pbd/pbd/touchable.h b/libs/pbd/pbd/touchable.h index 0298574dfa..12f1c443fd 100644 --- a/libs/pbd/pbd/touchable.h +++ b/libs/pbd/pbd/touchable.h @@ -14,7 +14,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __pbd_touchable_h__ diff --git a/libs/pbd/pbd/transmitter.h b/libs/pbd/pbd/transmitter.h index 357cb9965f..61ac9bd8d8 100644 --- a/libs/pbd/pbd/transmitter.h +++ b/libs/pbd/pbd/transmitter.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __libmisc_transmitter_h__ diff --git a/libs/pbd/pbd/undo.h b/libs/pbd/pbd/undo.h index 4dfab5178f..9539d8b41d 100644 --- a/libs/pbd/pbd/undo.h +++ b/libs/pbd/pbd/undo.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __lib_pbd_undo_h__ diff --git a/libs/pbd/shortpath.cc b/libs/pbd/shortpath.cc new file mode 100644 index 0000000000..59af8e4dcb --- /dev/null +++ b/libs/pbd/shortpath.cc @@ -0,0 +1,56 @@ +#include <pbd/shortpath.h> + +using namespace Glib; +using namespace std; + +ustring +short_path (const Glib::ustring& path, ustring::size_type target_characters) +{ + ustring::size_type last_sep; + ustring::size_type len = path.length(); + const char separator = '/'; + + if (len <= target_characters) { + return path; + } + + if ((last_sep = path.find_last_of (separator)) == ustring::npos) { + + /* just a filename, but its too long anyway */ + + if (target_characters > 3) { + return path.substr (0, target_characters - 3) + ustring ("..."); + } else { + /* stupid caller, just hand back the whole thing */ + return path; + } + } + + if (len - last_sep >= target_characters) { + + /* even the filename itself is too long */ + + if (target_characters > 3) { + return path.substr (last_sep+1, target_characters - 3) + ustring ("..."); + } else { + /* stupid caller, just hand back the whole thing */ + return path; + } + } + + uint32_t so_far = (len - last_sep); + uint32_t space_for = target_characters - so_far; + + if (space_for >= 3) { + ustring res = "..."; + res += path.substr (last_sep - space_for); + return res; + } else { + /* remove part of the end */ + ustring res = "..."; + res += path.substr (last_sep - space_for, len - last_sep + space_for - 3); + res += "..."; + return res; + + } +} diff --git a/libs/pbd/stacktrace.cc b/libs/pbd/stacktrace.cc index 6495009765..8a6eb606b2 100644 --- a/libs/pbd/stacktrace.cc +++ b/libs/pbd/stacktrace.cc @@ -23,7 +23,7 @@ PBD::stacktrace (std::ostream& out, int levels) printf ("Obtained %zd stack frames.\n", size); - for (i = 0; i < size && (levels == 0 || i < levels); i++) { + for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) { out << strings[i] << std::endl; } diff --git a/libs/pbd/strreplace.cc b/libs/pbd/strreplace.cc new file mode 100644 index 0000000000..dd90baf324 --- /dev/null +++ b/libs/pbd/strreplace.cc @@ -0,0 +1,19 @@ +#include <pbd/replace_all.h> + +int +replace_all (std::string& str, + std::string const& target, + std::string const& replacement) +{ + std::string::size_type start = str.find (target, 0); + int cnt = 0; + + while (start != std::string::npos) { + str.replace (start, target.size(), replacement); + start = str.find (target, start+replacement.size()); + ++cnt; + } + + return cnt; +} + diff --git a/libs/pbd/strsplit.cc b/libs/pbd/strsplit.cc index 7f29a77887..1fb6112150 100644 --- a/libs/pbd/strsplit.cc +++ b/libs/pbd/strsplit.cc @@ -1,6 +1,7 @@ #include <pbd/strsplit.h> using namespace std; +using namespace Glib; void split (string str, vector<string>& result, char splitchar) @@ -39,3 +40,41 @@ split (string str, vector<string>& result, char splitchar) result.push_back (remaining); } } + +void +split (ustring str, vector<ustring>& result, char splitchar) +{ + ustring::size_type pos; + ustring remaining; + ustring::size_type len = str.length(); + int cnt; + + cnt = 0; + + if (str.empty()) { + return; + } + + for (ustring::size_type n = 0; n < len; ++n) { + if (str[n] == gunichar(splitchar)) { + cnt++; + } + } + + if (cnt == 0) { + result.push_back (str); + return; + } + + remaining = str; + + while ((pos = remaining.find_first_of (':')) != ustring::npos) { + result.push_back (remaining.substr (0, pos)); + remaining = remaining.substr (pos+1); + } + + if (remaining.length()) { + + result.push_back (remaining); + } +} |