From 00c70d2aafd2a9d5daf7fa39f0db9cf6a788b27b Mon Sep 17 00:00:00 2001 From: Phil Ratzloff Date: Sat, 16 Nov 2024 14:09:44 -0500 Subject: [PATCH] Rename "descriptor" structs to "info" structs --- D3126_Overview/tex/overview.tex | 2 +- D3126_Overview/tex/revision.tex | 1 + D3128_Algorithms/src/visitor_edge.hpp | 10 +- D3128_Algorithms/src/visitor_vertex.hpp | 8 +- .../{edge_descriptor.hpp => edge_info.hpp} | 2 +- ...ghbor_descriptor.hpp => neighbor_info.hpp} | 2 +- ...{vertex_descriptor.hpp => vertex_info.hpp} | 2 +- D3129_Views/tex/revision.tex | 1 + D3129_Views/tex/views.tex | 250 +++++++++--------- .../tex/container_interface.tex | 8 +- D3130_Container_Interface/tex/revision.tex | 6 + .../src/compressed_graph_gvoid.hpp | 2 +- D3131_Containers/tex/containers.tex | 4 +- D3131_Containers/tex/revision.tex | 7 + D9903/tex/operators.tex | 2 +- tex/conventions.tex | 4 +- 16 files changed, 163 insertions(+), 148 deletions(-) rename D3129_Views/src/{edge_descriptor.hpp => edge_info.hpp} (94%) rename D3129_Views/src/{neighbor_descriptor.hpp => neighbor_info.hpp} (93%) rename D3129_Views/src/{vertex_descriptor.hpp => vertex_info.hpp} (91%) diff --git a/D3126_Overview/tex/overview.tex b/D3126_Overview/tex/overview.tex index 9341781..25f7678 100644 --- a/D3126_Overview/tex/overview.tex +++ b/D3126_Overview/tex/overview.tex @@ -75,7 +75,7 @@ \section{Goals and Priorities} \item A Graph Container Interface, used by Views and Algorithms, that provides a consistent interface for different graph data structures. The interface includes concepts, types, traits and functions and provides a similar role to the Ranges library for standard containers. \begin{itemize} - \item Descriptors for a consistent data model for vertex, edge and neighbor by views and edge lists. + \item Info structs for a consistent data model for vertex, edge and neighbor by views and edge lists. \item Adjacency list, an outer range of vertices with an inner range of outgoing edges on each vertex. \begin{itemize} diff --git a/D3126_Overview/tex/revision.tex b/D3126_Overview/tex/revision.tex index c328b28..8cab693 100644 --- a/D3126_Overview/tex/revision.tex +++ b/D3126_Overview/tex/revision.tex @@ -35,4 +35,5 @@ \subsection*{\paperno r3} \item Add a note that we will be unable to support a freestanding graph library in this proposal because of the need for \tcode{stack}, \tcode{queue} and potential \tcode{bad_alloc} exception in many of the algorithms. + \item Rename \tcode{descriptor} structs to \tcode{info} structs in preparation for new BGL-like descriptors. \end{itemize} diff --git a/D3128_Algorithms/src/visitor_edge.hpp b/D3128_Algorithms/src/visitor_edge.hpp index 76dd08e..dcc14eb 100644 --- a/D3128_Algorithms/src/visitor_edge.hpp +++ b/D3128_Algorithms/src/visitor_edge.hpp @@ -1,25 +1,25 @@ template concept has_on_examine_edge = // For exposition only - requires(Visitor& v, edge_descriptor, true, edge_reference_t, void> edesc) { + requires(Visitor& v, edge_info, true, edge_reference_t, void> edesc) { { v.on_examine_edge(edesc) }; }; template concept has_on_edge_relaxed = // For exposition only - requires(Visitor& v, edge_descriptor, true, edge_reference_t, void> edesc) { + requires(Visitor& v, edge_info, true, edge_reference_t, void> edesc) { { v.on_edge_relaxed(edesc) }; }; template concept has_on_edge_not_relaxed = // For exposition only - requires(Visitor& v, edge_descriptor, true, edge_reference_t, void> edesc) { + requires(Visitor& v, edge_info, true, edge_reference_t, void> edesc) { { v.on_edge_not_relaxed(edesc) }; }; template concept has_on_edge_minimized = // For exposition only - requires(Visitor& v, edge_descriptor, true, edge_reference_t, void> edesc) { + requires(Visitor& v, edge_info, true, edge_reference_t, void> edesc) { { v.on_edge_minimized(edesc) }; }; template concept has_on_edge_not_minimized = // For exposition only - requires(Visitor& v, edge_descriptor, true, edge_reference_t, void> edesc) { + requires(Visitor& v, edge_info, true, edge_reference_t, void> edesc) { { v.on_edge_not_minimized(edesc) }; }; diff --git a/D3128_Algorithms/src/visitor_vertex.hpp b/D3128_Algorithms/src/visitor_vertex.hpp index f2021dc..b4d867e 100644 --- a/D3128_Algorithms/src/visitor_vertex.hpp +++ b/D3128_Algorithms/src/visitor_vertex.hpp @@ -1,20 +1,20 @@ template concept has_on_initialize_vertex = // For exposition only - requires(Visitor& v, vertex_descriptor, vertex_reference_t, void> vdesc) { + requires(Visitor& v, vertex_info, vertex_reference_t, void> vdesc) { { v.on_initialize_vertex(vdesc) }; }; template concept has_on_discover_vertex = // For exposition only - requires(Visitor& v, vertex_descriptor, vertex_reference_t, void> vdesc) { + requires(Visitor& v, vertex_info, vertex_reference_t, void> vdesc) { { v.on_discover_vertex(vdesc) }; }; template concept has_on_examine_vertex = // For exposition only - requires(Visitor& v, vertex_descriptor, vertex_reference_t, void> vdesc) { + requires(Visitor& v, vertex_info, vertex_reference_t, void> vdesc) { { v.on_examine_vertex(vdesc) }; }; template concept has_on_finish_vertex = // For exposition only - requires(Visitor& v, vertex_descriptor, vertex_reference_t, void> vdesc) { + requires(Visitor& v, vertex_info, vertex_reference_t, void> vdesc) { { v.on_finish_vertex(vdesc) }; }; diff --git a/D3129_Views/src/edge_descriptor.hpp b/D3129_Views/src/edge_info.hpp similarity index 94% rename from D3129_Views/src/edge_descriptor.hpp rename to D3129_Views/src/edge_info.hpp index 55439b1..ac77502 100644 --- a/D3129_Views/src/edge_descriptor.hpp +++ b/D3129_Views/src/edge_info.hpp @@ -1,5 +1,5 @@ template -struct edge_descriptor { +struct edge_info { using source_id_type = VId; // e.g. vertex\_id\_t when SourceId==true, or void using target_id_type = VId; // e.g. vertex\_id\_t using edge_type = E; // e.g. edge\_reference\_t or void diff --git a/D3129_Views/src/neighbor_descriptor.hpp b/D3129_Views/src/neighbor_info.hpp similarity index 93% rename from D3129_Views/src/neighbor_descriptor.hpp rename to D3129_Views/src/neighbor_info.hpp index 74b8c69..4434b5d 100644 --- a/D3129_Views/src/neighbor_descriptor.hpp +++ b/D3129_Views/src/neighbor_info.hpp @@ -1,5 +1,5 @@ template -struct neighbor_descriptor { +struct neighbor_info { using source_id_type = VId; // e.g. vertex\_id\_t when Sourced==true, or void using target_id_type = VId; // e.g. vertex\_id\_t using vertex_type = V; // e.g. vertex\_reference\_t or void diff --git a/D3129_Views/src/vertex_descriptor.hpp b/D3129_Views/src/vertex_info.hpp similarity index 91% rename from D3129_Views/src/vertex_descriptor.hpp rename to D3129_Views/src/vertex_info.hpp index a89b2ab..5ec147c 100644 --- a/D3129_Views/src/vertex_descriptor.hpp +++ b/D3129_Views/src/vertex_info.hpp @@ -1,5 +1,5 @@ template -struct vertex_descriptor { +struct vertex_info { using id_type = VId; // e.g. vertex\_id\_t using vertex_type = V; // e.g. vertex\_reference\_t or void using value_type = VV; // e.g. vertex\_value\_t or void diff --git a/D3129_Views/tex/revision.tex b/D3129_Views/tex/revision.tex index 2796993..8c07367 100644 --- a/D3129_Views/tex/revision.tex +++ b/D3129_Views/tex/revision.tex @@ -18,4 +18,5 @@ \subsection*{\paperno r1} \item Add a note that we will be unable to support a freestanding graph library in this proposal because of the need for \tcode{stack}, \tcode{queue} and potential \tcode{bad_alloc} exception in many of the views. + \item Rename \tcode{descriptor} structs to \tcode{info} structs in preparation for new BGL-like descriptors. \end{itemize} diff --git a/D3129_Views/tex/views.tex b/D3129_Views/tex/views.tex index 582b2f2..27c71ba 100644 --- a/D3129_Views/tex/views.tex +++ b/D3129_Views/tex/views.tex @@ -33,16 +33,16 @@ \section{Introduction} Additionally, \tcode{stack} and \tcode{queue} require memory allocation which could throw a \tcode{bad_alloc} exception. -\section{Descriptors (Return Types)} +\section{Info Structs (Return Types)} Views return one of the types in this section, providing a consistent set of value types for all graph data structures. They are templated so that the view can adjust the actual values returned to be appropriate for its use. The three types, -\tcode{vertex_descriptor, edge_descriptor} and \tcode{neighbor_descriptor}, define the common data model used by algorithms. +\tcode{vertex_info, edge_info} and \tcode{neighbor_info}, define the common data model used by algorithms. The following examples show the general design and how it's used. While it focuses -on vertexlist to iterate over all vertices, it applies to all descriptors and view functions. +on vertexlist to iterate over all vertices, it applies to all info structs and view functions. \begin{lstlisting} -// the type of uu is vertex\_descriptor, vertex\_reference\_t, void> +// the type of uu is vertex\_info, vertex\_reference\_t, void> for(auto&& uu : vertexlist(g)) { vertex_id id = uu.id; vertex_reference_t u = uu.vertex; @@ -57,10 +57,10 @@ \section{Descriptors (Return Types)} } \end{lstlisting} -A function object can also be passed to return a value from the vertex. In this case, \tcode{vertexlist(g)} returns \tcode{vertex_descriptor, vertex_reference_t, decltype(vvf(u))>}. +A function object can also be passed to return a value from the vertex. In this case, \tcode{vertexlist(g)} returns \tcode{vertex_info, vertex_reference_t, decltype(vvf(u))>}. \begin{lstlisting} // the type returned by vertexlist is -// vertex\_descriptor, +// vertex\_info, // vertex\_reference\_t, // decltype(vvf(vertex\_reference\_t))> auto vvf = [&g](vertex_reference_t u) { return vertex_value(g,u); }; @@ -82,16 +82,16 @@ \section{Descriptors (Return Types)} } \end{lstlisting} -\subsection{\tcode{struct vertex_descriptor}}\label{vertex-view}\mbox{} \\ -\tcode{vertex_descriptor} is used to return vertex information. It is used by \tcode{vertexlist(g)}, \tcode{vertices_breadth_first_search(g,u)}, +\subsection{\tcode{struct vertex_info}}\label{vertex-view}\mbox{} \\ +\tcode{vertex_info} is used to return vertex information. It is used by \tcode{vertexlist(g)}, \tcode{vertices_breadth_first_search(g,u)}, \tcode{vertices_dfs(g,u)} and others. The \tcode{id} member always exists. {\small - \lstinputlisting{D3129_Views/src/vertex_descriptor.hpp} + \lstinputlisting{D3129_Views/src/vertex_info.hpp} } Specializations are defined with \tcode{V=void} or \tcode{VV=void} to suppress the existance of their associated member variables, -giving the following valid combinations in Table \ref{tab:vertex-view} . For instance, the second entry, \tcode{vertex_descriptor} +giving the following valid combinations in Table \ref{tab:vertex-view} . For instance, the second entry, \tcode{vertex_info} has two members \tcode{\{id_type id; vertex_type vertex;\}} and \tcode{value_type} is \tcode{void}. \begin{table}[h!] \begin{center} @@ -103,29 +103,29 @@ \subsection{\tcode{struct vertex_descriptor}}\label{vertex-view}\mbo \multicolumn{3}{c}{\textbf{Members}} \\ %\textbf{Template Arguments} & id & vertex & value \\ \hline - \tcode{vertex_descriptor} & \tcode{id} & \tcode{vertex} & \tcode{value} \\ - \tcode{vertex_descriptor} & \tcode{id} & \tcode{vertex} & \\ - \tcode{vertex_descriptor} & \tcode{id} & & \tcode{value} \\ - \tcode{vertex_descriptor} & \tcode{id} & & \\ + \tcode{vertex_info} & \tcode{id} & \tcode{vertex} & \tcode{value} \\ + \tcode{vertex_info} & \tcode{id} & \tcode{vertex} & \\ + \tcode{vertex_info} & \tcode{id} & & \tcode{value} \\ + \tcode{vertex_info} & \tcode{id} & & \\ \hline \end{tabular}} -\caption{\tcode{vertex_descriptor} Members} +\caption{\tcode{vertex_info} Members} \label{tab:vertex-view} \end{center} \end{table} -\subsection{\tcode{struct edge_descriptor}}\label{edge-view}\mbox{} \\ -\tcode{edge_descriptor} is used to return edge information. It is used by +\subsection{\tcode{struct edge_info}}\label{edge-view}\mbox{} \\ +\tcode{edge_info} is used to return edge information. It is used by \tcode{incidence(g,u), edgelist(g), edges_breadth_first_search(g,u), edges_dfs(g,u)} and others. When \tcode{Sourced=true}, the \tcode{source_id} member is included with type \tcode{VId}. The \tcode{target_id} member always exists. {\small - \lstinputlisting{D3129_Views/src/edge_descriptor.hpp} + \lstinputlisting{D3129_Views/src/edge_info.hpp} } Specializations are defined with \tcode{Sourced=true|false}, \tcode{E=void} or \tcode{EV=void} to suppress the existance of the associated member variables, giving the following valid combinations in Table \ref{tab:edge-view} . For instance, the second entry, -\tcode{edge_descriptor} has three members \tcode{\{source_id_type source_id; target_id_type target_id; edge_type edge;\}} +\tcode{edge_info} has three members \tcode{\{source_id_type source_id; target_id_type target_id; edge_type edge;\}} and \tcode{value_type} is \tcode{void}. \begin{table}[h!] \begin{center} @@ -137,32 +137,32 @@ \subsection{\tcode{struct edge_descriptor}}\label{edge-view \multicolumn{4}{c}{\textbf{Members}} \\ %\textbf{Template Arguments} & id & edge & value \\ \hline - \tcode{edge_descriptor} & \tcode{source_id} & \tcode{target_id} & \tcode{edge} & \tcode{value} \\ - \tcode{edge_descriptor} & \tcode{source_id} & \tcode{target_id} & \tcode{edge} & \\ - \tcode{edge_descriptor} & \tcode{source_id} & \tcode{target_id} & & \tcode{value} \\ - \tcode{edge_descriptor} & \tcode{source_id} & \tcode{target_id} & & \\ - \tcode{edge_descriptor} & & \tcode{target_id} & \tcode{edge} & \tcode{value} \\ - \tcode{edge_descriptor} & & \tcode{target_id} & \tcode{edge} & \\ - \tcode{edge_descriptor} & & \tcode{target_id} & & \tcode{value} \\ - \tcode{edge_descriptor} & & \tcode{target_id} & & \\ + \tcode{edge_info} & \tcode{source_id} & \tcode{target_id} & \tcode{edge} & \tcode{value} \\ + \tcode{edge_info} & \tcode{source_id} & \tcode{target_id} & \tcode{edge} & \\ + \tcode{edge_info} & \tcode{source_id} & \tcode{target_id} & & \tcode{value} \\ + \tcode{edge_info} & \tcode{source_id} & \tcode{target_id} & & \\ + \tcode{edge_info} & & \tcode{target_id} & \tcode{edge} & \tcode{value} \\ + \tcode{edge_info} & & \tcode{target_id} & \tcode{edge} & \\ + \tcode{edge_info} & & \tcode{target_id} & & \tcode{value} \\ + \tcode{edge_info} & & \tcode{target_id} & & \\ \hline \end{tabular}} -\caption{\tcode{edge_descriptor} Members} +\caption{\tcode{edge_info} Members} \label{tab:edge-view} \end{center} \end{table} -\subsection{\tcode{struct neighbor_descriptor}}\label{neighbor-view}\mbox{} \\ -\tcode{neighbor_descriptor} is used to return information for a neighbor vertex, through an edge. It is used by \tcode{neighbors(g,u)}. +\subsection{\tcode{struct neighbor_info}}\label{neighbor-view}\mbox{} \\ +\tcode{neighbor_info} is used to return information for a neighbor vertex, through an edge. It is used by \tcode{neighbors(g,u)}. When \tcode{Sourced=true}, the \tcode{source_id} member is included with type \tcode{source_id_type}. The \tcode{target_id} member always exists. {\small - \lstinputlisting{D3129_Views/src/neighbor_descriptor.hpp} + \lstinputlisting{D3129_Views/src/neighbor_info.hpp} } Specializations are defined with \tcode{Sourced=true|false}, \tcode{E}=void or \tcode{EV}=void to suppress the existance of the associated member variables, giving the following valid combinations in Table \ref{tab:neighbor-view} . For instance, the second entry, -\tcode{neighbor_descriptor} has three members \tcode{\{source_id_type source_id; target_id_type target_id; vertex_type target;\}} +\tcode{neighbor_info} has three members \tcode{\{source_id_type source_id; target_id_type target_id; vertex_type target;\}} and \tcode{value_type} is \tcode{void}. \begin{table}[h!] \begin{center} @@ -173,30 +173,30 @@ \subsection{\tcode{struct neighbor_descriptor}}\label{neigh & \multicolumn{4}{c}{\textbf{Members}} \\ \hline - \tcode{neighbor_descriptor} & \tcode{source_id} & \tcode{target_id} & \tcode{target} & \tcode{value} \\ - \tcode{neighbor_descriptor} & \tcode{source_id} & \tcode{target_id} & \tcode{target} & \\ - \tcode{neighbor_descriptor} & \tcode{source_id} & \tcode{target_id} & & \tcode{value} \\ - \tcode{neighbor_descriptor} & \tcode{source_id} & \tcode{target_id} & & \\ - \tcode{neighbor_descriptor} & & \tcode{target_id} & \tcode{target} & \tcode{value} \\ - \tcode{neighbor_descriptor} & & \tcode{target_id} & \tcode{target} & \\ - \tcode{neighbor_descriptor} & & \tcode{target_id} & & \tcode{value} \\ - \tcode{neighbor_descriptor} & & \tcode{target_id} & & \\ + \tcode{neighbor_info} & \tcode{source_id} & \tcode{target_id} & \tcode{target} & \tcode{value} \\ + \tcode{neighbor_info} & \tcode{source_id} & \tcode{target_id} & \tcode{target} & \\ + \tcode{neighbor_info} & \tcode{source_id} & \tcode{target_id} & & \tcode{value} \\ + \tcode{neighbor_info} & \tcode{source_id} & \tcode{target_id} & & \\ + \tcode{neighbor_info} & & \tcode{target_id} & \tcode{target} & \tcode{value} \\ + \tcode{neighbor_info} & & \tcode{target_id} & \tcode{target} & \\ + \tcode{neighbor_info} & & \tcode{target_id} & & \tcode{value} \\ + \tcode{neighbor_info} & & \tcode{target_id} & & \\ \hline \end{tabular}} -\caption{\tcode{neighbor_descriptor} Members} +\caption{\tcode{neighbor_info} Members} \label{tab:neighbor-view} \end{center} \end{table} -\subsection{Copyable Descriptors} +\subsection{Copyable Info Structs} -\subsubsection{Copyable Descriptor Types} -Copyable descriptors are specializations of the descriptors that can be copied. More specifically, they don't include +\subsubsection{Copyable Info Struct Types} +Copyable info structs are specializations of the info structs that can be copied. More specifically, they don't include a vertex or edge reference. \tcode{copyable_vertex_t} shows the simple definition. \begin{lstlisting} template -using copyable_vertex_t = vertex_descriptor; // {id, value} +using copyable_vertex_t = vertex_info; // {id, value} \end{lstlisting} \begin{table}[h!] @@ -206,17 +206,17 @@ \subsubsection{Copyable Descriptor Types} \hline \textbf{Type} & \textbf{Definition} \\ \hline - \tcode{copyable_vertex_t} & \tcode{vertex_descriptor} \\ - \tcode{copyable_edge_t} & \tcode{edge_descriptor>} \\ - \tcode{copyable_neighbor_t} & \tcode{neighbor_descriptor} \\ + \tcode{copyable_vertex_t} & \tcode{vertex_info} \\ + \tcode{copyable_edge_t} & \tcode{edge_info>} \\ + \tcode{copyable_neighbor_t} & \tcode{neighbor_info} \\ \hline \end{tabular}} -\caption{Descriptor Concepts} -\label{tab:descriptor_concepts} +\caption{Info Struct Concepts} +\label{tab:info_struct_concepts} \end{center} \end{table} -\subsubsection{Copyable Descriptor Concepts (For Exposition Only)} +\subsubsection{Copyable Info Struct Concepts (For Exposition Only)} Given the copyable types, it's useful to have concepts to determine if a type is a desired copyable type. \begin{table}[h!] @@ -231,8 +231,8 @@ \subsubsection{Copyable Descriptor Concepts (For Exposition Only)} \tcode{copyable_neighbor} & \tcode{convertible_to>} \\ \hline \end{tabular}} -\caption{Descriptor Concepts} -\label{tab:descriptor_concepts} +\caption{Info Struct Concepts} +\label{tab:info_struct_concepts} \end{center} \end{table} @@ -242,7 +242,7 @@ \section{Graph Views} \subsection{vertexlist Views} -\tcode{vertexlist} views iterate over a range of vertices, returning a \tcode{vertex_descriptor} on each iteration. +\tcode{vertexlist} views iterate over a range of vertices, returning a \tcode{vertex_info} on each iteration. Table \ref{tab:vertexlist} shows the vertexlist functions overloads and their return values. \tcode{first} and \tcode{last} are vertex iterators. \tcode{vertexlist} views require a \tcode{vvf(u)} function, and the \tcode{basic_vertexlist} views require a \tcode{vvf(uid)} function. @@ -254,19 +254,19 @@ \subsection{vertexlist Views} \hline \textbf{Example} & \textbf{Return} \\ \hline - \tcode{for(auto\&\& [uid,u] : vertexlist(g))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,u,val] : vertexlist(g,vvf))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,u] : vertexlist(g,first,last))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,u,val] : vertexlist(g,first,last,vvf))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,u] : vertexlist(g,vr))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,u,val] : vertexlist(g,vr,vvf))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [uid,u] : vertexlist(g))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,u,val] : vertexlist(g,vvf))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,u] : vertexlist(g,first,last))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,u,val] : vertexlist(g,first,last,vvf))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,u] : vertexlist(g,vr))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,u,val] : vertexlist(g,vr,vvf))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [uid] : basic_vertexlist(g))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,val] : basic_vertexlist(g,vvf))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid] : basic_vertexlist(g,first,last))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,val] : basic_vertexlist(g,first,last,vvf))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid] : basic_vertexlist(g,vr))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [uid,val] : basic_vertexlist(g,vr,vvf))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [uid] : basic_vertexlist(g))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,val] : basic_vertexlist(g,vvf))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid] : basic_vertexlist(g,first,last))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,val] : basic_vertexlist(g,first,last,vvf))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid] : basic_vertexlist(g,vr))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [uid,val] : basic_vertexlist(g,vr,vvf))} & \tcode{vertex_info} \\ \hline \end{tabular}} \caption{\tcode{vertexlist} View Functions} @@ -275,7 +275,7 @@ \subsection{vertexlist Views} \end{table} \subsection{incidence Views} -\tcode{incidence} views iterate over a range of adjacent edges of a vertex, returning a \tcode{edge_descriptor} on each iteration. +\tcode{incidence} views iterate over a range of adjacent edges of a vertex, returning a \tcode{edge_info} on each iteration. Table \ref{tab:incidence} shows the \tcode{incidence} function overloads and their return values. Since the source vertex \tcode{u} is available when calling an \tcode{incidence} function, there's no need to include sourced versions of the function to include \tcode{source_id} in the output. @@ -289,11 +289,11 @@ \subsection{incidence Views} \hline \textbf{Example} & \textbf{Return} \\ \hline - \tcode{for(auto\&\& [vid,uv] : incidence(g,uid))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,uv,val] : incidence(g,uid,evf))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [vid,uv] : incidence(g,uid))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,uv,val] : incidence(g,uid,evf))} & \tcode{edge_info} \\ \hdashline - \tcode{for(auto\&\& [vid] : basic_incidence(g,uid))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_incidence(g,uid,evf))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [vid] : basic_incidence(g,uid))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_incidence(g,uid,evf))} & \tcode{edge_info} \\ \hline \end{tabular}} \caption{\tcode{incidence} View Functions} @@ -302,7 +302,7 @@ \subsection{incidence Views} \end{table} \subsection{neighbors Views} -\tcode{neighbors} views iterate over a range of edges for a vertex, returning a \tcode{vertex_descriptor} of each neighboring target vertex on each iteration. +\tcode{neighbors} views iterate over a range of edges for a vertex, returning a \tcode{vertex_info} of each neighboring target vertex on each iteration. Table \ref{tab:neighbors} shows the \tcode{neighbors} function overloads and their return values. Since the source vertex \tcode{u} is available when calling a \tcode{neighbors} function, there's no need to include sourced versions of the function to include \tcode{source_id} in the output. @@ -316,11 +316,11 @@ \subsection{neighbors Views} \hline \textbf{Example} & \textbf{Return} \\ \hline - \tcode{for(auto\&\& [vid,v] : neighbors(g,uid))} & \tcode{neighbor_descriptor} \\ - \tcode{for(auto\&\& [vid,v,val] : neighbors(g,uid,vvf))} & \tcode{neighbor_descriptor} \\ + \tcode{for(auto\&\& [vid,v] : neighbors(g,uid))} & \tcode{neighbor_info} \\ + \tcode{for(auto\&\& [vid,v,val] : neighbors(g,uid,vvf))} & \tcode{neighbor_info} \\ \hdashline - \tcode{for(auto\&\& [vid] : basic_neighbors(g,uid))} & \tcode{neighbor_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_neighbors(g,uid,vvf))} & \tcode{neighbor_descriptor} \\ + \tcode{for(auto\&\& [vid] : basic_neighbors(g,uid))} & \tcode{neighbor_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_neighbors(g,uid,vvf))} & \tcode{neighbor_info} \\ \hline \end{tabular}} \caption{\tcode{neighbors} View Functions} @@ -329,7 +329,7 @@ \subsection{neighbors Views} \end{table} \subsection{edgelist Views} -\tcode{edgelist} views iterate over all edges for all vertices, returning a \tcode{edge_descriptor} on each iteration. +\tcode{edgelist} views iterate over all edges for all vertices, returning a \tcode{edge_info} on each iteration. Table \ref{tab:edgelist} shows the \tcode{edgelist} function overloads and their return values. \tcode{edgelist} views require a \tcode{evf(uv)} function, and \tcode{basic_edgelist} views require a \tcode{evf(eid)} function. @@ -344,11 +344,11 @@ \subsection{edgelist Views} \hline \textbf{Example} & \textbf{Return} \\ \hline - \tcode{for(auto\&\& [uid,vid,uv] : edgelist(g))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,uv,val] : edgelist(g,evf))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid,uv] : edgelist(g))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,uv,val] : edgelist(g,evf))} & \tcode{edge_info} \\ \hdashline - \tcode{for(auto\&\& [uid,uv] : basic_edgelist(g))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,uv,val] : basic_edgelist(g,evf))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,uv] : basic_edgelist(g))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,uv,val] : basic_edgelist(g,evf))} & \tcode{edge_info} \\ \hline \end{tabular}} \caption{\tcode{edgelist} View Functions} @@ -412,7 +412,7 @@ \subsection{Common Types and Functions for ``Search'' } \subsection{Depth First Search Views} -Depth First Search views iterate over the vertices and edges from a given seed vertex, returning a \tcode{vertex_descriptor} or \tcode{edge_descriptor} on each iteration when it is first encountered, depending on the function used. +Depth First Search views iterate over the vertices and edges from a given seed vertex, returning a \tcode{vertex_info} or \tcode{edge_info} on each iteration when it is first encountered, depending on the function used. Table \ref{tab:dfs} shows the functions and their return values. The \tcode{alloc} parameter shown in the following examples is optional and defaults to \tcode{std::allocator}. It is used for containers @@ -425,7 +425,7 @@ \subsection{Depth First Search Views} % basic_edges_dfs(g,seed,evf) implies the use of Sourced type internally to have source_id in the call call to evf(eid) \phil{Consider adding an enum bitset of events matching the visitor events, and creating Overloads - that accept the bitset. The returned type would be a subclass of \tcode{vertex_descriptor} or \tcode{edge_descriptor} + that accept the bitset. The returned type would be a subclass of \tcode{vertex_info} or \tcode{edge_info} and would add the event bitset as a final member value, with the bit set for the event . This could offer a similar benefit as coroutines.} @@ -436,23 +436,23 @@ \subsection{Depth First Search Views} \hline \textbf{Example} & \textbf{Return} \\ \hline - \tcode{for(auto\&\& [vid,v] : vertices_dfs(g,seed,alloc))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [vid,v,val] : vertices_dfs(g,seed,vvf,alloc))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [vid,v] : vertices_dfs(g,seed,alloc))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [vid,v,val] : vertices_dfs(g,seed,vvf,alloc))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [vid,uv] : edges_dfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,uv,val] : edges_dfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [vid,uv] : edges_dfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,uv,val] : edges_dfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hdashline - \tcode{for(auto\&\& [uid,vid,uv] : sourced_edges_dfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,uv,val] : sourced_edges_dfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid,uv] : sourced_edges_dfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,uv,val] : sourced_edges_dfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hline - \tcode{for(auto\&\& [vid] : basic_vertices_dfs(g,seed,alloc))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_vertices_dfs(g,seed,vvf,alloc))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [vid] : basic_vertices_dfs(g,seed,alloc))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_vertices_dfs(g,seed,vvf,alloc))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [vid] : basic_edges_dfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_edges_dfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ % requires source_ for evf(eid) + \tcode{for(auto\&\& [vid] : basic_edges_dfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_edges_dfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ % requires source_ for evf(eid) \hdashline - \tcode{for(auto\&\& [uid,vid] : basic_sourced_edges_dfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,val] : basic_sourced_edges_dfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid] : basic_sourced_edges_dfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,val] : basic_sourced_edges_dfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hline \end{tabular}} \caption{depth\_first\_search View Functions} @@ -463,8 +463,8 @@ \subsection{Depth First Search Views} \subsection{Breadth First Search Views} \phil{NetworkX provides an optional depth\_limit parameter for bfs. Add? } -Breadth First Search views iterate over the vertices and edges from a given seed vertex, returning a \tcode{vertex_descriptor} -or \tcode{edge_descriptor} on each iteration when it is first encountered, depending on the function used. +Breadth First Search views iterate over the vertices and edges from a given seed vertex, returning a \tcode{vertex_info} +or \tcode{edge_info} on each iteration when it is first encountered, depending on the function used. Table \ref{tab:bfs} shows the functions and their return values. The \tcode{alloc} parameter shown in the following examples is optional and defaults to \tcode{std::allocator}. It is used for containers @@ -479,7 +479,7 @@ \subsection{Breadth First Search Views} % basic_edges_bfs(g,seed,evf) implies the use of Sourced type internally to have source_id in the call call to evf(eid) \phil{Consider adding an enum bitset of events matching the visitor events, and creating Overloads - that accept the bitset. The returned type would be a subclass of \tcode{vertex_descriptor} or \tcode{edge_descriptor} + that accept the bitset. The returned type would be a subclass of \tcode{vertex_info} or \tcode{edge_info} and would add the event bitset as a final member value, with the bit set for the event . This could offer a similar benefit as coroutines.} @@ -491,23 +491,23 @@ \subsection{Breadth First Search Views} \textbf{Example} & \textbf{Return} \\ \hline \hdashline - \tcode{for(auto\&\& [vid,v] : vertices_bfs(g,seed,alloc))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [vid,v,val] : vertices_bfs(g,seed,vvf,alloc))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [vid,v] : vertices_bfs(g,seed,alloc))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [vid,v,val] : vertices_bfs(g,seed,vvf,alloc))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [vid,uv] : edges_bfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,uv,val] : edges_bfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [vid,uv] : edges_bfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,uv,val] : edges_bfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hdashline - \tcode{for(auto\&\& [uid,vid,uv] : sourced_edges_bfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,uv,val] : sourced_edges_bfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid,uv] : sourced_edges_bfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,uv,val] : sourced_edges_bfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hline - \tcode{for(auto\&\& [vid] : basic_vertices_bfs(g,seed,alloc))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_vertices_bfs(g,seed,vvf,alloc))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [vid] : basic_vertices_bfs(g,seed,alloc))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_vertices_bfs(g,seed,vvf,alloc))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [vid] : basic_edges_bfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_edges_bfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ % requires source_ for evf(eid) + \tcode{for(auto\&\& [vid] : basic_edges_bfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_edges_bfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ % requires source_ for evf(eid) \hdashline - \tcode{for(auto\&\& [uid,vid] : basic_sourced_edges_bfs(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,val] : basic_sourced_edges_bfs(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid] : basic_sourced_edges_bfs(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,val] : basic_sourced_edges_bfs(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hline \end{tabular}} \caption{breadth\_first\_search View Functions} @@ -516,8 +516,8 @@ \subsection{Breadth First Search Views} \end{table} \subsection{Topological Sort Views} -Topological Sort views iterate over the vertices and edges from a given seed vertex, returning a \tcode{vertex_descriptor} or -\tcode{edge_descriptor} on each iteration when it is first encountered, depending on the function used. +Topological Sort views iterate over the vertices and edges from a given seed vertex, returning a \tcode{vertex_info} or +\tcode{edge_info} on each iteration when it is first encountered, depending on the function used. Table \ref{tab:topo_sort} shows the functions and their return values. The \tcode{alloc} parameter shown in the following examples is optional and defaults to \tcode{std::allocator}. It is used for containers @@ -529,7 +529,7 @@ \subsection{Topological Sort Views} % basic_edges_topological_sort(g,seed,evf) implies the use of Sourced type internally to have source_id in the call call to evf(eid) \phil{Consider adding an enum bitset of events matching the visitor events, and creating Overloads - that accept the bitset. The returned type would be a subclass of \tcode{vertex_descriptor} or \tcode{edge_descriptor} + that accept the bitset. The returned type would be a subclass of \tcode{vertex_info} or \tcode{edge_info} and would add the event bitset as a final member value, with the bit set for the event . This could offer a similar benefit as coroutines.} @@ -540,23 +540,23 @@ \subsection{Topological Sort Views} \hline \textbf{Example} & \textbf{Return} \\ \hline - \tcode{for(auto\&\& [vid,v] : vertices_topological_sort(g,seed,alloc))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [vid,v,val] : vertices_topological_sort(g,seed,vvf,alloc))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [vid,v] : vertices_topological_sort(g,seed,alloc))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [vid,v,val] : vertices_topological_sort(g,seed,vvf,alloc))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [vid,uv] : edges_topological_sort(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,uv,val] : edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [vid,uv] : edges_topological_sort(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,uv,val] : edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hdashline - \tcode{for(auto\&\& [uid,vid,uv] : sourced_edges_topological_sort(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,uv,val] : sourced_edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid,uv] : sourced_edges_topological_sort(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,uv,val] : sourced_edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hline - \tcode{for(auto\&\& [vid] : basic_vertices_topological_sort(g,seed,alloc))} & \tcode{vertex_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_vertices_topological_sort(g,seed,vvf,alloc))} & \tcode{vertex_descriptor} \\ + \tcode{for(auto\&\& [vid] : basic_vertices_topological_sort(g,seed,alloc))} & \tcode{vertex_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_vertices_topological_sort(g,seed,vvf,alloc))} & \tcode{vertex_info} \\ \hdashline - \tcode{for(auto\&\& [vid] : basic_edges_topological_sort(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [vid,val] : basic_edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ % requires source_ for evf(eid) + \tcode{for(auto\&\& [vid] : basic_edges_topological_sort(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [vid,val] : basic_edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_info} \\ % requires source_ for evf(eid) \hdashline - \tcode{for(auto\&\& [uid,vid] : basic_sourced_edges_topological_sort(g,seed,alloc))} & \tcode{edge_descriptor} \\ - \tcode{for(auto\&\& [uid,vid,val] : basic_sourced_edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_descriptor} \\ + \tcode{for(auto\&\& [uid,vid] : basic_sourced_edges_topological_sort(g,seed,alloc))} & \tcode{edge_info} \\ + \tcode{for(auto\&\& [uid,vid,val] : basic_sourced_edges_topological_sort(g,seed,evf,alloc))} & \tcode{edge_info} \\ \hline \end{tabular}} \caption{topological\_sort View Functions} diff --git a/D3130_Container_Interface/tex/container_interface.tex b/D3130_Container_Interface/tex/container_interface.tex index dde9b15..4764231 100644 --- a/D3130_Container_Interface/tex/container_interface.tex +++ b/D3130_Container_Interface/tex/container_interface.tex @@ -443,7 +443,7 @@ \subsection{Functions} % [](edge_reference_t) \{return source_id(e)==uid && target_id(e)==vid\} \subsection{Determining the source\_id, target\_id and edge\_value types} -Special patterns are recognized for edges based on the \tcode{tuple} and \tcode{edge_descriptor} types. When they are used the \tcode{source_id(e)}, +Special patterns are recognized for edges based on the \tcode{tuple} and \tcode{edge_info} types. When they are used the \tcode{source_id(e)}, \tcode{target_id(e)} and \tcode{edge_value} functions will be defined automatically. The \tcode{tuple} patterns are @@ -452,10 +452,10 @@ \subsection{Determining the source\_id, target\_id and edge\_value types} \item \tcode{tuple} for \tcode{source_id(e)}, \tcode{target_id(e)} and \tcode{edge_value(e)} respectively. \end{itemize} -The \tcode{edge_descriptor} patterns are +The \tcode{edge_info} patterns are \begin{itemize} - \item \tcode{edge_descriptor} with \tcode{source_id(e)} and \tcode{target_id(e)}. - \item \tcode{edge_descriptor} with \tcode{source_id(e)}, \tcode{target_id(e)} and \tcode{edge_value(e)}. + \item \tcode{edge_info} with \tcode{source_id(e)} and \tcode{target_id(e)}. + \item \tcode{edge_info} with \tcode{source_id(e)}, \tcode{target_id(e)} and \tcode{edge_value(e)}. \end{itemize} In all other cases the functions will need to be overridden for the edge type. diff --git a/D3130_Container_Interface/tex/revision.tex b/D3130_Container_Interface/tex/revision.tex index 5d30d36..cc16fcd 100644 --- a/D3130_Container_Interface/tex/revision.tex +++ b/D3130_Container_Interface/tex/revision.tex @@ -44,3 +44,9 @@ \subsection*{\paperno r2} \item Added description of why the return type isn't validated for \tcode{target_id(g,uv)} in the \tcode{basic_targeted_edge} concept. \end{itemize} + +\subsection*{\paperno r3} + +\begin{itemize} + \item Rename \tcode{descriptor} structs to \tcode{info} structs in preparation for new BGL-like descriptors. +\end{itemize} diff --git a/D3131_Containers/src/compressed_graph_gvoid.hpp b/D3131_Containers/src/compressed_graph_gvoid.hpp index 1179c60..3eefeb3 100644 --- a/D3131_Containers/src/compressed_graph_gvoid.hpp +++ b/D3131_Containers/src/compressed_graph_gvoid.hpp @@ -37,7 +37,7 @@ class compressed_graph const PartRng& partition_start_ids = vector(), const Alloc& alloc = Alloc()); - // initializer list using edge\_descriptor + // initializer list using edge\_info constexpr compressed_graph(const initializer_list>& ilist, const Alloc& alloc = Alloc()); }; diff --git a/D3131_Containers/tex/containers.tex b/D3131_Containers/tex/containers.tex index 5e681bc..ebfed84 100644 --- a/D3131_Containers/tex/containers.tex +++ b/D3131_Containers/tex/containers.tex @@ -233,10 +233,10 @@ \subsubsection{Using Standard Containers for an Edgelist} } \end{lstlisting} -An alternative is to use the \tcode{edge_descriptor} used in this proposal. Notice that the only difference +An alternative is to use the \tcode{edge_info} used in this proposal. Notice that the only difference is the definition of the edgelist type. All other code is identical to the previous example. \begin{lstlisting} - using EL = vector>; + using EL = vector>; using E = std::ranges::range_value_t; EL el{{1, 2, 11.1}, {1, 4, 22.2}, {2, 3, 3.33}, {2, 4, 4.44}}; for (auto&& e : el) { diff --git a/D3131_Containers/tex/revision.tex b/D3131_Containers/tex/revision.tex index 2dc12e8..91a2241 100644 --- a/D3131_Containers/tex/revision.tex +++ b/D3131_Containers/tex/revision.tex @@ -27,4 +27,11 @@ \subsection*{\paperno r2} \item Add the edgelist as an abstract data structure as a peer to the adjacency list. A section on edgelists has been added to Using Existing Data Structures. \item Add \tcode{is_directed} item in the feature summary box to \tcode{compressed_graph}. + \item Rename \tcode{descriptor} structs to \tcode{info} structs in preparation for new BGL-like descriptors. +\end{itemize} + +\subsection*{\paperno r3} + +\begin{itemize} + \item Rename \tcode{descriptor} structs to \tcode{info} structs in preparation for new BGL-like descriptors. \end{itemize} diff --git a/D9903/tex/operators.tex b/D9903/tex/operators.tex index c156c65..e7e1cc5 100644 --- a/D9903/tex/operators.tex +++ b/D9903/tex/operators.tex @@ -69,7 +69,7 @@ \section{Sort} \end{table} \phil{Removed comments that said "The same API extends for \lstinline{edgelist}" for all Sort operators. The current - view is that an edgelist is the result of a std::ranges::transform() with a value type of an edge\_descriptor. + view is that an edgelist is the result of a std::ranges::transform() with a value type of an edge\_info. Since it's not an adacency\_list they won't work as-is. Are overloads needed?} \subsection{Sort by Source Vertex} diff --git a/tex/conventions.tex b/tex/conventions.tex index 748fc6a..9e61a0d 100644 --- a/tex/conventions.tex +++ b/tex/conventions.tex @@ -25,7 +25,7 @@ \section{Naming Conventions} \tcode{VI} & \tcode{vertex_iterator_t} & \tcode{ui,vi} & Vertex Iterator. \tcode{ui} is the source (or only) vertex. \\ & & \tcode{first,last} & \tcode{vi} is the target vertex. \\ \tcode{VVF} & & \tcode{vvf} & Vertex Value Function: vvf(u) $\rightarrow$ vertex value, or vvf(uid) $\rightarrow$ vertex value, depending on requirements of the consume algorithm or view. \\ - \tcode{VProj} & & \tcode{vproj} & Vertex descriptor projection function: \tcode{vproj(x)} $\rightarrow$ \tcode{vertex_descriptor}. \\ + \tcode{VProj} & & \tcode{vproj} & Vertex info projection function: \tcode{vproj(x)} $\rightarrow$ \tcode{vertex_info}. \\ \hdashline & \tcode{partition_id_t} & \tcode{pid} & Partition id. \\ & & \tcode{P} & Number of partitions. \\ @@ -37,7 +37,7 @@ \section{Naming Conventions} \tcode{ER} & \tcode{vertex_edge_range_t} & & Edge Range for edges of a vertex \\ \tcode{EI} & \tcode{vertex_edge_iterator_t} & \tcode{uvi,vwi} & Edge Iterator for an edge of a vertex. \tcode{uvi} is an iterator for an edge from vertices \tcode{u} to \tcode{v}. \tcode{vwi} is an iterator for an edge from vertices \tcode{v} to \tcode{w}. \\ \tcode{EVF} & & \tcode{evf} & Edge Value Function: evf(uv) $\rightarrow$ edge value, or evf(eid) $\rightarrow$ edge value, depending on the requirements of the consuming algorithm or view. \\ - \tcode{EProj} & & \tcode{eproj} & Edge descriptor projection function: \tcode{eproj(x)} $\rightarrow$ \tcode{edge_descriptor}. \\ + \tcode{EProj} & & \tcode{eproj} & Edge info projection function: \tcode{eproj(x)} $\rightarrow$ \tcode{edge_info}. \\ \hline \end{tabular}} \caption{Naming Conventions for Types and Variables}