Commit Graph

26 Commits

Author SHA1 Message Date
Matthias Koefferlein 80226e8c1c Provide proper input for linker for rba/pya unit tests. 2017-09-03 18:44:22 +02:00
Matthias Koefferlein 196d3a60e7 Fixed the build with less dependencies. 2017-09-03 10:29:14 +02:00
Matthias Koefferlein cfe8375be0 Unit test refactoring
Move ut framework to tl, so there are less complex
dependencies.
2017-09-03 01:54:11 +02:00
Matthias Koefferlein c8f4272ebb Moved rba and pya unit tests to module. 2017-08-27 00:47:40 +02:00
Matthias Koefferlein 000917d2c9 Refactoring: moved unit tests to libraries for some libs (ut modularization) 2017-08-26 22:44:31 +02:00
Matthias Koefferlein 55e797ffaf Provide proper INSTALL targets for .pro files
Plus: reduce compiler warnings
2017-08-21 02:33:45 +02:00
klayoutmatthias f8b3c92191 Windows and Ruby/Python for deploymenu
This commit deals with the deployment issue on Windows
where there is no global Ruby/Python installation and
the installer needs to package all required files.

The solution is to read the Ruby/Python path from a
file that is evaluated upon startup. The installer will
install these files together with the executable for
Windows. This feature is only enabled on Windows.

A specific issue occured: since the location of the
file needs to be determined, the path of the executable
needs to be known. The Ruby initialization requires the
path to be set very early, before QCoreApplication is
instantiated. But Qt complains in QCoreApplication::applicationDirPath
so that this approach cannot be used for this purpose.
2017-08-06 18:18:34 +02:00
Matthias Koefferlein 4a43bc23e5 Bugfix: breakpoints were not effective sometimes
Reason: when a page was opened in the macro IDE,
the file to ID cache inside the Ruby interpreter
did not get updated. Hence there was no link
between breakpoint and page and the breakpoint
was ignored.
2017-07-29 11:38:46 +02:00
Matthias Koefferlein b13c2e69c3 Fixed a potential infinite recursion for Qt bindings
The problem is caused by an implementation detail:
To monitor the lifetime of Qt objects, a monitoring
object is attached to them. This used to happen through
child objects but attaching such issues QChildEvents
which - if routed over script objects - will itself
required objects to be attached a monitoring object.

The solution is to attach monitoring objects through
QObject dynamic properties.
2017-07-26 23:27:24 +02:00
Matthias Koefferlein 02819c5f1e Hash functions and fuzzy compare for RBA
RBA now provides a hash method for Box, Edge, EdgePair, Trans,
Polygon, SimplePolygon, CellInstArray, LayerInfo, Path, Text,
Point and Vector.

eql? is mapped to ==.

==, != and < act "fuzzy" for the double-typed variants.

Hence, these objects can be used as hash keys now.
2017-07-09 22:40:56 +02:00
Matthias Koefferlein 93713d19e1 Ruby integration and debugger enhancements
- Massive performance improvement with debugger - trace was
  eventually clearing the file to id map.
- UI updates on debugger did not happen because delayed
  execution of functions got disabled.
2017-06-21 01:37:07 +02:00
Matthias Koefferlein 7e6dfdf5b4 Another tiny performance enhancement. 2017-06-17 16:01:09 +02:00
Matthias Koefferlein 07b973a312 RBA performance
Some small performance improvement by avoiding calls to "initialize"
where not required.
2017-06-16 22:28:36 +02:00
Matthias Koefferlein afcacf5b1f WIP: brought down the time for call variant determination by caching. 2017-06-12 23:23:13 +02:00
Matthias Koefferlein c891d06ac3 Some performance enhancement (~30%) of RBA/PYA
This was achieved by separating the methods into
constructors and callbacks, hence there are less iterations
required when lookup up the latter.
2017-06-12 00:31:00 +02:00
Matthias Koefferlein a5d9bbb3d1 WIP: fast replacement for rb_gc_register_address/rb_gc_unregister_address. 2017-06-05 23:26:10 +02:00
Matthias Koefferlein edf7caa2fb Enhanced Salt package capabilities
* Salt packages can host native Ruby and Python
  libraries now. The "ruby_lib" and "python_lib"
  templates provide such native libraries.
  This way we can basically wrap every native
  extension in such a package.
* Ability to supply binary plugins through
  Salt packages as well.
2017-05-27 22:32:55 +02:00
Matthias Koefferlein 9b42049abe clang compatibility
Fixed some compile issues with clang and
some warnings.
2017-05-07 23:52:20 +02:00
Matthias Koefferlein 7a5e7e8187 Fixed #10. 2017-04-09 23:08:26 +02:00
Matthias Koefferlein 47aa38421a Unique library named to avoid name conflicts
The libraries generated are called libklayout_x now
(instead of libx). This avoid name conflicts with
"libdb.so" on some systems for example.
2017-03-31 00:23:12 +02:00
Matthias Koefferlein 8e22d7bba8 Bugfix: stop in debugger left it in unusable state
This happened if the script was stopped in the debugger.
Afterwards breakpoints were ignored.
2017-02-26 23:23:20 +01:00
Matthias Koefferlein 92fd33744d WIP: first solution for lost references issue
* The solution consists of attaching a bridge object
  to QObjects. If the host object is destroyed, the
  bridge object will notify the script client
* The bridge object attachment is optimized so it
  only happens if required (but still too often ...)
* The child object of QChildEvent gets a special
  handling since this object is almost dead in case
  of remove. This special handling consists of
  a special, stripped class which is used to
  only represent QObject in that particular case.
2017-02-21 23:47:48 +01:00
Matthias Koefferlein eea5da4ba6 Attempt to fix "GSI does not monitor lifetime of Qt objects" 2017-02-20 22:21:29 +01:00
Matthias Koefferlein 20f77d19d5 Enabled build on Ruby 2.2. 2017-02-17 22:32:43 +01:00
Matthias Koefferlein a1e8aaf6b8 Updated copyright note to 2017. 2017-02-12 15:28:14 +01:00
Matthias Koefferlein 1b98f9b0f9 Initialized repository with current sources. 2017-02-12 13:21:08 +01:00