view foosdk/sdk/pfc/killswitch.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
line wrap: on
line source

#pragma once

#include <memory>

namespace pfc {
	struct killSwitchData_t {
		killSwitchData_t() : m_val() {}
		volatile bool m_val;
	};

	
	typedef std::shared_ptr<killSwitchData_t> killSwitchRef_t;
	
	class killSwitchRef {
	public:
		killSwitchRef( killSwitchRef_t ks ) : m_ks(ks) {}

		operator bool () const {
			return m_ks->m_val;
		}
		
		void set(bool val = true) {
			m_ks->m_val = val;
		}
	private:
		killSwitchRef_t m_ks;
	};
	
	killSwitchRef killSwitchMake() {
		return std::make_shared<killSwitchData_t>();
	}
}