// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "runtime_probe/functions/sequence.h"

#include <utility>

#include <base/logging.h>

namespace runtime_probe {

SequenceFunction::DataType SequenceFunction::EvalImpl() const {
  base::Value result(base::Value::Type::DICTIONARY);

  for (const auto& func : functions_) {
    const auto& probe_results = func->Eval();

    if (probe_results.size() == 0)
      return {};

    if (probe_results.size() > 1) {
      LOG(ERROR) << "Subfunction call generates more than one results.";
      return {};
    }

    result.MergeDictionary(&probe_results[0]);
  }

  DataType results;
  results.push_back(std::move(result));
  return results;
}

}  // namespace runtime_probe
