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);  % loads and initialize
 % H = SCD.prepforcompile(expcode);  % loads, initialize, and setup (ready for compilation)
 % H = SCD.prepforsim(expcode,shot); % does load, init, setup, 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=init(expcode)
    H=SCD.load(expcode);
    H.init;
  end
  
  function H=prepforcompile(expcode)
    H=SCD.load(expcode);
    H.init;
    H.setup;
  end
  
  function H=prepforsim(expcode,shot)
    H=SCD.load(expcode);
    H.init;
    H.setup;
    H.actualize(shot);
  end
  
  function help()
   help(mfilename);
  end
  
  function list()
   SCD.help;
  end
 
  function SCDexps = getexpcodecontainer()
   SCDexps = SCDconf_createexpcodes;
  end
 end
end