Commit graph

46 commits

Author SHA1 Message Date
1a4b6545a0 maximum munch
...feels like X-mas
2016-12-23 04:23:03 +01:00
0208451906 correctness: should use less-than comparison to detect iteration end
...since, semantically, the template param INT is expected to be
"number like", which implies to base the "in range" notion
on a comparison concept (e.g. we might use floating point numbers)
2016-02-04 22:58:17 +01:00
170bca7044 const correctness: should define the value without const
these typedefs are provided for client code to pick up
the actual type; and for value_type we'd expect the
type without any adornments
2016-02-04 22:53:39 +01:00
34feedf82f sanity: should have defined those operators inline
...this was clearly wrong; it went unnoticed just
because the linker cleans up duplicates of
template instantiations. (I'd expect GCC-5
to spot such errors)
2016-02-04 22:52:01 +01:00
8a33048cc7 simple number range iterator
very similar to boost::irange, but without heavyweight boost
includes, and moreover based on our Lumiera Forward Iterator concept

Such a inline-range construct makes writing simple tests easy
2016-02-04 22:01:48 +01:00
1814b1fc69 type-traits(#985): rework and clean-up our type-traits
include the improved facility to detect the ability
for lexical cast. Also remove the boost dependency
and switch entirely to standard <type_traits>
2016-01-06 02:41:58 +01:00
eb208ea145 direction switching iterator unit test PASS 2015-12-06 02:28:47 +01:00
08e7e3df15 prefer more readable bool operator spelling
especially the '!' for negation is sometimes too terse
and easily overlooked.
2015-09-25 03:12:04 +02:00
82ef5964ba Fix to use IterAdapter with generic "position" types
seemingly the operator-> was not yet used in any real scenario.
The whole point with IterAdapter is that it uses an opaque "location type",
which is owned by the controlling container. In many cases this will
actually be just a pointer into the container storage, but we
must not assume it is this way. Thus the only way to obtain a
(language) pointer is to dereference the "position type" and
take the address of the result
2015-09-11 18:32:08 +02:00
9ff79b86cf fix warnings found by CLang (3.5)
Note: not fixing all relevant warnings.

Especially, the "-Woverloaded-virtual" of Clang defeats the whole purpose
of generated generic interfaces. For example, our Variant type is instantiated
with a list of types the variant can hold. Through metaprogramming, this
instantiation generates also an embedded Visitor interface, which has
virtual 'handle(TY)' functions for all the types in question

The client now may implement, or even partially implement this Visitor,
to retrieve specific data out of given Variant instance with unknown conent.
To complain that some other virtual overload is now shaddowed is besides the point,
so we might consider to disable this warning altogether
2015-08-16 01:37:04 +02:00
46e573efb7 includes: split out rarely used PtrDerefIter
this allows us to avoid a boost include otherwise
dragged in through the widely used iter-adapter.hpp
2015-08-16 01:35:28 +02:00
ce7c38312d iterator improvements: use Lumiera Forward Iterator in range for loops
This is kind of the logic consequence, since we consider our
functional iterator concept still superior and will continue
to rely on it.

For some time now, I've considered to build a generic bridge
function, to use enable_if and metaprogramming to figure out
if some type is a "Lumiera Forward Iterator" automatically.
But since our concept is to some degree a contract regarding
semantics, which never can be captured by any kind of introspection,
such a bridge implementation would be rather heuristic and
bears the danger to trigger on types actually not intended
as iterator at all. So I consider such a solution as dangerous
and we'll settle with just supplying the necessary bridge
functions as free functions injected for ADL on a case by case base
2015-08-16 01:35:28 +02:00
09e7e1f8f5 WIP: pondering diff representation variants
Actually I arried at the conclusion, that the *receiving* of
a diff representation is actually a typical double-dispatch situation.
This leads to the attempt to come up with a specialised visitor
as standard pattern to handle and apply a diff. Obviously,
we do not want the classical GoF-Visitor, but (yes, we had
that discussion allready) -- well in terms of runtime cost,
we have to deal with at least two indirections anyway;
so now I'm exploring the idea to implement one of these
indirections through a functor object, which at the same time
acts as "Tag" in the diff representation language (instead
of using an enum as tag)
2014-11-10 04:00:39 +01:00
6822a9e2fb DOC: reorganise the Doxygen configuration and structure
- upgrade the configuration to a current version
- provide a frontpage with cross-links to other documentation
- define a set of modules; relevant classes and files can be
  added to these, to create a exploration path for new readers
- fix a lot of errors in documentation comments
- use a custom configuration for the documentation pages
- tweak the navigation, the sections and further arrangements
2013-10-25 06:34:38 +02:00
d953d4e6af Library: convenience function to take addresses
just a wrapper based on 5749a621

While implementing this, also simplified the way
a const iterator can be defined for taking addresses
2013-04-15 03:07:15 +02:00
346acb1fec WIP continue debugging this test...
Problem with the visitation is solved now.
But the tree is still not rebuilt properly
2013-04-13 04:30:04 +02:00
5749a6216c Library: iterator wrapper to expose the address
...for the very specific situation when we want
to explore an existing data structure, and the
exploration assumes value semantics.
The workaround then is to use pointers as values.
2013-04-08 02:03:43 +02:00
a4411d00b1 DONE: time anchor and latency handling for job planning 2013-01-12 12:38:33 +01:00
d14b37a71d utility class factored out and covered by test
...a stack which can be Lumiera-iterated
2012-10-10 05:20:16 +02:00
dc3ebd4a8f first working concept for an "iterator monad"
the intention is to use this to simplify
generating render jobs based on the elaborated
dependency network of the render nodes. The key
challenge is to overcome the necessity to
store partially done evaluations as
continuation
2012-10-10 05:20:16 +02:00
378ebe21f0 Fix naming of Iteration control API functions (closes #410)
comes in handy now, since IterStateWrapper uses a similar API
2012-10-10 05:20:15 +02:00
83a0f4b41f Implementation (I) : IterStateWrapper as foundation (passing test) 2012-10-10 05:20:15 +02:00
d732e7e211 Lumiera Forward Iterators: remove support for post-increment 2012-01-08 01:14:36 +01:00
13b795016b comment rewording 2011-11-19 18:01:48 +01:00
1f966a02ec some rather tricky adjustments to PtrDerefIter
...allowing to use that custom iterator together
with STL algorithms
2011-11-19 17:46:24 +01:00
3f1b7651e9 GPL header whitespace 2010-12-17 23:28:49 +01:00
99f29f9795 now able to build a IterSource based opaque const Scope iterator
for this to work, scope-path.hpp injects an explicit specialisation,
causing the RangeIter defined in ScopePath to yield const Scope
2010-10-16 02:21:18 +02:00
02d6d6a65c extract iter::TypeBinding into separate header to allow explicit specialisation 2010-10-16 02:21:18 +02:00
fdfb946d63 preparation to allow explicit type bindings for iter-adapter 2010-10-16 02:21:18 +02:00
e5de12fc7a (draft) maybe solved the problem defining a scope iterator
actually that would require to extract the IterTraits
from iter-adapter.hpp to allow for such dedicate specialisations
2010-10-16 02:21:18 +02:00
d5cdd39f52 WIP trying to code up the public query function for scope paths
problem is how to get an iterator compatible with ScopeQuery...
2010-10-16 02:21:17 +02:00
73a2aea50c draft a low-level adapter to get all keys/vals of a stl::map
intention is just to use a thin wrapper, without
abstracting the implementation type (as IterSource does)
2010-06-03 04:37:19 +02:00
b7987cf3ce define iteration on ScopePath as reverse iteration on the contained Scopes 2009-11-21 04:48:29 +01:00
981ea94708 finished the PlacementIndex API. 2009-11-13 04:52:48 +01:00
8c7727704c Finish ContentQuery definition; relying on PlacementIndex 2009-11-02 07:37:15 +01:00
1c72cbb599 Iterator tools: (1) a filtering iterator 2009-11-02 06:06:43 +01:00
2620c38ed9 documentation, close some tickets... 2009-11-01 02:02:21 +01:00
3145064a21 change IterAdapter iteration control API to use free functions 2009-10-29 04:31:16 +01:00
5d9671cb2c WIP place a ref-count into the result iterator 2009-10-25 16:18:53 +01:00
2e62a3b01b WIP continue design how to discover session contents 2009-10-17 21:31:03 +02:00
b03577ea3f document the stipulations lib::IterAdapter puts on his parameter types 2009-10-17 15:40:37 +02:00
3f8d82a13f Victory! bashed the iter-adapters and the ScopedPtrVect into submission, finally. 2009-07-17 20:22:48 +02:00
165cfc7fcd WIP allow some conversions, attempt to define the const_iterator properly 2009-07-17 04:13:14 +02:00
a0187847da reworked IterAdapter, added RangeIter for STL ranges. Should do for now 2009-07-15 07:26:49 +02:00
b2f72ef0fc IterAdapter now passes test, but is still rather uggly... 2009-07-14 06:29:04 +02:00
e2cd4aba8a fix name, add test for postfix increment 2009-07-13 01:25:24 +02:00
Renamed from src/lib/iter-adaptor.hpp (Browse further)