1*146d5791SDean Michael Berris //===- FDRRecordConsumer.h - XRay Flight Data Recorder Mode Records -------===//
2*146d5791SDean Michael Berris //
3*146d5791SDean Michael Berris //                     The LLVM Compiler Infrastructure
4*146d5791SDean Michael Berris //
5*146d5791SDean Michael Berris // This file is distributed under the University of Illinois Open Source
6*146d5791SDean Michael Berris // License. See LICENSE.TXT for details.
7*146d5791SDean Michael Berris //
8*146d5791SDean Michael Berris //===----------------------------------------------------------------------===//
9*146d5791SDean Michael Berris #include "llvm/XRay/FDRRecordConsumer.h"
10*146d5791SDean Michael Berris 
11*146d5791SDean Michael Berris namespace llvm {
12*146d5791SDean Michael Berris namespace xray {
13*146d5791SDean Michael Berris 
14*146d5791SDean Michael Berris Error LogBuilderConsumer::consume(std::unique_ptr<Record> R) {
15*146d5791SDean Michael Berris   if (!R)
16*146d5791SDean Michael Berris     return createStringError(
17*146d5791SDean Michael Berris         std::make_error_code(std::errc::invalid_argument),
18*146d5791SDean Michael Berris         "Must not call RecordConsumer::consume() with a null pointer.");
19*146d5791SDean Michael Berris   Records.push_back(std::move(R));
20*146d5791SDean Michael Berris   return Error::success();
21*146d5791SDean Michael Berris }
22*146d5791SDean Michael Berris 
23*146d5791SDean Michael Berris Error PipelineConsumer::consume(std::unique_ptr<Record> R) {
24*146d5791SDean Michael Berris   if (!R)
25*146d5791SDean Michael Berris     return createStringError(
26*146d5791SDean Michael Berris         std::make_error_code(std::errc::invalid_argument),
27*146d5791SDean Michael Berris         "Must not call RecordConsumer::consume() with a null pointer.");
28*146d5791SDean Michael Berris 
29*146d5791SDean Michael Berris   // We apply all of the visitors in order, and concatenate errors
30*146d5791SDean Michael Berris   // appropriately.
31*146d5791SDean Michael Berris   Error Result = Error::success();
32*146d5791SDean Michael Berris   for (auto *V : Visitors)
33*146d5791SDean Michael Berris     Result = joinErrors(std::move(Result), R->apply(*V));
34*146d5791SDean Michael Berris   return Result;
35*146d5791SDean Michael Berris }
36*146d5791SDean Michael Berris 
37*146d5791SDean Michael Berris } // namespace xray
38*146d5791SDean Michael Berris } // namespace llvm
39