function U = factordiscr(varargin)
% FACTORDISCR Parameterized discriminant factor 
%
% U = FACTORDISCR(T) where T is a factor template
%
% U = FACTORDISCR Creates an empty/default object
%
% U = FACTORDISCR(A) where A is a factordiscr object will return a
% copy of A
%
% Other classes will descend from factordiscr to implement
% particular discriminants.
  
% Fields:
%  template

    
% Jerod Weinman
% jerod@acm.org
    
% $Id: factordiscr.m 1 2009-05-07 13:41:00Z weinman $
 
% Jerod Weinman
% jerod@acm.org
% Copyright 2008, 2009, 2011
 
%    This file is part of MatLibFactorGraph.
%
%    MatLibFactorGraph is free software: you can redistribute it and/or modify
%    it under the terms of the GNU General Public License as published by
%    the Free Software Foundation, either version 3 of the License, or
%    (at your option) any later version.
%
%    MatLibFactorGraph is distributed in the hope that it will be useful,
%    but WITHOUT ANY WARRANTY; without even the implied warranty of
%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%    GNU General Public License for more details.
%
%    You should have received a copy of the GNU General Public License
%    along with MatLibFactorGraph.  If not, see <http://www.gnu.org/licenses/>.
  
  
  if nargin == 0
	
	U.template = factortemplate();
	
	U = class(U,'factordiscr');
	
  elseif nargin==1 && isa(varargin{1},'factordiscr')
	
	U = varargin{1};
	
  else
	
	if ~isa(varargin{1},'factortemplate')
	  error('T must be a factortemplate object');
	end;
	
	
	U.template = varargin{1};
	
	U = class(U,'factordiscr');
	
  end;
