20         throw std::runtime_error(
"TMVA::SOFIE ONNX Parser ConstantOfShape op has input tensor" + 
input_name +
 
   21                                  "  but its type is not yet registered");
 
   26      std::cout << 
"\t.... ";
 
   28         std::cout << 
"ConstantOfShape " << 
nodeproto.input(0) << 
"  -> ";
 
   30         std::cout << 
"Constant  --> ";
 
   31      std::cout << 
nodeproto.output(0) << std::endl;
 
   34   std::unique_ptr<ROperator> 
op;
 
   39   std::vector<std::size_t> shape;   
 
   42      throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Constant or ConstantOfShape and attribute size is larger than 1");
 
   47         const onnx::TensorProto & t = 
nodeproto.attribute(0).t();
 
   51         for (
int j = 0; 
j < t.dims_size(); 
j++) {
 
   52            shape.push_back(t.dims(
j));
 
   58               throw std::runtime_error(
"TMVA::SOFIE ONNX Parser ConstantOfShape has invalid tensor size " + std::to_string(
length));
 
   64            std::vector<int32_t> values(
length);
 
   65            if (t.int32_data_size() == 
int(
length)) {
 
   66               for (
size_t i = 0; i < 
length; i++)
 
   67                  values[i] = t.int32_data(i);
 
   69               auto raw_data_ptr = 
reinterpret_cast<int32_t *
>(
const_cast<char *
>(t.raw_data().c_str()));
 
   76            std::vector<int64_t> values(
length);
 
   77            if (t.int64_data_size() == 
int(
length)) {
 
   78               for (
size_t i = 0; i < 
length; i++)
 
   79                  values[i] = t.int64_data(i);
 
   81               auto raw_data_ptr = 
reinterpret_cast<int64_t *
>(
const_cast<char *
>(t.raw_data().c_str()));
 
   88            std::vector<float> values(
length);
 
   89             if (t.float_data_size() == 
int(
length)) {
 
   90               for (
size_t i = 0; i < 
length; i++)
 
   91                  values[i] = t.float_data(i);
 
   93               auto raw_data_ptr = 
reinterpret_cast<float *
>(
const_cast<char *
>(t.raw_data().c_str()));
 
  100            std::vector<double> values(
length);
 
  101             if (t.double_data_size() == 
int(
length)) {
 
  102               for (
size_t i = 0; i < 
length; i++)
 
  103                  values[i] = t.double_data(i);
 
  105               auto raw_data_ptr = 
reinterpret_cast<double *
>(
const_cast<char *
>(t.raw_data().c_str()));
 
  112            std::vector<bool> values(
length);
 
  113            auto raw_data_ptr = 
reinterpret_cast<bool *
>(
const_cast<char *
>(t.raw_data().c_str()));
 
  122                                       " is not supported!\n");
 
  130               std::vector<float> values(1);
 
  136               auto values = std::vector<float>({
nodeproto.attribute(0).floats().begin(), 
nodeproto.attribute(0).floats().
end()});
 
  137               shape.push_back(values.size());
 
  141               std::vector<int64_t> values(1);
 
  147               auto values = std::vector<int64_t>({
nodeproto.attribute(0).ints().begin(), 
nodeproto.attribute(0).ints().
end()});
 
  148               shape.push_back(values.size());
 
  151               throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Constant op: not yet supporting attribute " + 
attribute_name);
 
  154            throw std::runtime_error(
"TMVA::SOFIE ONNX Parser ConstantOfShape op: parsed invalid attribute " + 
attribute_name);
 
  162         std::vector<float> values(1);
 
  166         throw std::runtime_error(
"TMVA::SOFIE ONNX Parser Constant has no attribute");
 
  175      std::cout << 
"\t ParseConstant: operator created\n";