Commit graph

223 commits

Author SHA1 Message Date
5be35a407f toString(#985): new minimal string-conversion facility
now placed into the very basic header lib/meta/util.hpp
2016-01-05 23:55:18 +01:00
0c4495a451 reorganisation(#985): move basic typeString implementation into lib::meta
- simple function to pick up the mangled type
- pretty-printing is implemented in format-obj.cpp
- also move the demangleCxx()-Function to that location,
  it starts to be used for real, outside the test framework
2016-01-05 23:34:53 +01:00
f077c14d47 compiler evolution: get rid of a gcc-4.7 workaround
our minimal compiler requirement is gcc-4.9 since the
transition to Debian/Jessie as reference system.

gcc-4.9 is known to treat SFINAE on private fields properly
2016-01-05 23:16:18 +01:00
c104e28ebf inline(#985): provide our own minimal variant of enable_if
this is a stripped-down and very leightweight variant
of the well-known enable_if metaprogramming trick.

Providing this standard variant in a header with minimal
dependencies will allow us to phase out boost inclusions
from many further headers. As a plus, our own variant
is written such as to be more conciese in usage
(no "typename" and no acces of an embedded "::type" menber)
2016-01-05 22:00:53 +01:00
ff7ac5523f clean-up(#985): tighten basic header lib/meta/util.hpp
This header shall provide only very fundamental
metaprogramming helpers, since it is included pervasively
2016-01-05 22:00:53 +01:00
b96fd1299d preparation(#985): purge any remaining direct uses of boost::format
now we use boost::format through our own front-end util::_Fmt
solely, which both helps to reduce compilation time and code size,
and gives us a direct string conversion, which automatically
uses any custom operator string() available on arguments.

While desirable as such, I did this conversion now, since
it allows us to get rid of boost::str, which in turn helps
to drill down any remaning uses of our own util::str
2016-01-04 01:38:04 +01:00
6a0b9980e3 After a looong break.... start reading code
wtf was I doing before that damn release and packaing business
2015-11-21 03:39:07 +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
794e70a64b augment function type rebinding helper
allow to pick the bare function signature from any "function like" entity

Note: we're still unsing our own Typelist construct to represent
the function argument types. Since we're now using C++11, this
could be replaced by varargs, and we could get rid of those
various overloads for different numbers of arguments.
Unfortunately this transition is linked to the usage of
argument tuples in our command framework (which could then be
replaced by std::tuple), and this is still a bit of rather
technical work, which I do not want to spend much time on
right now
2015-09-04 17:14:11 +02:00
de3726c856 integrate the new construction just to replace the existing visitor 2015-08-29 18:34:34 +02:00
bb92b49340 GenNode diagnostics -- debugging 2015-08-28 23:09:10 +02:00
24d7f55935 Merge Platform upgrade and Diff-Framework development 2015-08-16 01:42:26 +02:00
40decd68d4 partial revert of preceding: rejected by GCC
this was an half hearted attempt to satisfy CLang,
but GCC as keen as a razor insists on these inherited
functions not being accessible --

seems like the time is over, when GCC used to be forgiving
and CLang briliantly precise...

So the conclusion of this "round trip" is: whenever GCC
also starts whining about shadowed overloaded virtual functions,
we'll just switch to "-Wno-overloaded-virtual" and be done with
that pointless discussion.

Since C++11, we have the Java style override specifier,
which does a way better job at spotting signature mismatches
2015-08-16 01:37:04 +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
03e87d4d33 fix several warnings spotted by GCC-4.9.2
as usual, the compiler was right in most cases
Several typedefs are really just leftovers from copy-n-paste
2015-08-16 01:18:58 +02:00
6de24bc7f0 Ticket #956: decide layout and handling of GenNode elements
to carry out that rather obvious step, I was bound to consider
all the implications of choosing a given layout and handling pattern
for our external structure representation.

Finally, I settled upon the following decisions
- the value space represented within the DataCap is flat, not further structured
- the distinction between "attribute" and "nested object" is merely conceptual
  and will be enforced solely by the diff detection / representation protocol
- basically, a nested subtree may appear as an attribute; the difference
  between attributes and children lies solely in the way of access and referral:
  by-name vs. positional
- it is pointless to save space for the representation of the discriminator ID
- but we can omit any further explicit type tag, because
- we do *not* support programming by switch-on-type, and thus
- we do *not* support full introspection, only a passive type-safety check
- this is *not* a limitation, since we acknowledge that GenNode is a *Monad*
- and the partial function needed within any flatMap implementation
  maps naturally onto our Variant-Visitor; thus
- the DataCap can basically just *be* a Variant
- and GenNode has just to supply the neccessary shaffolding
  to turn that into a full fledged Monad implementation, including
  direct construction by wrapping a value and flatMap with tree walk
2015-05-02 01:11:39 +02:00
de50bf7c91 virtual copy support documented and covered with unit test 2015-04-20 03:41:28 +02:00
67b5df0d1d WIP: start factoring out the virtual copy support 2015-04-20 00:49:49 +02:00
8794aec35a fix a warning after C++11 transition (#898)
it is still questionable why GCC emits the warning
"enumeral and non enumeral constant in comparison"
since both arguments of the comparison are enum constants.


I've asked that question on stackoverflow....
http://stackoverflow.com/questions/29685367/reasoning-behind-enumeral-and-non-enumeral-type-in-conditional-expression
2015-04-17 03:12:08 +02:00
a205653cad C++ uses a more precise meaning of 'convertiblity' now
Conversion means automatic conversion. In our case,
what we need ist the ability to *construct* a bool from
our (function) object -- while functors aren't automatically
convertible to bool. Thus we use one of the new predicates
from <type_traits>
2014-05-09 00:56:31 +02:00
7be1b7d35d Switch from TR1 preveiw to the new standard headers
- functional
- memory
- unordered collections
2014-04-03 22:42:48 +02:00
974c670d41 fix **** in doxygen comments
to make them stand out more prominently, some entity comments
where started with a line of starts. Unfortunately, doxygen
(and javadoc) only recogise comments which are started exactly
with /**

This caused quite some comments to be ignored by doxygen.
Credits to Hendrik Boom for spotting this problem!

A workaround is to end the line of stars with *//**
2013-10-24 23:06:36 +02:00
4ea20f0e74 Clang(#928): fix inconsistencies and compilation problems
Compilation with Clang 3.0 (which is available in Debian/stable) fails,
mostly due to some scoping and naming inconsistencies which weren't detected
by GCC. At some instances, Clang seems to have problems to figure out a
perfectly valid type definition; these can be resolved by more explicit
typing (which is preferrable anyway)
2013-09-27 23:23:13 +02:00
bcbd05d7eb reorganise some boost::format usage
using our util::_Fmt front-end helps to reduce the code size,
since all usages rely on a single inclusion of boost::format

including boost::format via header can cause quite some code bloat


NOTE: partial solution, still some further includes to reorganise
2013-09-01 17:36:05 +02:00
740f3d0211 add detection for STL-like back iteration 2013-01-13 16:39:43 +01:00
062e1bbdc1 explicate the JobPlanningSequence definition
..causing the compiler to instantiate the
involved templates, i.e. get the complete
pipeline definition through the compiler
2012-10-10 05:20:22 +02:00
0e3821abeb refatcor function meta programming headers
the template _Fun started as an internal helper
for function-closure, but seems to be of
general use. Thus move it into meta/function.hpp
(function-closure.hpp is heavyweight)
2012-10-10 05:20:19 +02:00
697924925c pragmatic fix for the long-standing problem of detecting increment operator
our duck-detector had a shortcoming here and failed
to detect iterators, in case the increment operator
was inherited from a mix-in
2012-10-10 05:20:17 +02:00
9bba366763 investigate partial application of member functions 2012-01-07 03:28:12 +01:00
90e6dae2d5 add includes missing in some metaprogramming headers
types uint and string
2012-01-07 03:11:51 +01:00
00c08bd27b fix helper functions not declared as inline 2012-01-07 03:11:02 +01:00
b64dff1ad8 spelling and comments 2012-01-07 00:02:03 +01:00
c8f46f47c9 handling of ptrs, first attempt 2011-12-31 06:47:58 +01:00
0d136e2703 define explicit specialisations for primitive types 2011-12-31 06:47:03 +01:00
e054c272b6 research: detecting the possibility of a string conversion
find out about the corner cases of this
simplistic implementation
2011-12-31 06:46:50 +01:00
cd3c633fc0 STATIC_ASSERT to verify guessed size
... and we indeed had an error: vector<bool>
is way larger than normal vectors!
2011-12-28 06:41:47 +01:00
962c789a05 a horrible hack to guess the size of boost::format
...without actually including the boost/format.hpp
This saves us a lot of compilation time and debug code size
2011-12-28 06:41:37 +01:00
89928bc447 refactor format-util: simplify picking the right specialisation 2011-12-27 07:44:59 +01:00
50885a065b move asside lib/format.hpp
...to make room for a new more specialised header
2011-12-27 07:44:49 +01:00
451b0abec5 spelling and typos 2011-12-24 05:48:31 +01:00
7fd28e23eb cleanup configflags to use uint instead of char
using char for those flag template parameters
was never a good idea. It won't save us any space
and makes debugging harder
2011-12-03 03:16:08 +01:00
d9f84a9bfd clean up lib/meta namespaces 2011-12-03 03:15:59 +01:00
eb79a00cf4 cleanup: rectify Proc-Layer namespaces (I) 2011-12-02 16:10:03 +01:00
5350ef6dbe split off and test-cover simple typelist utils
these simple utils (length of typelist, maximum size
containment test) are mostly not used in conjunction
with the more elaborate typelist manipulatino utils.
Moreover, we lacked a dedicated unit test
2011-09-25 19:26:11 +02:00
057f32e15b rename the typelist-manipulation header 2011-09-25 19:26:09 +02:00
c96cd66688 draft implementation for time change and propagation 2011-09-25 19:25:52 +02:00
ae36b2d941 stubs and adjustments to get it through the compiler 2011-09-25 19:25:52 +02:00
786ecbe829 WIP draft test helper for generating test cases (Cartesian product) 2011-09-25 19:25:51 +02:00
eb5e0ab9ff WIP: start building a Test for time::Control. Need Cartesian product of cases... 2011-09-25 19:25:51 +02:00
6fa11ffcf6 special case: support cloning, but not copy
needed to add yet another policy template,
so PolymorphicValue doesn't invoke the
assignment operator in such cases
2011-05-15 04:19:25 +02:00
5418902442 remove superfluous default parameters from Tuple constructor function 2011-01-19 11:32:27 +01:00
2c90335b1d WIP idea how to represent support for some timecode formats
concrete quantiser instances need a way to state
support for just some timecode formats -- yet I dont
want to push vectors aroud all over the place
2011-01-16 15:41:34 +01:00
62f9e84f2d reduce the prerequisites of trait.hpp
the AssignableRefWrapper is not in use anymore...
by not pulling in wrapper.hpp, we avoid <functional>
2011-01-13 03:36:09 +01:00
3f1b7651e9 GPL header whitespace 2010-12-17 23:28:49 +01:00
645ddd284c WIP Solution draft for defining an output mapping type 2010-11-25 04:52:49 +01:00
9473fd3d67 OutputDesignation implementation draft 2010-11-19 05:01:43 +01:00
c9bf26d8c4 EntryID finished and passes unit test 2010-06-03 04:37:19 +02:00
5cc3af3009 document the changed/new behaviour by unit test 2010-01-07 04:40:10 +01:00
3525b77126 somewhat tricky modification of for-each, allowing inline calls 2010-01-07 03:10:02 +01:00
cd3a77649e use the (new) iterable classification to mask for_each overloads 2010-01-04 11:19:01 +01:00
7d913dc558 start moving some metaprogramming helpers to lib::meta 2010-01-04 10:08:14 +01:00
64cedb6345 implemented compile-time detection of STL or Lumiera iterator
closes #482
2010-01-03 05:43:33 +01:00
e27d03c501 simple duck detecor components pass unit test 2010-01-02 09:07:10 +01:00
8777aa585a duck detector (lib helpers): initial implementation draft 2010-01-02 08:09:40 +01:00
3db676fa32 base implementation fo the ItemWrapper 2009-12-21 05:44:29 +01:00
83eb6976cd draft an universal val/ref wrapper, needed by TransformIter.
Seemingly I've hit a nasty problem here, because PlacementIndex
should return an Placement&, but this is being fetched
after-the fact from within the iterator.
2009-12-20 04:33:24 +01:00
4773305853 Fix itertools: allow TransformIter to return an reference 2009-12-19 03:55:02 +01:00
043d4f42fa working example implementation of the access mechanism to session internal APIs 2009-11-09 02:08:37 +01:00
07de2a767b implement equality comparison on CommandImpl level 2009-10-11 05:57:44 +02:00
fea85acd0e equality comparisons on function erasure objects covered
...well, as good as possible, as boost refuses to implement this feature
2009-10-11 05:57:43 +02:00
231278bafe implemented comparison on function erasure, pending test 2009-10-11 05:57:43 +02:00
5068016805 WIP draft how the equality comparison on a function erasure could work 2009-10-11 05:57:43 +02:00
209765def5 WIP: correct indentation, add some comments... 2009-08-30 14:11:14 +02:00
1533e5bd0d fix a problem with formatting arbitrary types; reneable the broken tests 2009-08-28 20:33:20 +02:00
1db718c2b3 WIP more stubbing... 2009-07-25 19:21:50 +02:00
76b6f5d374 ooops, forgot some copy-n-pastes 2009-07-25 17:51:59 +02:00
c85d1d3cd8 ArgumentHolder finished, low-level integration test pass 2009-07-20 07:03:18 +02:00
f73c938850 ArgumentHolder reworked to use InPlaceBuffer; now passes basic tests 2009-07-19 08:32:49 +02:00
7f44de24d7 collecting some formatting & diagnostics utils here... 2009-07-19 08:03:54 +02:00
2eb8b763d6 got the helper working (prepending a binder to an argument position) 2009-07-09 04:41:44 +02:00
c7b6165c6c WIP resolved the simple mismatches, but still... 2009-07-08 05:36:02 +02:00
c8c577c4cc WIP factored out another helper, not yet tested... 2009-07-06 05:25:33 +02:00
2462dee5ca issue resolved, tests pass, finally (whew) 2009-07-06 02:25:19 +02:00
c3b8d39507 refactoring into two distinct concepts. maybe solution? 2009-07-05 22:05:11 +02:00
e2bb2c440c use OpaqueHolder to solve the problem with the function type erasure...
...tried to use 2 policies, but doesn't work correct (and is uggly)
2009-07-05 03:38:33 +02:00
b65658c10d try to fix a failing test (not really fixed yet) 2009-07-04 00:22:16 +02:00
d13d461a9c revamp namespace func. Finish excursion on function handling 2009-07-03 14:31:52 +02:00
b7be61c4e6 composition now working 2009-07-03 13:49:12 +02:00
31e9d59d80 WIP draft solution for next task 2009-07-01 04:47:52 +02:00
8d8f184ede check more cases, incl. function pointers 2009-07-01 03:23:26 +02:00
67e5779d24 now also able to close the last function argument 2009-07-01 02:29:11 +02:00
81d0e133c8 new additions in this area now reasonable covered (closes #142) 2009-07-01 00:43:19 +02:00
ca807205f9 cleanup/refactor simple type seq handling, fix broken Split template 2009-06-30 04:54:50 +02:00
320f984270 got partial application working, at least in the "front" case 2009-06-29 06:34:20 +02:00
6029c2c4e2 better name it Splice, and extend the capabilities a bit 2009-06-29 03:05:50 +02:00
03c9edce49 factored out yet another little helper, incl unit test 2009-06-29 02:03:30 +02:00
14f3641f9b helper: initialise a tuple from an existing sub-tuple 2009-06-28 20:41:33 +02:00
8ea07bda7a use the new bool conversion mixin to implement check for valid functor 2009-06-26 19:04:22 +02:00
5291f6e41a move the member pointer to the current stack frame...
hopefully the optimiser will remove it completely ;-)
2009-06-26 17:13:36 +02:00
a30461780b this way it works, but would cost additional storage.... 2009-06-26 16:38:37 +02:00
daeff6f5fd WIP: how to define the bool conversion / validity check for the function holders? 2009-06-26 05:27:54 +02:00
61f8c1814d tuple test pass 2009-06-22 06:05:32 +02:00
db9ef808a5 refactoring to solve consistency problems uncovered by the tests 2009-06-21 19:52:33 +02:00
c3768b93a1 function closure utils finished and pass test 2009-06-21 08:38:24 +02:00
231834d2e9 basic tuple creation and outline of the remainder of the test 2009-06-21 02:03:22 +02:00
ad7c326c9c got basic diagnostics for type tuples working 2009-06-20 23:18:02 +02:00
294c254f29 Fix instantiation of Tuple datastructs 2009-06-20 23:17:22 +02:00
95f0b26e38 start a type tuple unit test... 2009-06-20 18:06:07 +02:00
1620b8dcef WIP fixes to Apply<N>, but yet doesn't work... 2009-06-20 09:32:22 +02:00
a28c05877f test pass (resolves Ticket #174) 2009-06-20 06:11:09 +02:00
079030818d draft a test to sharpen the idea of the function holder (erasure) 2009-06-20 04:43:52 +02:00
a565bfef73 some header-renaming 2009-06-20 01:28:47 +02:00
006c29c625 Idea how to store an unspecified functor to be used later as Command implementation 2009-06-20 00:00:29 +02:00
f358f548d1 draft version of CmdClosure and Mutation interface now passing compiler 2009-06-19 19:11:33 +02:00
d1b425aba9 finish and tidy the extracted headers 2009-06-17 06:55:18 +02:00
9d04f48c51 WIP: further split the headers 2009-06-16 12:07:49 +02:00
ab4b4c71e6 WIP: start extacting new headers 2009-06-16 11:39:36 +02:00
441cb6b9e2 WIP try to solve the problem of closing a function with arbitrary args 2009-06-15 03:47:05 +02:00
7741b50b91 WIP rewrote the Sub-Tuple extractor into a simplistic Tuple type 2009-06-14 19:40:35 +02:00
b937bd08ae WIP: parameter closure brainstorming 2009-06-14 05:38:35 +02:00
246529bae9 concpet draft of parameter type extraction and checking works (i.e. compiles) 2009-06-10 05:00:01 +02:00
075b3c8d6a fix some warnings... 2008-12-30 07:28:34 +01:00
Christian Thaeter
3654473b75 WIP: Merge common into lib
* breaks lumigui linking
 * test non functional yet
 * tools cant not be linked because of cross dependency problems
2008-12-17 17:53:32 +01:00