function have_method,class,method,err=err,_extra=extra common have_method,saved_methods err='' if is_blank(method) then return,0b ok_input=(is_object(class) || is_string(class)) stype=size(class,/tname) if ~ok_input then begin pr_syntax,'chk=have_method(class_name,method_name)' err='invalid inputs' return,0b endif method_name=strtrim(strlowcase(method),2) if since_version('6.4') && (stype eq 'OBJREF') then $ return,call_function('obj_hasmethod',class,method_name) if stype eq 'OBJREF' then class_name=obj_class(class) else class_name=class class_name=strtrim(strlowcase(class_name),2) ;-- check commons if exist(saved_methods) then begin chk=where((saved_methods.class_name eq class_name) and $ (saved_methods.method_name eq method_name), count) if count gt 0 then return,1b endif methods=obj_methods(class,/super,err=err,_extra=extra) if err ne '' then return,0b search=stregex(methods,'::'+method_name,/fold) chk=where(search gt -1,count) have=count gt 0 if have then begin tsave={class_name:class_name,method_name:method_name} saved_methods=merge_struct(saved_methods,tsave) endif return,have end