/***************************************************************************** OscSinCos.h By Laurent de Soras --- Legal stuff --- This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more details. *Tab=3***********************************************************************/ #if !defined(ffft_OscSinCos_HEADER_INCLUDED) # define ffft_OscSinCos_HEADER_INCLUDED # if defined(_MSC_VER) # pragma once # pragma warning(4 : 4250) // "Inherits via dominance." # endif /*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ # include "def.h" namespace ffft { template class OscSinCos { /*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ public: typedef T DataType; OscSinCos(); ffft_FORCEINLINE void set_step(double angle_rad); ffft_FORCEINLINE DataType get_cos() const; ffft_FORCEINLINE DataType get_sin() const; ffft_FORCEINLINE void step(); ffft_FORCEINLINE void clear_buffers(); /*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ protected: /*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ private: DataType _pos_cos; // Current phase expressed with sin and cos. [-1 ; 1] DataType _pos_sin; // - DataType _step_cos; // Phase increment per step, [-1 ; 1] DataType _step_sin; // - /*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ private: OscSinCos(const OscSinCos &other); OscSinCos &operator=(const OscSinCos &other); bool operator==(const OscSinCos &other); bool operator!=(const OscSinCos &other); }; // class OscSinCos } // namespace ffft # include "OscSinCos.hpp" #endif // ffft_OscSinCos_HEADER_INCLUDED /*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/