Class GraphOptions
This class is only needed by S2Builder::Layer implementations.  A layer is
 responsible for assembling an S2Builder::Graph of snapped edges into the
 desired output format (e.g., an S2Polygon).  The GraphOptions class allows
 each Layer type to specify requirements on its input graph: for example, if
			
			
			Constructors
				
					
					
						| Name | Description | 
					
					
						
							
								this
							
							(edge_type, degenerate_edges, duplicate_edges, sibling_pairs)
						 | 
						All S2Builder::Layer subtypes should specify GraphOptions explicitly
 using this constructor, rather than relying on default values.
 | 
					
					
						
							
								this
							
							()
						 | 
						The default options specify that all edges should be kept, since this
 produces the least surprising output and makes it easier to diagnose the
 problem when an option is left unspecified.
 | 
					
				
			
			Methods
				
					
					
						| Name | Description | 
					
					
						
							
								allowVertexFiltering
							
							()
						 | 
						This is a specialized option that is only needed by clients want to work
 with the graphs for multiple layers at the same time (e.g., in order to
 check whether the same edge is present in two different graphs).  [Note
 that if you need to do this, usually it is easier just to build a single
 graph with suitable edge labels.]
 | 
					
					
						
							
								edgeType
							
							()
						 | 
						Specifies whether the S2Builder input edges should be treated as
 undirected.  If true, then all input edges are duplicated into pairs
 consisting of an edge and a sibling (reverse) edge.  The layer
 implementation is responsible for ensuring that exactly one edge from
 each pair is used in the output, i.e. *only half* of the graph edges will
 be used.  (Note that some values of the sibling_pairs() option
 automatically take care of this issue by removing half of the edges and
 changing edge_type() to DIRECTED.)
 | 
					
				
			
			Enums
				
					
					
						| Name | Description | 
					
					
						
							
								DegenerateEdges
							
						 | 
						Controls how degenerate edges (i.e., an edge from a vertex to itself) are
 handled.  Such edges may be present in the input, or they may be created
 when both endpoints of an edge are snapped to the same output vertex.
 The options available are:
 | 
					
					
						
							
								DuplicateEdges
							
						 | 
						Controls how duplicate edges (i.e., edges that are present multiple
 times) are handled.  Such edges may be present in the input, or they can
 be created when vertices are snapped together.  When several edges are
 merged, the result is a single edge labelled with all of the original
 input edge ids.
 | 
					
					
						
							
								SiblingPairs
							
						 | 
						Controls how sibling edge pairs (i.e., pairs consisting of an edge and
 its reverse edge) are handled.  Layer types that define an interior
 (e.g., polygons) normally discard such edge pairs since they do not
 affect the result (i.e., they define a "loop" with no interior).  The
 various options include:
 | 
					
				
			
			DegenerateEdges
:DISCARD is specified, then S2Builder will ensure that all
 degenerate edges are removed before passing the graph to the S2Layer::Build
 method.