1#ifndef TMVA_SOFIE_ROPERATOR 
    2#define TMVA_SOFIE_ROPERATOR 
   13namespace Experimental{
 
   23   virtual std::vector<std::string> 
GetStdLibs() { 
return {}; }
 
   24   virtual std::vector<std::vector<size_t>> 
ShapeInference(std::vector<std::vector<size_t>>) { 
return {}; };
 
   25   virtual std::vector<ETensorType> 
TypeInference(std::vector<ETensorType>) { 
return {}; };
 
   34   virtual std::string 
Header() { 
return "";}
 
   42   const std::string 
SP = 
"   ";    
 
 
std::vector< std::string_view > fInputTensorNames
 
virtual std::vector< std::string > GetBlasRoutines()
 
virtual void Initialize(RModel &)=0
 
bool fIsOutputConstant
flag to identify if operator has a constant output (no need to generate code)
 
virtual std::vector< std::vector< size_t > > ShapeInference(std::vector< std::vector< size_t > >)
 
virtual std::string GenerateInitCode()
 
const std::string SP
space used to correctly indent the generated C++ code
 
virtual std::vector< ETensorType > TypeInference(std::vector< ETensorType >)
 
virtual std::string GenerateSessionMembersCode(std::string)
 
std::span< const std::string_view > GetOpInputTensors() const
 
bool fUseSession
flag to identify if using the session class
 
virtual std::string Generate(std::string OpName)=0
 
std::span< const std::string_view > GetOpOutputTensors() const
 
virtual std::string GenerateDeclCode()
 
virtual std::vector< std::string > GetStdLibs()
 
std::vector< std::string_view > fOutputTensorNames
 
virtual std::string Header()
 
create variable transformations