30.01.2011 19:41, Sven Barth wrote:
procedure update_unit_symtable_options;
var
st: tsymtable;
begin
st:=owner;
while not(st.symtabletype in [globalsymtable,staticsymtable]) do
st:=st.defowner.owner;
if objecttype in [odt_classhelper,odt_objccategory] then
include(st.tableoptions,sto_has_classhelper);
end;
remove "if objecttype in [odt_classhelper,odt_objccategory] then" from
this routine to outside - so you will not need to scan owners in the
loop for all object types.
I still see an ability to optimize your implementation.
Sorry, but I don't understand your intention here.
procedure update_unit_symtable_options;
var
st: tsymtable;
begin
st:=owner;
while not(st.symtabletype in [globalsymtable,staticsymtable]) do
st:=st.defowner.owner;
include(st.tableoptions,sto_has_classhelper);
end;
if objecttype in [odt_classhelper,odt_objccategory] then
update_unit_symtable_options;
This will work faster because loop and the function call will run not
for all object types.
Best regards,
Paul Ishenin
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel