/*!\file * \brief \todo �������� �����. */ /* * AppInfo.h * * Created on: 24 ���. 2019 �. * Author: titov */ #ifndef SOURCE_APPLICATION_SOFTWARE_APPINFO_H_ #define SOURCE_APPLICATION_SOFTWARE_APPINFO_H_ #include "AppId.hh" #include #include #include namespace configuration { namespace software { class AppInfo { public: static const CpuId incorret_cpu_id_by_default = 0xFFFFu; static void reset( CpuId incorrect_cpu_id = incorret_cpu_id_by_default ); static bool notice( InitializerStepId initializer_id, CpuId cpu_id, std::pair links, std::pair setting, std::pair proc ); struct Initializers { friend AppInfo; struct InitializerInfo { InitializerStepId initializer_id; std::pair links; std::pair setting; std::pair proc; }; struct InitializerIterator : public std::iterator< std::input_iterator_tag, InitializerInfo, std::size_t> { friend Initializers; InitializerIterator & operator++(); InitializerIterator operator++(int); bool operator==( InitializerIterator other ) const; bool operator!=( InitializerIterator other ) const; InitializerInfo operator*() const; private: InitializerIterator( CpuId cpu_id, std::size_t pos ); CpuId cpu_id; std::size_t position; }; InitializerIterator begin(); InitializerIterator end(); std::size_t getSize(); private: Initializers( CpuId ); CpuId cpu_id; }; static Initializers getInitializers( CpuId cpu_id ); struct Record { InitializerStepId initializer_id; CpuId cpu_id; const char * links; uint32_t links_size; const char * setting; uint32_t setting_size; const char * proc; uint32_t proc_size; Record( InitializerStepId, CpuId, std::pair links, std::pair setting, std::pair proc ); Record() : initializer_id(0), cpu_id(incorret_cpu_id_by_default) {} }; static void initialize( Record * table, std::size_t quantity ); private: static std::size_t search_from( std::size_t i, CpuId cpu_id ); static Record * table; static std::size_t size; static std::size_t num_records; }; }} #endif /* SOURCE_APPLICATION_SOFTWARE_APPINFO_H_ */