function model = mttApplyInterfaceDomains(model,branch) ; is_root_model = (nargin==1) ; objects = mttGetFieldNames(model,'obj') ; for i = 1:length(objects) object_name = objects{i} ; object = getfield(model,'obj',object_name) ; if isfield(object,'obj') if is_root_model branch = object_name ; else branch = [branch,'/',object_name] ; end object = mttApplyInterfaceDomains(object,branch) ; model = setfield(model,'obj',object_name,object) ; else if ~isempty(object.cr) if is_root_model branch = mttDetachText(model.source,'/') ; end here = [branch,':',object_name] ; port_names = mttGetFieldNames(object.cr.interface,'port') ; for j = 1:length(port_names) port_name = port_names{j} ; port = getfield(object.cr.interface,'port',port_name) ; predefined_domain = port.domain ; predefined_domain_item = port.domain_item ; inbond = port.in ; outbond = port.out ; if isempty(inbond) bond_number = outbond ; else bond_number = inbond ; end [model,ok] = mttUpdateBondDomain(model,bond_number,predefined_domain,predefined_domain_item) ; mttAssert(ok,['Domain conflict at port "',port_name,'" in ',here]) ; end end end end