- Nov 27, 2014
-
-
Arseny Kapoulkine authored
-
- Nov 26, 2014
-
-
Arseny Kapoulkine authored
-
- Nov 25, 2014
-
-
Arseny Kapoulkine authored
Since MinGW 4.5 does not define these functions if __STRICT_ANSI__ is defined (in case of _wfopen it defines it inconsistently between stdio.h and wchar.h) use the baseline functions for MinGW 4.5 and earlier. Fixes #23.
-
Arseny Kapoulkine authored
-
- Nov 21, 2014
-
-
Arseny Kapoulkine authored
node_copy_string relied on the fact that target node had an empty name and value. Normally this is a safe assumption (and a good one to make since it makes copying faster), however it was not checked and there was one case when it did not hold. Since we're reusing the logic for inserting nodes, newly inserted declaration nodes had the name set automatically to xml, which in our case violates the assumption and is counter-productive since we'll override the name right after setting it. For now the best solution is to do the same insertion manually - that results in some code duplication that we can refactor later (same logic is partially shared by _move variants anyway so on a level duplicating is not that bad).
-
Arseny Kapoulkine authored
Add allow_insert_attribute (similar to allow_insert_child).
-
- Nov 20, 2014
-
-
Arseny Kapoulkine authored
Remove redundant this-> from type() call (argument used to be called type, but it's now type_). Use _root member directly when possible instead of calling internal_object.
-
Arseny Kapoulkine authored
This will allow us to implement nodeset_eval_last evaluation mode if necessary without relying on a fragile boolean argument.
-
Arseny Kapoulkine authored
Extract end of string to rend and add comments to translate_table.
-
Arseny Kapoulkine authored
Right now remove_node is only used in contexts where parent is reset after removing but this might be important in the future.
-
Arseny Kapoulkine authored
Since depth is unsigned this is actually well-defined but it's better to not have the underflow anyway.
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
This is more for consistency with the surrounding code than for performance.
-
Arseny Kapoulkine authored
Some compilers don't handle NaNs properly. Some compilers don't implement fmod in a IEEE-compatible way. Some compilers have exception handling codegen bugs (DMC...).
-
- Nov 18, 2014
-
-
Arseny Kapoulkine authored
Also fix documentation jam rules for Windows.
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
Release date is (tentatively) 11/27.
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
This should completely eliminate the confusion between load and load_file. Of course, for compatibility reasons we have to preserve the old variant - it will be deprecated in a future version and subsequently removed.
-
- Nov 17, 2014
-
-
Arseny Kapoulkine authored
The behavior on OSX is different - we don't get a I/O error so the test is useless.
-
Arseny Kapoulkine authored
-
- Nov 07, 2014
-
-
Arseny Kapoulkine authored
Previously push_back implementation was too big to inline; now the common case (no realloc) is small and realloc variant is explicitly marked as no-inline. This is similar to xml_allocator::allocate_memory/allocate_memory_oob and makes some XPath queries 5% faster.
-
Arseny Kapoulkine authored
In some cases constant overhead on step evaluation is important - i.e. for queries that evaluate a simple step in a predicate expression. Eliminating a redundant function call thus can prove worthwhile. This change makes some queries (e.g. //*[not(*)]) 4% faster.
-
- Nov 06, 2014
-
-
Arseny Kapoulkine authored
This reverts commit 98713bcb. Travis multi-OS feature is invite-only for now...
-
Arseny Kapoulkine authored
Hopefully OSX defaults to clang so we get as much coverage as before...
-
- Nov 05, 2014
-
-
Arseny Kapoulkine authored
Previously setting a large page size (i.e. 1M) would cause dynamic string allocation to assert spuriously. A page size of 64K guarantees that all offsets fit into 16 bits.
-
Arseny Kapoulkine authored
Computed offsets for documents with nodes that were added using append_buffer or newly appended nodes without name/value information were invalid.
-
Arseny Kapoulkine authored
This reduces the number of unsafe pointer manipulations.
-
Arseny Kapoulkine authored
These used to result in better codegen for unknown reasons, but this is no longer the case.
-
- Nov 03, 2014
-
-
Arseny Kapoulkine authored
Split number/boolean filtering logic into two functions. This creates an extra copy of a remove_if-like algorithm, but moves the type check out of the loop and results in better organized filtering code. Consolidate test-based dispatch into apply_predicate (which is now a member function).
-
Arseny Kapoulkine authored
-
- Nov 02, 2014
-
-
Arseny Kapoulkine authored
Calling memcpy(x, 0, 0) is technically undefined (although it should usually be a no-op).
-
- Nov 01, 2014
-
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
Calling memcpy(x, 0, 0) is technically undefined (although it should usually be a no-op). Fixes #20.
-
Arseny Kapoulkine authored
Not sure why xargs -r is not the default...
-
- Oct 29, 2014
-
-
Arseny Kapoulkine authored
-
- Oct 28, 2014
-
-
Arseny Kapoulkine authored
This lets us do fewer null pointer checks (making printing 2% faster with -O3) and removes a lot of function calls (making printing 20% faster with -O0).
-
Arseny Kapoulkine authored
To get more benefits from constant predicate/filter optimization we rewrite [position()=expr] predicates into [expr] for numeric expressions. Right now the rewrite is only for entire expressions - it may be beneficial to split complex expressions like [position()=constant and expr] into [constant][expr] but that is more complicated. last() does not depend on the node set contents so is "constant" as far as our optimization is concerned so we can evaluate it once.
-
- Oct 26, 2014
-
-
Arseny Kapoulkine authored
Numeric and boolean constant expressions in filters are different in that to evaluate numeric expressions we need a sorted order, but to evaluate boolean expressions we don't. The previously implemented optimization adds an extra sorting step for constant boolean filters that will be more expensive than redundant computations. Since constant booleans are sort of an edge case, don't do this optimization. This allows us to simplify apply_predicate_const to only handle numbers.
-
Arseny Kapoulkine authored
Now expression is always _right for filter/predicate nodes to make optimize() simpler. Additionally we now use predicate metadata to make is_posinv_step() faster. This introduces a weak ordering dependency in rewrite rules to optimize() - classification has to be performed before other optimizations.
-