LINUX.ORG.RU

Можешь создать структуру.

CYB3R ★★★★★ ()

Можно часть кода, отвечающую за сложные вычисления, сделать на C.

backbone ★★★★★ ()
Ответ на: комментарий от backbone

это понятно. просто не хотелось бы следить чтобы в интерфейсах не всплывал Лонг дабл.

cvv ★★★★★ ()
Ответ на: комментарий от cvv

А может разработчиков Vala спросить? Вдруг добавят...

backbone ★★★★★ ()
Ответ на: комментарий от CYB3R

Можешь создать структуру

+1.
Сейчас под рукой нет компа проверить, сам с такой задачей не сталкивался, но я так понимаю будут работать мат. операторы со структурой, занаследованной от basic type (скажем, от double), в простом вапи же пропишешь транслировать в float128, см:
https://wiki.gnome.org/Projects/Vala/LegacyBindings#Simple_Types

Tayler ★★ ()
Ответ на: комментарий от backbone

Не добавят. Ибо ненужно. Но спросить в мэйлинг-листе, как грамотно реализовать такую штуку не вредно.

CYB3R ★★★★★ ()
Ответ на: комментарий от Tayler

Супер! Решение работает!

// test128float.vala
void main () {
	stdout.printf ("%lu\n", sizeof(MyDouble128));

	MyDouble128 d1 = 16.0;
	stdout.printf ("%f", d1 * d1);

}
public struct MyDouble128 : double {
}

// float128type.h
typedef long double double128;
$ valac --pkg=float128type --vapidir=. -C test128float.vala && cc -I. `pkg-config --cflags glib-2.0` test128float.c `pkg-config --libs glib-2.0` && ./a.out
16
256.000000
backbone ★★★★★ ()
Последнее исправление: backbone (всего исправлений: 1)
Ответ на: комментарий от backbone

fix:

// float128type.vapi
[CCode (cname = "double128", has_type_id = false, cheader_filename = "float128type.h")]
public struct MyDouble128 : double {
}

backbone ★★★★★ ()
Ответ на: комментарий от backbone

А вот скажи - обязательно компилить через С или можно както напрямую? Я попробовал напрямую:

valac --pkg=float128type --vapidir=. --includedir=. -v test128float.vala

Но у меня valac не предает каталог "." gcc с последующими проблемами поиска заголовка.

cvv ★★★★★ ()
Ответ на: комментарий от cvv

Скинь все свои файлы, команды которые ты запускаешь и их вывод.

CYB3R ★★★★★ ()
Ответ на: комментарий от cvv

Уже подсказали про опции valac, но вообще CMake удобен, чтобы с инсталяторами, тестами и прочим.

backbone ★★★★★ ()
Ответ на: комментарий от Tayler

Помогло. Но почему не сработал --includedir=. ???

cvv ★★★★★ ()
Ответ на: комментарий от CYB3R

Спросил. Сказали что нету потому что их нету в GLib в GType. Могут рассмотреть реализацию отдельным пакетом. Также посоветовали постучать в gtk-list.

cvv ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.