namespace std { typedef long unsigned int size_t; } typedef unsigned char uint8_t; namespace std __attribute__ ((__visibility__ ("default"))) { template struct char_traits; template class allocator; template, typename _Alloc = allocator<_CharT> > class basic_string; typedef basic_string string; template struct _Vector_base { }; template > class vector : protected _Vector_base<_Tp, _Alloc> { }; template struct __array_traits { typedef _Tp _Type[_Nm]; }; template struct array { typedef std::__array_traits<_Tp, _Nm> _AT_Type; typename _AT_Type::_Type _M_elems; }; namespace Xefis { } namespace SI { typedef std::vector Blob; class Value { public: virtual std::vector const& supported_units() const = 0; virtual void parse (std::string const&) = 0; virtual void parse_blob (Blob const&) = 0; virtual std::string stringify() const = 0; virtual Blob binarify() const = 0; virtual double floatize (std::string unit) const = 0; }; template class TypedValue: public Value { public: typedef tValueType ValueType; public: virtual ValueType si_units() const noexcept = 0; virtual void set_si_units (ValueType) = 0; void parse_blob (Blob const&) override; Blob binarify() const override; }; template class LinearValue: public TypedValue { }; class Time: public LinearValue { std::vector const& supported_units() const override; ValueType si_units() const noexcept override; void set_si_units (ValueType) override; void parse (std::string const&) override; std::string stringify() const override; double floatize (std::string unit) const override; }; inline constexpr Time operator"" _ms (unsigned long long ms) { } } using namespace SI; class __attribute__((visibility("default"))) QObject { }; namespace xf = Xefis; class __attribute__((visibility("default"))) QDomNode { }; class __attribute__((visibility("default"))) QDomElement : public QDomNode { }; namespace Xefis { class ModuleManager; class Noncopyable { }; class Module: private Noncopyable { public: Module (ModuleManager*, QDomElement const& config); }; class SmootherBase { protected: virtual void set_smoothing_time_impl (int milliseconds) noexcept = 0; }; template class Smoother: public SmootherBase { public: Smoother (Time smoothing_time = 1_ms, Time precision = 1_ms) noexcept; protected: void set_smoothing_time_impl (int milliseconds) noexcept override; }; class PCA9685: public QObject, public xf::Module { static constexpr unsigned int Channels = 16; struct Channel { Time smoothing_time = 1_ms; xf::Smoother smoother = smoothing_time; }; public: PCA9685 (xf::ModuleManager*, QDomElement const& config); std::array _channels; }; PCA9685::PCA9685 (xf::ModuleManager* module_manager, QDomElement const& config): Module (module_manager, config) {