.. _program_listing_file_src_sparsebase_feature_degrees.cc: Program Listing for File degrees.cc =================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/sparsebase/feature/degrees.cc``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "sparsebase/feature/degrees.h" #include #include #include #include #include #include "sparsebase/utils/parameterizable.h" namespace sparsebase::feature { template Degrees::Degrees(ParamsType) { Degrees(); } template Degrees::Degrees() { Register(); this->params_ = std::shared_ptr(new ParamsType()); this->pmap_.insert({get_id_static(), this->params_}); } template Degrees::Degrees( const Degrees &d) { Register(); this->params_ = d.params_; this->pmap_ = d.pmap_; } template Degrees::Degrees( const std::shared_ptr r) { Register(); this->params_ = r; this->pmap_[get_id_static()] = r; } template Degrees::~Degrees() = default; template void Degrees::Register() { this->RegisterFunction( {format::CSR::get_id_static()}, GetDegreesCSR); } template std::vector Degrees::get_sub_ids() { return {typeid(Degrees)}; } template std::vector Degrees::get_subs() { return {new Degrees(*this)}; } template std::type_index Degrees::get_id_static() { return typeid(Degrees); } template std::unordered_map Degrees::Extract(format::Format *format, std::vector c, bool convert_input) { return {{this->get_id(), std::forward(GetDegrees(format, c, convert_input))}}; }; template IDType *Degrees::GetDegrees( format::Format *format, std::vector c, bool convert_input) { return this->Execute(this->params_.get(), c, convert_input, format); } template std::tuple>, IDType *> Degrees::GetDegreesCached( format::Format *format, std::vector c, bool convert_input) { return this->CachedExecute(this->params_.get(), c, convert_input, false, format); } template IDType *Degrees::GetDegreesCSR( std::vector formats, utils::Parameters *params) { auto csr = formats[0]->AsAbsolute>(); auto dims = csr->get_dimensions(); IDType num_vertices = dims[0]; NNZType num_edges = csr->get_num_nnz(); IDType *degrees = new IDType[num_vertices](); auto *rows = csr->get_row_ptr(); for (int i = 0; i < num_vertices; i++) { degrees[i] = rows[i + 1] - rows[i]; } return degrees; } #if !defined(_HEADER_ONLY) #include "init/degrees.inc" #endif } // namespace sparsebase::feature