[Moscow.pm] XS и Windows DWORD

Ruslan Zakirov ruz на bestpractical.com
Вт Дек 25 11:47:51 PST 2012


2012/12/25 Alex Varyanick <q на cono.org.ua>:
> 2012/12/25 Ruslan Zakirov <ruz на bestpractical.com>
>>
>> Есть вариант заменить DWORD на U32 в описании типов аргументов и
>> проверить, что потом оно совпадает с тем что либа использует на каждой
>> платформе.
>
>
> Там помимио DWORD куча замороченых типов :)

Типа? Правда. Какие такие типы там?

В typemap у вас будет что-то такое:
DWORD T_U_LONG

http://perldoc.perl.org/perlxstypemap.html#Full-Listing-of-Core-Typemaps

В любой момент взяли и отказались и перешли на вариант, который вам понравился.

>> Следующий вариант с TYPEMAP, ну не сотня же у вас типов. Саму карту
>> можно своровать из perl.
>
>
> Просто если новый тип добавится или ещё чего, это прийдётся ручками лезть
> помимо кода и в typemap :) Ну или написать парсер на изменения мажорных
> версий...
>
>> Или разбирать аргументы самому, но не обязательно как в Pipe.xs. Ведь
>> любой аргумент можно определить как указатель на SV, а далее макросом
>> или функцией сконвертить в нужный тип.
>>
>> bool do_something(priority)
>>    SV* spriority
>>    INIT:
>>        DWORD priority = SV_TO_DWORD(spriority)
>>    CODE:
>>        RETVAL = do_something(priority)
>>    OUTPUT: RETVAL
>>
>> Фактически ручная эмуляция typemap получается.
>>
>> Возможно еще есть 10ок вариантов, я мало знаю в этой области.
>
>
> Оооо!! Спасибо! это мне кажется то что надо :) Как-то я не подумал про
> такое!
>
> --
> Varyanick I. Alex
> skype: cono..
> q на cono.org.ua
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm