Commit graph

669 commits

Author SHA1 Message Date
Ferdinand Majerech ebc6e64c2b API BREAKING:
Node opEquals(), opIndex(), opIndexAssign(), remove(), removeAt()
no longer automatically convert to string. This was changed
to prevent the API from getting too non-obvious, and to
remove the need for too many special cases in the code.
The API documentation was changed accordingly.
opApply()  still automatically converts to string.

Added a contains() method to Node.

Clarified YAML null values in the documentation.

Improved unittests.

Fixed a bug that caused opIndex() and opIndexAssign() to only
work with exactly the same type as stored in the node
(e.g. real, but not double, for floating-point values)

Fixed some potential bugs.

Minor documentation fixes.
2012-03-01 11:44:05 +01:00
Ferdinand Majerech 7673281ae4 CDC fixes for Windows. 2012-01-24 11:23:06 +01:00
Ferdinand Majerech 242960e927 Updated DMD links. 2012-01-23 18:40:05 +01:00
Ferdinand Majerech aad93aa42e Updated changelog for 0.4 . 2012-01-23 16:57:40 +01:00
Ferdinand Majerech 3e1b01f097 Updated version numbers to 0.4 . 2012-01-23 16:20:52 +01:00
Ferdinand Majerech 9596806644 Red-Black Trees are now used for duplicate detection, and planned
to be used for unordered map storage. This is because AAs still
don't work correctly and even if they did, require the user to
define both toHash and opCmp/opEquals for every YAML
struct/class. Now only opCmp needs to be defined.
Documentation/tutorials/examples have been updated accordingly.
2012-01-23 15:57:26 +01:00
Ferdinand Majerech 07eadc9403 Fixed a bug with parsing null values caused by std.regex changes,
and a minor ZeroString fix.
2012-01-23 01:19:49 +01:00
Ferdinand Majerech 06e3a6db3b CDC improvements and an a fix in AutoDDoc. 2012-01-23 01:16:57 +01:00
Ferdinand Majerech d46a3ac5c2 Fixed a bug that caused an out of range error when a key in a
mapping could not be found.
2012-01-22 17:03:32 +01:00
Ferdinand Majerech 04af9bf240 Fixed some compilation bugs on 32bit. 2012-01-22 10:37:44 +01:00
Ferdinand Majerech 01c0ea6cd6 Merge pull request #1 from stefanhepp/master
Added a fix for a compile error with the latest dmd version
2012-01-20 01:37:19 -08:00
Stefan Hepp bb54e6db41 Fix for compile error with dmd 2.057 2012-01-19 17:51:42 +01:00
Ferdinand Majerech 10dbb55ed8 Minor documentation and API fixes. 2011-11-18 12:28:29 +01:00
Ferdinand Majerech fbc962623d Simplified the Constructor API. 2011-11-17 23:53:24 +01:00
Ferdinand Majerech ab154480fb Final commit before tha 0.3 release. 2011-11-16 20:41:21 +01:00
Ferdinand Majerech 2c9d464389 Reader was reimplemented.
After experiments with loading the whole file at once, and
with decoding and parsing in separate thread, lazy reader
turned to be the fastest/least memory intensive solution.
Characters are now decoded in small batches.
This improved parsing speed by ~20%.

No global state anymore. Anchors are now zero terminated strings
and TagDirectives are a simple array. Event structure was changed
to prevent size increase.
Minor fixes and improvements.
2011-11-16 03:10:29 +01:00
Ferdinand Majerech f95f0d14c8 Const correctness and minor bugfixes all over the code. 2011-10-30 20:24:43 +01:00
Ferdinand Majerech 8208e817de Updated Node for much more constness (unfortunately, quite some
code duplication as well). No longer need a custom Variant.
2011-10-30 18:12:02 +01:00
Ferdinand Majerech 508696584e More constness in Node. 2011-10-30 10:52:40 +01:00
Ferdinand Majerech b3a51800f7 Removed Node.getToVar as it turned out to be a premature
optimization.
2011-10-29 22:53:46 +02:00
Ferdinand Majerech c385a3ae4d Fixed a documentation bug. 2011-10-29 21:57:36 +02:00
Ferdinand Majerech e835f1a191 Updated Representer API doc, minor documentation changes. 2011-10-29 20:43:30 +02:00
Ferdinand Majerech 0e0113ef0e Moved variant.d to dyaml/std/variant. Profile build doesn't inline anymore (made profiling too difficult). More optimizations, speedup (parsing only). 2011-10-29 18:22:45 +02:00
Ferdinand Majerech be5664a24d Updated D:YAML with DMD 2.056 support. Fixed some bugs.
Found a bug in std.variant and bundled a fixed version.
2011-10-29 00:31:14 +02:00
Ferdinand Majerech 5d35f44416 Nodes now remember their scalar and collection style, although
these are not accessible by the user (as the spec says).
This allows D:YAML to remember styles between loading and
dumping.
2011-10-27 23:13:14 +02:00
Ferdinand Majerech c787531497 Node struct enlarged to 40 bytes. There is no significant
slowdown and a slight memory usage increase. Fixed a potential
bug in Reader. Tag is now implemented as a zero-terminated
string, removing the need for global state.
Node opIndex now returns a reference.
2011-10-26 21:05:56 +02:00
Ferdinand Majerech 6eda5d9d4a Added a profile build target (release with debug symbols).
Release doesn't have debug symbols anymore.
2011-10-26 06:39:06 +02:00
Ferdinand Majerech 60b57ca00d Minor optimizations.
Queue now only adds ranges to the GC if the type allocated has
indirections.
2011-10-26 06:30:10 +02:00
Ferdinand Majerech 62f7e2e4df Optimized dumping performance. Dumping is now about half as fast
as loading. Also slightly improved loading performance.
Greatly improved performance with very small files. We can now
load 10000 24 byte files in a second, and dump them at the same
speed.
Fixed another FastCharSearch bug.
2011-10-25 20:23:44 +02:00
Ferdinand Majerech 8b995e5061 Fixed a bug in FastCharSearch.
Reader buffer is now manually allocated, decreasing GC workload
even further.
2011-10-25 00:16:43 +02:00
Ferdinand Majerech 97bdf819fa Replaced possibleSimpleKeys associative array in Scanner with an
ordinary array, added a mixin to generate fast lookup tables for
character search, and used said mixin in the greatest
bottlenecks. Another great speedup, at least 20%, can't keep
track of it anymore.
2011-10-24 20:36:26 +02:00
Ferdinand Majerech 97693b4417 Got rid of most UTF-8 decoding that took a lot of time.
Removed unnecessary calls to Stream.available(),
again for grat speed gain. Also various small optimizations.
Overall, improved loading speed about 400%.
2011-10-24 00:46:35 +02:00
Ferdinand Majerech 9d68b6fa9a Optimized GC performance when loading,
greatly decreasing memory usage and
improving speed by 30% or more.
2011-10-23 20:17:37 +02:00
Ferdinand Majerech 915428c8ed CDC and yaml_bench makefile now always compile with debug
symbols. yaml_bench can now repeat the benchmark many times in a
single run. yaml_gen can now disable collection keys in mappings.
2011-10-23 16:10:27 +02:00
Ferdinand Majerech 13ea5f0c24 Added a shortcut alias called "as" for Node.get(), and replaced
get() with as() all over the code, tutorials, examples and docs.
Fixed a bug in YAML benchmark makefile.
Fixed a bug in autoddoc configuration.
2011-10-22 17:06:32 +02:00
Ferdinand Majerech fb67e775e4 Added a YAML benchmark that loads and optionally extracts data
from and/or dumps a YAML file.
2011-10-22 16:20:06 +02:00
Ferdinand Majerech 3078262129 Fixed an Emitter bug which caused tags to always be emitted in
full format.
Specified field names for the tag directive tuple to make code
more readbvle.
Fixed a bug in Dumpler.tagDirectives documentation example.
2011-10-22 11:18:57 +02:00
Ferdinand Majerech 1f2243190f Added a random YAML generator to serve as an example and for
benchmarking.
2011-10-22 00:24:29 +02:00
Ferdinand Majerech 7402d8f827 Fixed Makefile of the yaml_stats example.
Fixed a bug in Node that caused an empty exception message.
2011-10-21 20:40:37 +02:00
Ferdinand Majerech f726ff0b94 Added an example application that displays statistics about YAML
documents.
2011-10-20 23:20:02 +02:00
Ferdinand Majerech d5a063930d Clarified Node documentation.
Fixed a bug that caused errors when loading documents with YAML
version directives.
2011-10-20 20:01:52 +02:00
Ferdinand Majerech a87d618732 Examples' Makefiles now have a clean target. 2011-10-20 15:51:31 +02:00
Ferdinand Majerech 33a376b038 String representation of a Node's tag can now be accessed by the
user.
2011-10-20 15:48:21 +02:00
Ferdinand Majerech fb814c66c2 Implemented a simple Queue data structure, until Phobos has a
replacement. Tokens are not immutable anymore.
2011-10-20 10:34:34 +02:00
Ferdinand Majerech 595302fbff Bumped version strings to 0.3 so it won't get forgotten later. 2011-10-18 21:46:05 +02:00
Ferdinand Majerech 2cd2de44ff Updated Constructor API documentation with examples. 2011-10-18 21:40:37 +02:00
Ferdinand Majerech 93b66da54c Added a Resolver example to the API documentation. 2011-10-18 16:29:16 +02:00
Ferdinand Majerech 8ad650e089 Cleaned up exceptions and their messages.
Some minor dog fixes.
2011-10-18 16:12:22 +02:00
Ferdinand Majerech 009017eef0 Simplified the Constructor and Resolver example -
no need for range checks as they are handled in Node itself.
2011-10-17 13:13:02 +02:00
Ferdinand Majerech 548480b06b Changed the Constructor API (for loading of custom types) to
make it easier to load custom classes/structs. Updated API docs,
tutorials and examples accordingly.
2011-10-17 12:53:38 +02:00