Commit Graph

39 Commits

Author SHA1 Message Date
Robin Gareus
705ac7bfc5 Prevent huge stack allocations for MIDNAM files
xmlParseMemory() uses a c-pointer char*.
Previously MIDNAM data on the heap were wrapped inside
a std::string only to be later accessed via c_str().
2020-04-23 02:25:38 +02:00
Robin Gareus
0301c47f6b Update core library GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
Ben Loftis
7d88091229 Avoid assert() when loading xml: Throw an XMLerror if attribute_value fails. 2017-08-30 10:23:34 -05:00
Robin Gareus
628e60f8fd NO-OP: whitespace 2017-05-29 23:45:16 +02:00
Daniel Sheeler
d67436af3b duplicate routes start off unsoloed to avoid issues related to upstream / downstream buses 2017-05-29 15:42:27 -05:00
Tim Mayberry
6e467153a0 Remove unused XMLNode::add_property methods
These are now unused and functionality is replaced by XMLNode::set_property

set_property is a better name as a node can only have properties with unique
names and the property will be set or reset(if it already exists). Changing the
name also makes it easier to transition and test the new API.
2017-04-19 09:36:57 +10:00
Tim Mayberry
ae27e33f29 Add a template based get/set_property API to PBD::XMLNode 2017-04-19 09:36:48 +10:00
Robin Gareus
06700cb2f4 Allow to construct a XML tree from a text buffer 2016-10-29 19:57:43 +02:00
Tim Mayberry
e84fbfe6e5 Remove PropertyMap from XMLNode class
It appears that there is no performance benefit from storing properties in a
map for faster lookup or it is counteracted by the penalty of storing and
maintaining the additional data structure.

Timing results before changes with an optimized build:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 41293 Max: 63746 Total: 564448 Avg: 56444 (56 msecs)
   Write : Count: 10 Min: 42932 Max: 49221 Total: 453955 Avg: 45395 (45 msecs)
   Read : Count: 10 Min: 80160 Max: 84678 Total: 824506 Avg: 82450 (82 msecs)

XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 228759 Max: 420236 Total: 3587597 Avg: 358759 (358 msecs)
   Write : Count: 10 Min: 307095 Max: 348767 Total: 3205704 Avg: 320570 (320 msecs)
   Read : Count: 10 Min: 572400 Max: 657219 Total: 5959630 Avg: 595963 (595 msecs)

Perf results after changes:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 30610 Max: 42656 Total: 376672 Avg: 37667 (37 msecs)
   Write : Count: 10 Min: 42804 Max: 54277 Total: 460455 Avg: 46045 (46 msecs)
   Read : Count: 10 Min: 70364 Max: 85484 Total: 750909 Avg: 75090 (75 msecs)

XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 164360 Max: 356995 Total: 3064482 Avg: 306448 (306 msecs)
   Write : Count: 10 Min: 308655 Max: 372953 Total: 3226707 Avg: 322670 (322 msecs)
   Read : Count: 10 Min: 517243 Max: 541839 Total: 5289950 Avg: 528995 (528 msecs)
2016-10-10 08:45:34 +10:00
Tim Mayberry
4b2987d0f2 Add XMLNode::operator==/!=() for comparing XMLNode instances
Implemented to be able to test that when writing an XML document via XMLTree
and then reading back into another XMLTree the structure is equivalent as a
general API test of pbd/xml++.h to check for breakage when changing
implementation.
2016-10-10 08:45:34 +10:00
Paul Davis
17ace643e4 OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one) 2016-05-04 23:09:45 -04:00
Robin Gareus
255b5174c4 add a const method to check for existing key/value properties
handy to lookup up XMLNodes with "id" == ID w/o allocating memory.
2016-05-03 03:03:00 +02:00
Robin Gareus
ff05c82312 Revert "experimental session-save speedup" -- needs C++11
This reverts commit d1dcedaccf.
2016-04-08 21:21:38 +02:00
Robin Gareus
3def1b2830 more potential session-save speedup.
std:vector trumps std::list speed in all aspects: traversal, insertion
(at end) and Deletion.  ..but we'll have to be careful about iterators..
2016-04-08 21:03:23 +02:00
Robin Gareus
d1dcedaccf experimental session-save speedup
property order is not important,
unordered_map lookup and insertion is O(1)
2016-04-08 20:32:49 +02:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Paul Davis
c5115c9a3c add export visibility control to libpbd (works thus far on linux/gcc) 2013-10-16 23:30:28 -04:00
Paul Davis
db3da02446 add copyright comments
git-svn-id: svn://localhost/ardour2/branches/3.0@13865 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-16 18:51:39 +00:00
Paul Davis
760ccbabfb add -Wpointer-arith -Wcast-qual -Wcast-align and others to compile flags, and fix const cast warnings generated by new flags
git-svn-id: svn://localhost/ardour2/branches/3.0@13124 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-10 15:57:09 +00:00
Paul Davis
71b3c8cfe1 some deep changes to xml++ in which we retain a C-level xmlDocPtr as a member of an XMLTree objects. this allows us to do repeated XPATH searches (as in the midnam parser of libmidi++) without constantly rewriting an entire tree into memory to recreate a new xmlDocPtr with which we can search. Since XMLTree objects don't typically stay around for very long, just when serializing to/from disk, this is not anticipated to have much (if any) impact on memory consumption
git-svn-id: svn://localhost/ardour2/branches/3.0@11733 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-20 18:01:07 +00:00
Paul Davis
3c7f9586ae implement XMLNode::operator=() as a deep operation with the same semantics as the XMLNode copy constructor. attempt to share as much code as possible between them and the destructor
git-svn-id: svn://localhost/ardour2/branches/3.0@11612 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-07 02:07:35 +00:00
Carl Hetherington
0c9c47086c Slightly unpleasant fix for creation of tracks from
templates; it would be nice if we could set things up using
the Route's logic for setting names of its children, rather
than repeating the same logic in XML-land (#4303).


git-svn-id: svn://localhost/ardour2/branches/3.0@10655 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16 23:03:59 +00:00
Carl Hetherington
8778724701 Rename debug -> dump
git-svn-id: svn://localhost/ardour2/branches/3.0@7738 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-09-03 15:24:21 +00:00
Carl Hetherington
542372cd18 Add debug() method to dump XML nodes.
git-svn-id: svn://localhost/ardour2/branches/3.0@7083 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-05-09 00:46:33 +00:00
Carl Hetherington
3b89d9eaa0 Remove most using declarations from header files.
git-svn-id: svn://localhost/ardour2/branches/3.0@5069 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-05-12 17:03:42 +00:00
David Robillard
c9e5903e73 Clean up xml++.h and xml++.cc in Ardour style.
No functional changes.
(We've diverged far enough for it to not matter, and are about to diverge even more, so might as well).


git-svn-id: svn://localhost/ardour2/branches/3.0@4649 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-22 20:52:34 +00:00
Paul Davis
c86210a9d5 merge 2.0-ongoing into 3.0 @ 3581 - 3710
git-svn-id: svn://localhost/ardour2/branches/3.0@3712 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-09-10 21:27:39 +00:00
Paul Davis
449aab3c46 rollback to 3428, before the mysterious removal of libs/* at 3431/3432
git-svn-id: svn://localhost/ardour2/branches/3.0@3435 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-06-02 21:41:35 +00:00
Doug McLain
9c0d7d72d7 remove empty sigc++2 directory
git-svn-id: svn://localhost/ardour2/branches/3.0@3432 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-06-02 05:02:28 +00:00
Hans Baier
911c5717bc * splitted midi++/event.h in header and implementation
* added to_string(), to_xml() and from_xml() to MIDI::Event
* added partial support for midnam-Patchfiles (http://www.sonosphere.com/dtds/MIDINameDocument.dtd): midnam_patch.h/.cc
* added validation support to xml++.cc/.h
* added XMLNode::add_property(const char *name, const long value)
* added test to pbd/tests/xpath.cc


git-svn-id: svn://localhost/ardour2/branches/3.0@3412 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-25 23:35:23 +00:00
Hans Baier
4aa9d17ab1 * added midnam test file for xpath
* added to_string() to MIDI::Event
* added XMLNode::attribute_value for attribute nodes
* debugging output in MidiModel (incorrect rendering of Pitchbender events: Notes lost
* added xpath tests for midnam files


git-svn-id: svn://localhost/ardour2/branches/3.0@3406 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-23 10:36:51 +00:00
Hans Baier
1401a52764 * changed return type for pbd/xml++ xpath support to use boost::shared_ptr
git-svn-id: svn://localhost/ardour2/branches/3.0@3402 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-23 00:52:25 +00:00
Hans Baier
376263d925 * added XPath support to pbd/xml++
git-svn-id: svn://localhost/ardour2/branches/3.0@3384 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-22 12:06:20 +00:00
David Robillard
1b65758557 Committed underlay support (from Audun).
git-svn-id: svn://localhost/ardour2/branches/3.0@3037 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-02-10 18:16:25 +00:00
Paul Davis
ca49f7cba7 fix audio clock restore, provide XMLNode::property (string) and speed up the property methods by not scanning the map twice. sorry about the recompile
git-svn-id: svn://localhost/ardour2/trunk@1286 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-01-08 20:51:26 +00:00
Paul Davis
71c94e6943 massive changes in automation state handling, not entirely complete; some bug fixes for automation line drawing
git-svn-id: svn://localhost/ardour2/trunk@1034 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-10-31 02:40:08 +00:00
Taybin Rutkin
3a5a338f80 Fixed double delete in Stateful::add_instant_xml().
git-svn-id: svn://localhost/ardour2/trunk@690 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-07-22 16:21:10 +00:00
Taybin Rutkin
481f7c3965 Fixed i18n system.
Renamed pbd3 back to pbd, since it's version 4.1 now.
Very minor fixes


git-svn-id: svn://localhost/ardour2/trunk@656 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-06-29 22:21:30 +00:00