Program Listing for File EliasFanoGraph.h
↰ Return to documentation for file (ADS/succinct/EliasFanoGraph.h)
/*--------------------------------------------------------------------------*/
/*-------------------------- File EliasFanoGraph.h -------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_EliasFanoGraph
#define __ADS_EliasFanoGraph
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include "ADS/succinct/EliasFano.h"
#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
/*--------------------------------------------------------------------------*/
/*-------------------------- CLASS EliasFanoGraph --------------------------*/
/*--------------------------------------------------------------------------*/
class EliasFanoGraph {
/*--------------------------------------------------------------------------*/
public:
EliasFanoGraph( void ) = default;
explicit EliasFanoGraph(
const std::vector< std::vector< std::size_t > > & a );
[[nodiscard]] std::size_t order( void ) const;
[[nodiscard]] std::size_t edges( void ) const;
[[nodiscard]] std::size_t outdegree( std::size_t u ) const;
[[nodiscard]] std::size_t successor( std::size_t u , std::size_t i ) const;
[[nodiscard]] std::vector< std::size_t > successors( std::size_t u ) const;
[[nodiscard]] bool hasEdge( std::size_t u , std::size_t v ) const;
[[nodiscard]] std::size_t sizeInBits( void ) const;
/*--------------------------------------------------------------------------*/
private:
std::size_t f_n = 0;
EliasFano f_edges;
EliasFano f_start;
}; // end( class EliasFanoGraph )
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/succinct/impl/EliasFanoGraph.tpp"
/*--------------------------------------------------------------------------*/
#endif /* EliasFanoGraph.h included */
/*--------------------------------------------------------------------------*/
/*------------------------ End File EliasFanoGraph.h -----------------------*/
/*--------------------------------------------------------------------------*/