diff --git a/structure/feature_flag/write.C b/structure/feature_flag/write.C index 907451a..efcdf1e 100644 --- a/structure/feature_flag/write.C +++ b/structure/feature_flag/write.C @@ -17,30 +17,38 @@ using ROOT::Experimental::Internal::RNTupleFileWriter; using ROOT::Experimental::Internal::RNTupleSerializer; void write(std::string_view filename = "structure.feature_flag.root") { - // Note that we are writing a file with a so-far unused feature flag. This cannot use the regular - // production API but we have to use the internal, low-level classes to create the file. + // Note that we are writing a file with a so-far unused feature flag. This + // cannot use the regular production API but we have to use the internal, + // low-level classes to create the file. RNTupleDescriptorBuilder descBuilder; // The following line will be required as of ROOT v6.36 // descBuilder.SetVersionForWriting(); descBuilder.SetNTuple("ntpl", ""); descBuilder.SetFeature(RNTupleDescriptor::kFeatureFlagTest); - descBuilder.AddField(RFieldDescriptorBuilder::FromField(RFieldZero()).FieldId(0).MakeDescriptor().Unwrap()); + descBuilder.AddField(RFieldDescriptorBuilder::FromField(RFieldZero()) + .FieldId(0) + .MakeDescriptor() + .Unwrap()); + auto descriptor = descBuilder.MoveDescriptor(); RNTupleWriteOptions options; - auto writer = - RNTupleFileWriter::Recreate("ntpl", filename, RNTupleFileWriter::EContainerFormat::kTFile, RNTupleWriteOptions()); + options.SetCompression(0); + auto writer = RNTupleFileWriter::Recreate( + "ntpl", filename, RNTupleFileWriter::EContainerFormat::kTFile, + options); RNTupleSerializer serializer; - auto ctx = serializer.SerializeHeader(nullptr, descBuilder.GetDescriptor()); + auto ctx = serializer.SerializeHeader(nullptr, descriptor); auto buffer = std::make_unique(ctx.GetHeaderSize()); - ctx = serializer.SerializeHeader(buffer.get(), descBuilder.GetDescriptor()); - writer->WriteNTupleHeader(buffer.get(), ctx.GetHeaderSize(), ctx.GetHeaderSize()); + ctx = serializer.SerializeHeader(buffer.get(), descriptor); + writer->WriteNTupleHeader(buffer.get(), ctx.GetHeaderSize(), + ctx.GetHeaderSize()); - auto szFooter = serializer.SerializeFooter(nullptr, descBuilder.GetDescriptor(), ctx); + auto szFooter = serializer.SerializeFooter(nullptr, descriptor, ctx); buffer = std::make_unique(szFooter); - serializer.SerializeFooter(buffer.get(), descBuilder.GetDescriptor(), ctx); + serializer.SerializeFooter(buffer.get(), descriptor, ctx); writer->WriteNTupleFooter(buffer.get(), szFooter, szFooter); writer->Commit();