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

    function out = cgconstant(n,val,prec)
%CGCONSTANT Constructor for cgConstant class
%
%  c = CGCONSTANT returns an empty cgConstant object
%  c = CGCONSTANT(namestr,val) returns a xregpointer to a Constant object
%  with default floating point precision.
%  c = CGCONSTANT(namestr,val,precision) as above but with a defined
%  precision object.
%
%  Restrictions on arguments...
%    val             - scalar double or value object
%    precision       - @precision

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


c = struct('prec',cgprecfloat('double')); % Double precision
v = cgvalue;

if nargin == 0
    out = class(c , 'cgconstant' , v);
else
    if nargin==1
        % Convert structure to object
        c = n;
        v = c.cgvalue;
        c = rmfield(c, 'cgvalue');
    elseif nargin > 1
        if isa(val,'cgvalue')
            if isscalar(val)
                v=val;
            else
                error(message('mbc:cgconstant:InvalidArgument'));
            end
        elseif isa(val,'double')
            if length(val)>1
                error(message('mbc:cgconstant:InvalidArgument'));
            end
            v = set(v,'Value',val);
        else
            error(message('mbc:cgconstant:InvalidArgument2'));
        end
        v = setname(v , n);
        if nargin > 2
            if isa(prec,'cgprec')
                c.prec = prec;
            else
                error(message('mbc:cgconstant:InvalidArgument3'));
            end
        end
    else
        error(message('mbc:cgconstant:InvalidArgument4'));
    end
    out = class(c , 'cgconstant' , v);
end