// Copyright 2019 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.

#ifndef LIBHWSEC_OVERALLS_OVERALLS_SINGLETON_H_
#define LIBHWSEC_OVERALLS_OVERALLS_SINGLETON_H_

#include "libhwsec/hwsec_export.h"
#include "libhwsec/overalls/overalls.h"

namespace hwsec {
namespace overalls {

// This class manages the singleton of |Overalls| instance; it is also
// responsible for creating a normal |Overalls| (i.e. an |Overalls| instance
// that directly calls |trousers| APIs) as the default singleton instance.
class HWSEC_EXPORT OverallsSingleton {
 public:
  // Returns the singleton of the |Overalls|. See the private field doc for more
  // information.
  static Overalls* GetInstance();

  // A helper function to set the instance so we can replace the singleton when
  // necessary. Returns the |Overalls| instance stored in this class so the
  // state restoration is possible.
  static Overalls* SetInstance(Overalls* ins);

 private:
  // A singleton instance of |Overalls|. By default, it is a normal class (i.e.,
  // calling |trousers|).
  static Overalls* overalls_;
};

}  // namespace overalls
}  // namespace hwsec

#endif  // LIBHWSEC_OVERALLS_OVERALLS_SINGLETON_H_
