www.gusucode.com > mbcexpr 工具箱 matlab 源码程序 > mbcexpr/@cgsubexpr/cgsubexpr.m

    function out = cgsubexpr(varargin)
%CGSUBEXPR Constructor for a cgsubExpr class
%
% s=CGSUBEXPR returns an empty subExpr.
% s=CGSUBEXPR(name,left,right) returns a pointer to a cgsubExpr object.
%	Evaluates to left-right
% 	Both arguments must both be pointers or vectors of pointers to cgexpr objects

%  Copyright 2000-2004 The MathWorks, Inc. and Ford Global Technologies, Inc.


if nargin==1 && isstruct(varargin{1})
    out = varargin{1};
    e = out.cgexpr;
    out = rmfield(out, 'cgexpr');
else
    e = cgexpr;
    out = struct('NLeft', 0, ...
        'NRight', 0, ...
        'version', 2);
    if nargin
        if ischar(varargin{1})
            e = setname(e, varargin{1});
        else
            error(message('mbc:cgsubexpr:InvalidArgument'));
        end
        inputs = [];
        if nargin>1
            %Handle the 2nd argument as the left expression.
            if isa(varargin{2} , 'xregpointer') || isempty(varargin{2})
                inputs = varargin{2}(:)';
                out.NLeft = length(varargin{2});
            else
                error(message('mbc:cgsubexpr:InvalidArgument1'));
            end
        end
        if nargin>2
            %Handle the 3rd argument as the right expression.
            if isa(varargin{3} , 'xregpointer') || isempty(varargin{3})
                inputs = [inputs, varargin{3}(:)'];
                out.NRight = length(varargin{3});
            else
                error(message('mbc:cgsubexpr:InvalidArgument2'));
            end     
        end
        e = setinputs(e, inputs);
    end
end
out = class(out , 'cgsubexpr' , e);