13
0
Commit Graph

48 Commits

Author SHA1 Message Date
f2c5f9da25
Lua: allow to reserve STL vector size 2023-07-12 18:23:51 +02:00
5bbd248384
Add Lua bindings for std::list/vector clear 2023-05-13 17:38:41 +02:00
7094c82e75
Add Lua bindings to std::shared_ptr<T const>
This is required after the recent RCU change to return
const shared pointers for read (295dbd8e1).
2023-04-19 01:46:58 +02:00
dbc3008163
Add Lua Bindings for const shared_ptr lists (295dbd8e1e) 2023-04-12 20:47:35 +02:00
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
9914732004
Potential fix for C++20 std::set::* ambiguity
(until C++20) bool empty() const noexcept;
(since C++20) [[nodiscard]] bool empty() const noexcept;
2022-10-19 16:06:47 +02:00
46b14498f8
Prepare Lua bindings for std::set::insert 2022-10-17 23:09:04 +02:00
Raphael Isemann
3dfcbf17b2
Fix memory leak in ctorNilPtrPlacementProxy 2022-04-08 18:21:55 +02:00
d51a1ccd99
Add API to modify Lua Metatable and set Metamethods
This allows to map C++ operators to be used as Lua
arithmetic and relational operations.
2022-01-24 06:23:16 +01:00
115c79874a
Fix Lua bindings for C++17/C++20 -- #8683
std::list/vector/map declarations change, requiring
explicit cast to avoid FuncTraits ambiguities.
2021-05-02 16:36:30 +02:00
John Emmas
b625461132 Guard some code which isn't currently buildable with VS2019
For some unknown reason, VC++2019 won't let us take the address of std::list::unique() - although other std::list members seem okay. I've spent weeks tracking this down but there's no fix available AFAICT.

I've flagged it up to the MSVC development team - just don't hold your breath !!
2021-03-06 11:12:02 +00:00
fbacb13d2d
Extend Lua binding for static methods
This add support for Lua bindings for static member
functions in weak/share ptr class bindings.
2020-02-06 17:30:21 +01:00
5e1a73a28c
Add Lua typecast from C++ vector to C-Array
This is useful for MIDI bytes amongst other things
2019-12-01 21:32:10 +01:00
bed2eb2e33
Fix std::list<hared_ptr<>> front/back methods
Shared pointer reference accessors can't be const
2019-05-17 12:09:07 +02:00
3da07e6736
Special case Lua copy-construction of trackable instances
This fixes an crashing issue with ArdourUI.SelectionList a bug
introduced in 6dc3bdf252 and 35dcd46d7d.

Since removal of the special cases in 35dcd46d7d, when using
a C-pointer in a std::list<>,
  std::list<class*>::push_back(TypeListValue)
TypeListValues<>'s Head was expanded to  "class*& const"
implied by void ::push_back(const T& value);

This resulted in lifetime issues with a classes that derive
from sigc::trackable (e.g. Ardour's Selection).
The reference leaves scope and isn't duplicated when it is pushed back
to the std::list<>.

The script scripts/select_every_2nd_region.lua crashed because entries
in the SelectionList were no longer valid.

Previously (before 6dc3bdf252) TypeListValues explicitly
copy-constructed the value to work around the lifetime issue.
This new solution bypasses the issue by directly using the c-pointer
without dereferencing it.
2019-04-12 05:45:27 +02:00
ea8c6e9fc8 Fix hiding Lua __metatable -- prevent setmetatable() override 2017-03-30 05:06:34 +02:00
412b6a4cb9 Lua: make external (static) functions available for const objects.
This fixes iterators on const std::lists<>& and const std::map<>&
2017-03-30 04:15:28 +02:00
bc300ddab7 Make Lua std::set bindings more generic, (prepare for multiset etc) 2017-03-18 14:35:29 +01:00
51d43c6e14 drop lua documentation for deprecated "sameinstance()" 2017-03-16 20:56:32 +01:00
a2094b6831 Lua: provide instance-equal check as '==' comparator.
This deprecated explicit the "sameinstance()" method
2017-03-16 20:08:17 +01:00
71fd94b422 LuaBridge: Dedicated type for pointer-lists and const version
"class C*" cannot be defined nor resolved, so STL containers
to class instance pointers need to be special-cased.
2017-02-23 22:32:32 +01:00
226b2a526e Add Lua bindings for std::list ::front() and ::back() 2017-02-20 00:30:15 +01:00
659701c59b Fix lua-doc (Null pointer c'tor doc) 2017-02-14 14:44:22 +01:00
6f7f527e1d Lua add an Empty/Nil shared-pointer constructor 2017-01-21 20:18:27 +01:00
d0b42aee0e LuaBindings: prefer shared_ptr over weak_ptr 2017-01-21 20:18:27 +01:00
134b69f267 Fix shared-pointer list creation from Lua 2017-01-08 00:30:41 +01:00
86bfe4eff6 Lua binding for std::map<>::at() 2016-10-07 03:39:22 +02: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
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
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
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
c6d4fafcd9 update lua related doc, add missing bindings 2016-04-10 23:01:44 +02:00
a2108090cf reduce header dependencies (part 1/2) 2016-03-28 19:13:10 +02: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
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
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