The issue is with "dllexport": previously, dllexport was present on
exposed templates tool (= visibility(default) for gcc/clang). This
ensured MacOS compatibility since then the typeinfo is corretly
shared and dynamic_cast/typeid works.
For Windows, the "dllexport" equivalent requires the template
instantiations to be declared "external" which is a coding nightmare.
The solution is to provide separate macros for real (non-specialized,
not explicitly instantiated) templates (.._PUBLIC_TEMPLATE) which
is defined as empty for Windows and "visiblity(default)" for gcc/clang.
1.) Startup issue:
This is solved by making sure templates with virtual functions
are made visible in the DSO. This way, dynamic_cast is possible
across DSO's.
Scary: clang/MacOS wants the forward declarations be declared visible as well.
2.) Menu issue:
The best solution is to have only one QMenuBar. The navigator
now gets a synthetic menu bar composed of QToolButtons.
The LLVM STL implementation does not recognize "typedef void iterator_traits"
as dummy declaration. It will fall back to an empty traits struct.
Using the default "forward_iterator_tag" for the iterator_traits solves
this compile issue.
This commit adds "permissive" mode to OASIS writer to allow
odd-width paths (which are rounded).
This commit contains in addition:
* The check for odd-width paths is done post-scaling, so
reducing the DBU is a workaround
* Unit tests for the RBA binding of SaveLayoutOptions
* Documentation updates on some SaveLayoutOptions attributes
* Using Ruby predicate notation for cif_blank_separator?
(note question mark) for consistency. The old notation is
still there but deprecated
* --permissive option on buddies command lines where applicable
Reason: PCellDeclaration::parameter_declaration is volatile when
the PCell does not want parameter declaration caching. In this
case, begin .. end iterators must not be taken from different
calls to parameter_declaration for example.
* Moved tlSystemPaths into lay namespace where it belongs
* Doc updates
* New command line switch -y and -yd for unattended installation
* Download URL's can be relative to salt.mine URL
* KLAYOUT_HOME environment variable to make ~/.klayout configurable
* Better error messages on XML parser on file/stream read errors
(specifically from http/https)
This is how to reproduce the bug: have a layout with two
layers. Select two shapes of different layers and delete them.
One layer is not updated and only after zooming/panning the
shape will disappear on this layer.
* Modification of the mapping is possible now
(#map used to ignore mappings if there was one
already)
* Added DropCell mapping (also for RBA)
* Added unit tests for cell mapping, layer mapping
db::merge_layouts, db::copy_shapes and db::move_shapes
* ut framework now has a text file compare
* Added tests for strm2txt, strmclip and strmcmp
* Fixed the output of the PrintingDiffReceiver in some cases
* Cell renaming does not give a difference in smart cell mapping mode
The goal of the refactoring is to support unit tests
for the db library.
For this, a distributed unit test concept has been
introduced (later to be extended to other libs).
Unit tests are shared objects called ".ut" and are
automatically loaded by the ut runner. The bd library
now has two folders - one for sources and one for the
unit tests. The sources are separated into lib and apps.
First unit tests for the writer options have been
provided.