переопределение операторов Вход,Копия,Выход для записей
Модератор: Модераторы
переопределение операторов Вход,Копия,Выход для записей
Добрый день всем
Можно ли на данный момент в fpc задать операторы выполняющиеся при
1. вход переменной в область видимости (н-р тип String при входе в процедуру инициируются nil)
2. создании копии, т.е. присвоения одной переменной другой
3. выходе переменной из области видимости
???
т.е. то, что сейчас делается автоматом для типа String, Variant, интерфейсов
PS: интересуют Record и Object декларации
Можно ли на данный момент в fpc задать операторы выполняющиеся при
1. вход переменной в область видимости (н-р тип String при входе в процедуру инициируются nil)
2. создании копии, т.е. присвоения одной переменной другой
3. выходе переменной из области видимости
???
т.е. то, что сейчас делается автоматом для типа String, Variant, интерфейсов
PS: интересуют Record и Object декларации
1. Нет
2. Нет (если речь про переменные одного типа)
3. Нет
2. Нет (если речь про переменные одного типа)
3. Нет
печально ...
интересно каким хаком variant сделали
интересно каким хаком variant сделали
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
sajtran, а никто не запрещает переопределить сами операторы. Да и тип Variant это объект, у которого есть своя область видимости.
sajtran писал(а):печально ...
интересно каким хаком variant сделали
Это называется Compiler Magic :)
Код: Выделить всё
{$MODE OBJFPC}
uses
variants;
var
A, B: Variant;
begin
A := ParamStr(1);
B := A;
Writeln(B);
end.
У меня подставляются SYSTEM_$$_assign$ANSISTRING$$VARIANT и fpc_variant_copy:
Код: Выделить всё
# [9] A := ParamStr(1);
leaq -136(%rbp),%rax
movl $1,%esi
movq %rax,%rdi
call OBJPAS_$$_PARAMSTR$LONGINT$$ANSISTRING
movq -136(%rbp),%rsi
leaq -128(%rbp),%rdi
call SYSTEM_$$_assign$ANSISTRING$$VARIANT
leaq -128(%rbp),%rsi
movq $U_$P$PROGRAM_$$_A,%rdi
call fpc_variant_copy
# [10] B := A;
movq $U_$P$PROGRAM_$$_A,%rsi
movq $U_$P$PROGRAM_$$_B,%rdi
call fpc_variant_copy
ещё более печально
очень трудно будет использовать свою вариантную запись
странно что такой возможности нет
очень трудно будет использовать свою вариантную запись
странно что такой возможности нет
sajtran писал(а):странно что такой возможности нет
Сходи к абракадабре и проголосуй (vote, не rate) за эти (1, 2, 3) фич-риквесты. Чем быстрее абракадабра их реализует (а разговоры о кастомных конструкторах и деструкторах для записей тянутся со времён Delphi 2009), тем быстрее они появятся в FPC, иначе не дождёшся.
kazalex писал(а):Сходи к абракадабре и проголосуй
Или сделай сам (С). Исходный код компилятора никто не скрывает.
SSerge писал(а):Или сделай сам (С)
А потом ещё докажи тиму, что твой патчик нужно принять.
kazalex писал(а):Сходи к абракадабре и проголосуй (vote, не rate) за эти (1, 2, 3) фич-риквесты. Чем быстрее абракадабра их реализует (а разговоры о кастомных конструкторах и деструкторах для записей тянутся со времён Delphi 2009), тем быстрее они появятся в FPC, иначе не дождёшся.
kazalex писал(а):А потом ещё докажи тиму, что твой патчик нужно принять.
Вот оно как бывает в 16 лет, если при рождении пуповину не отрезать.
qivi, сказать-то чего хотел?
kazalex писал(а):qivi, сказать-то чего хотел?
Что дельфи маст дай.
Vadim, а я уж о плохом подумал 
kazalex писал(а):qivi, сказать-то чего хотел?
Ровно то что сказал, совместимость с делфи один из тормозов развития FPC+Lazarus, это так же ненужный рамочный ограничитель, а так же не все тенденции развития делфи хотелось бы видеть в FPC+Lazarus.
Согласен с предыдущим оратором.
