/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_fuzzing_Nyx_h #define mozilla_fuzzing_Nyx_h #include #include #include #ifndef NYX_DISALLOW_COPY_AND_ASSIGN # define NYX_DISALLOW_COPY_AND_ASSIGN(T) \ T(const T&); \ void operator=(const T&) #endif namespace mozilla { class MallocAllocPolicy; template class Vector; namespace fuzzing { class Nyx { public: static Nyx& instance(); void start(void); bool started(void); bool is_enabled(const char* identifier); bool is_replay(); uint32_t get_data(uint8_t* data, uint32_t size); void release(uint32_t iterations = 1); void handle_event(const char* type, const char* file, int line, const char* reason); private: std::atomic mInited; std::atomic mReplayMode; std::list*> mReplayBuffers; Nyx(); NYX_DISALLOW_COPY_AND_ASSIGN(Nyx); }; } // namespace fuzzing } // namespace mozilla #endif /* mozilla_fuzzing_Nyx_h */