www.gusucode.com > mbcexpr 工具箱 matlab 源码程序 > mbcexpr/@cgslparser/shareNormaliser.m
function [pNorm,IsNew] = shareNormaliser(obj,b,normaliserName,pInput) %shareNormaliser share normaliser % [pNorm,IsNew] = shareNormaliser(obj,normaliserName,pInput) % Copyright 2012-2012 The MathWorks, Inc. and Ford Global Technologies, Inc. % find normalizer in project ptr = findItem(obj.Project.info,'Type','Normalizer','Name',normaliserName); if isempty(ptr) % look in PointerList for normalizer created in this parse plist = obj.PointerList(~isnull(obj.PointerList)); InPointerList = strcmp(pveceval(plist,@getname),normaliserName) & parrayeval(plist,@(t) isa(t,'cgnormaliser'),{},@false); if nnz(InPointerList) ptr = plist(InPointerList); ptr = ptr(1); end end pNorm = mbcpointer(1); IsNew = true; if ~isempty(ptr) if strcmp(charlist(pInput.info,true),charlist(info(ptr.getinputs),true)) % normaliser has same inputs pNorm = ptr; IsNew = false; else msg = sprintf('The normalizer %s is used by other features or in other parts of this feature. The inputs to %s have been redefined.',... normaliserName,normaliserName); hilite_system( b ); resp = questdlg([msg,' Do you want to create a new normalizer, reconnect this normalizer with new connections, or cancel?'],... 'Normalizer Definition',... 'New Normalizer','Reconnect','Cancel','New Normalizer'); hilite_system( b, 'none'); switch resp case 'New Normalizer' IsNew = true; fprintf('Duplicate normalizer %s\n',normaliserName) case 'Reconnect' % rewire existing normaliser inputs pNorm = ptr; pNorm.info = setX(pNorm.info,pInput); IsNew = false; case 'Cancel' obj.assert(msg,b) end end end