Size: a a a

2019 September 02

I

Igor725 in pro.lua
Была идея сравнивать указатели на метатаблицы и выдавать typerror если что-то не так, но не придумал как это грамотно сделать
источник

SM

Super Man in pro.lua
привет ребята, у меня тут свежий вопросик по луа, кто шарит в луа stream module
источник

SM

Super Man in pro.lua
stream
{
 lua_shared_dict scache 5m;
источник

SM

Super Man in pro.lua
вот я сделал скажем луа шаред дикт в блоке стрим
источник

AM

Alexey Melnichuck in pro.lua
LightUseraData тип может иметь только одну метатаблицу.
Как,например строки или числа
источник

I

Igor725 in pro.lua
Это я знаю, у меня несколько метатаблиц и несколько юзердат, которые на разные структуры указывают
источник

I

Igor725 in pro.lua
мне нужно как-то реализовать проверку пришедшей юзердаты в функцию
источник

З

Зилер близко in pro.lua
KeraLua кто нибудь использовал? Контроль памяти удавалось реализовать?
источник

I

Igor725 in pro.lua
потому что сейчас этой проверки нет, у меня просто используется функция, которая пришедшую юзердату кастует в структуру, которая нужна вызванной функции
источник

I

Igor725 in pro.lua
и если это юзердата, но не того типа, что должен вызывать эту функцю - segfault
источник

I

Igor725 in pro.lua
Вот к примеру функция push, создаёт lightuserdata по поинтеру на структуру и присваивает метатаблицу
источник

I

Igor725 in pro.lua
есть функция toClient, которая преобразует пришедшую дату в поинтер на структуру но не проверяет, является ли она структурой CLIENT или это какая-то другая, нужна, скажем так, функция checkClient, которая тащит из стека юзердату и проверяет её на соответствие типу
источник

I

Igor725 in pro.lua
А вот как эту проверку на соответствие типу реализовать я что-то не могу придумать
источник

I

Igor725 in pro.lua
Как я уже писал выше, lua_checkudata которая принимает последним аргументом название, которое присваивается юзердате работает только с обычной юзердатой, не light
источник

I

Igor725 in pro.lua
точнее там присваивается не просто название ей, а название метатаблицы
источник

I

Igor725 in pro.lua
Вспомнил про существование rawequal и у меня получилось сравнить две метатаблицы у объекта и полученную по имени, вышло именно то, что мне нужно. Ну... на первый взгляд, дальше посмотрим
источник
2019 September 03

AM

Alexey Melnichuck in pro.lua
Можно хранить lightuserdata в отдельной таблице.
Но надо не забывать ее очищать
Или просто использовать full userdata с указателем в качестве значения
источник

I

Igor725 in pro.lua
В отдельной таблице слишком геморно, как раз из-за того что её чистить надо, а второй вариант поинтереснее, реализовал бы его, если бы сейчас всё не работало как надо, если будет не лень - переделаю. Спасибо за идею.
источник

S

Snusmumriken in pro.lua
У луасокета есть модуль auxillary, где есть функции работы с кастомными классами и проверки типов.
https://github.com/diegonehab/luasocket/blob/master/src/auxiliar.c
источник

I

Igor725 in pro.lua
Не додумался я что-то в луасокеты заглянуть, тем не менее, я уже сам к такому же решению пришёл, пусть и более короткому, нежели в luasocket, просто не хочется под это дело отдельный модуль писать.
источник