advantage 0.1.0

Automatic Differentiation Toolkit
Documentation
#ifndef _ADV_CONTEXT_HPP
#define _ADV_CONTEXT_HPP

#include "Double.hpp"

namespace adv
{

class Context
{
public:
	/// \brief Destructor
	~Context();

	/// \brief Default constructor.
	Context();
	/// \brief Deleted copy constructor.
	Context(const Context&) = delete;
	/// \brief Move constructor.
	Context(Context&&);

	/// \brief Deleted copy assignment.
	Context& operator=(const Context&) = delete;
	/// \brief Move assignment.
	Context& operator=(Context&&);

	/// Get a new independent variable
	Double new_independent();
	/// Set a variable dependent
	void set_dependent(const Double& var);

private:
	struct Impl;
	Impl* m_impl;

	friend class Tape;
	void* get_impl();
	void* move_impl();
};

} // namespace adv

#endif // _ADV_CONTEXT_HPP