classdef SCD
 % main interface class for interacting with SCD expcodes
 %
 % H = SCD.load(expcode);  % loads the obj for a desired expcode
 % H = SCD.init(expcode,shot); % does load, setup, callinits, actualize
 %
 % C = SCD.getexpcodecontainer; % get expcode container

 
 properties (Access = private)
  E % expcode
  SCDexps % expcode code container
 end
 
 methods (Static)
  function E=load(expcode)
   % Creating the experimental code container class
   SCDexps = SCD.getexpcodecontainer();
   E = SCDexps.getbymaincode(expcode);
   SCDconf_setSIMconf; % set conf for simulation
  end
  
  function H=setup(expcode)
    % load and setup
    H=SCD.load(expcode);
    H.setup;
  end
  
  function H=init(expcode,shot)
    assert(nargin==2,'must supply 2 inputs to init(expcode,shot)')
    H=SCD.load(expcode);
    H.setup;
    H.callinits;
    H.actualize(shot);
  end
    
  function help()
   help(mfilename);
  end
  
  function list()
   SCD.help;
  end
 
  function SCDexps = getexpcodecontainer()
   SCDexps = SCDconf_createexpcodes;
  end
 end
end