13
0
Commit Graph

41 Commits

Author SHA1 Message Date
0ff233d234 Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format 2016-08-30 07:15:00 +01:00
c64b8662a6 fix copy/paste typo in 1d7c14496 2016-08-27 15:53:38 +02:00
a4da0747e1 allow to access data-members in weak/shared ptr classes 2016-08-26 19:01:09 +02:00
1d7c144967 add "sameinstance()" lua binding for all shared/weak ptrs 2016-08-26 18:25:15 +02:00
c9f0657c86 tweak lua GC (once again)
fixes OOM with extreme automation in HP/LP.
2016-08-26 01:18:48 +02:00
bc0bb6cae9 extend lua-doc to show properties 2016-08-16 00:25:59 +02:00
3b7dbdfeb8 Re-enable luabridge addProperty()
In preparation to expose ARDOUR::SessionConfiguration.
Also change the return-type to bool to match Ardour's set/get API
2016-08-15 22:25:56 +02:00
520dcf8cdf rework lua-bridge C++ variable references
Since lua functions are closures, C++ methods that pass arguments by
reference cannot be used directly. The previous approach (boost::ref)
failed with clang. Assume the following:

  void foo (float&) { }
  static inline float& bar () {
    boost::reference_wrapper<float> r (42);
    return r.get ();
  }

  foo ( bar () );

With gcc, "r" goes out of scope after foo's arguments are processed
and all is well.
But with clang,  "r" already leave scope when *inlined* bar() returns.

Solution: allocate some user-data on the lua-stack to hold the reference.
There is no reference to this user-data so lua will eventually
garbage collect it.

(theoretically, creating the table which holds the return-values
could trigger an emergency garbage collection when memory is low and
free the reference just while they're being pushed to the table, then
gain FuncArgs<Params> already dereferenced them all as variable on the
C stack -- probably again compiler specific)
2016-07-18 23:52:40 +02:00
855618eb5f amend previous commit (forgotten checkin) 2016-07-18 13:11:18 +02:00
c5fb7e1d83 update to lua-5.3.3 2016-07-18 12:28:36 +02:00
44a3f042a7 prepare sharing C++ class instances across lua-interpreters
in particular: lua-lifefime (!) C++ instances.
This allows for dynamic allocation of custom user-data, bound to
the lifetime of the allocating lua-context.
2016-07-07 15:37:11 +02:00
a2f249d1d7 tweak lua gc
lua C++ bindings require ~400KB worth of tables now; so bump memory
available to rt-safe scripts (full interpreter) to 2MB.

Also switch to incremental GC.
2016-07-06 03:32:08 +02:00
Sam Thursfield
e37b250d4d Use correct type of std::map::count
Compiling Ardour commit ec8a4de015 with GCC
6.1.1 (on Fedora 24) gave this build failure:

    In file included from /home/sam/ardour/libs/lua/LuaBridge/LuaBridge.h:154:0,
                     from ../tools/luadevel/devel.cc:16:
    /home/sam/ardour/libs/lua/LuaBridge/detail/Namespace.h: In instantiation of ‘luabridge::Namespace::Class<std::map<K, V> > luabridge::Namespace::beginStdMap(const char*) [with K = std::__cxx11::basic_string<char>; V = std::__cxx11::basic_string<char>]’:
    ../tools/luadevel/devel.cc:89:60:   required from here
    /home/sam/ardour/libs/lua/LuaBridge/detail/Namespace.h:1666:30: error: no matches converting function ‘count’ to type ‘void (class std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >::*)()’
           .addFunction ("count", (void (LT::*)())&LT::count)
                                  ^~~~~~~~~~~~~~~~~~~
    In file included from /usr/include/c++/6.1.1/map:61:0,
                     from /home/sam/ardour/libs/lua/LuaBridge/LuaBridge.h:45,
                     from ../tools/luadevel/devel.cc:16:
    /usr/include/c++/6.1.1/bits/stl_map.h:1131:2: note: candidates are: template<class _Kt> decltype (((const std::map<_Key, _Tp, _Compare, _Alloc>*)this)->std::map<_Key, _Tp, _Compare, _Alloc>::_M_t._M_count_tr(__x)) std::map<_Key, _Tp, _Compare, _Alloc>::count(const _Kt&) const [with _Kt = _Kt; _Key = std::__cxx11::basic_string<char>; _Tp = std::__cxx11::basic_string<char>; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >]
      count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
      ^~~~~
    /usr/include/c++/6.1.1/bits/stl_map.h:1125:7: note:                 std::map<_Key, _Tp, _Compare, _Alloc>::size_type std::map<_Key, _Tp, _Compare, _Alloc>::count(const key_type&) const [with _Key = std::__cxx11::basic_string<char>; _Tp = std::__cxx11::basic_string<char>; _Compare = std::less<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >; std::map<_Key, _Tp, _Compare, _Alloc>::size_type = long unsigned int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::__cxx11::basic_string<char>]
           count(const key_type& __x) const
           ^~~~~

Casting std::map::count to the correct type instead of a fake void()
type fixes the compile failure.
2016-06-26 16:18:34 +02:00
67083d65e4 add lua/C++ dynamic_cast<> 2016-06-01 13:59:31 +02:00
f87cd4435d allow lua binding functions with up to 9 parameters
e.g new_midi_track()
2016-05-31 23:51:22 +02:00
50d6f146f4 allow lua to access array at an offset 2016-05-21 15:55:14 +02:00
204c8016c7 allow to compare C class instances from lua 2016-04-14 03:08:02 +02:00
6f7ac64d42 Modify 'getIdentityKey()' function to have LuaBridge_API linkage when building with MSVC (rather than simply 'extern') 2016-04-12 17:55:17 +01:00
e6dcc2d77d Change LuaBridge_API to be __declspec(dllexport) or __declspec(dllimport, as required 2016-04-12 17:55:16 +01:00
7292989a5a some more windows bandaids for optimized builds
really this is getting UGLY.
2016-04-12 02:18:20 +02:00
8002b2d26e special case luabridge for windows/MSVC
luabridge uses static fn addresses to identify classes.
Windows uses different addresses for *identical* static functions
in libardour.dll and ardour.exe

This solves the issue by moving the all functions from a
header-only implementation into libardour.
2016-04-11 22:19:25 +02:00
c6d4fafcd9 update lua related doc, add missing bindings 2016-04-10 23:01:44 +02:00
40aa4cfe06 Modify our MSVC projects to build liblua as a DLL rather than a static lib 2016-04-04 16:40:20 +01:00
10486fa2cc #define LUA_DEBUG when making a Debug build with MSVC 2016-04-04 16:40:18 +01:00
8d26a67ddd liblua visibility and compiler-flags 2016-04-04 13:42:50 +02:00
a2108090cf reduce header dependencies (part 1/2) 2016-03-28 19:13:10 +02:00
829da7eb33 refactor lua header includes 2016-03-23 17:00:10 +01:00
b6f0f30add Lua Array Documentation 2016-03-21 18:56:16 +01:00
481e5d1416 refine Lua Binding Documentation 2016-03-21 04:05:43 +01:00
6ecc8e9b3d fix JSON luadoc format 2016-03-20 20:58:52 +01:00
618ef9f923 Prepare Lua Binding Documentation (JSON) 2016-03-20 20:54:36 +01:00
2c71196a6c allow to bind functions with reference args in global lua namespace 2016-03-18 19:59:37 +01:00
990c365ebf ISO C++03 14.2/4 compatibility for clang.
http://stackoverflow.com/questions/3786360/confusing-template-error
(hopefully other compilers which didn't mind the missing "template"
are still fine with this)
2016-02-27 21:02:30 +01:00
269e88671e Accommodate newly introduced source(s) in our MSVC project (lua) 2016-02-27 16:29:54 +00:00
77ded21da9 Add a VC project for building the new lua branch with MSVC
(untested, new paths -- adopted from John Emmas project)
2016-02-22 22:06:47 +01:00
a8ae47ada2 LuaBridge: support argument references via table return 2016-02-22 22:06:47 +01:00
12a58015a3 customize LuaBridge
* introduce boost::shared_ptr support
* support enum & const
* allow to add non-class member functions
* STL iterators (vector, list, set, bitset & map)
* support reference arguments (framecnt_t&)
* add support for arrays of basic types (e.g. float*, int*)
* fix compiler warnings
2016-02-22 22:06:47 +01:00
5b40e073e9 add liblua wrapper and build-scripts 2016-02-22 22:06:47 +01:00
2b575e4746 NO-OP whitespace 2016-02-22 22:06:47 +01:00
e98f21dd29 add LuaBridge
https://github.com/vinniefalco/LuaBridge
2016-02-22 22:06:47 +01:00
c8973f67a6 add lua-5.3.2 2016-02-22 22:06:47 +01:00