Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/NSchertler/GeneralizedMotorcycleGraph
23 June 2024, 01:59:38 UTC
  • Code
  • Branches (4)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/deploy-linux
    • refs/heads/deploy-osx
    • refs/heads/deploy-windows
    • refs/heads/master
    No releases to show
  • 505fc29
  • /
  • include
  • /
  • Singularity.h
Raw File Download Save again
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:1cf329c1a1f4e6abbab1099dc163d45d2593bfbb
origin badgedirectory badge
swh:1:dir:5e35bfc4d392295c5164cb832f2bf27465c5dab6
origin badgerevision badge
swh:1:rev:a34738fe34a051760b4042dc9d740231e511fec1
origin badgesnapshot badge
swh:1:snp:a981ea1718c19c4d9cde9d807965fd6d38bebcd2

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Tip revision: a34738fe34a051760b4042dc9d740231e511fec1 authored by Nico Schertler on 31 October 2020, 07:04:57 UTC
Updated access token
Tip revision: a34738f
Singularity.h
#pragma once

#include "common.h"

//Represents a singular vertex
struct SingularityInfo
{
	SingularityInfo(HEMesh::VertexHandle v, int valenceDefect)
		: vertexHandle(v), valenceDefect(valenceDefect), correspondingRegion((size_t)-1)
	{ }

	SingularityInfo(HEMesh::VertexHandle v, HEMesh::HalfedgeHandle contextOutgoingBoundary, int valenceDefect)
		: vertexHandle(v), contextOutgoingBoundaryEdge(contextOutgoingBoundary), valenceDefect(valenceDefect), correspondingRegion((size_t)-1)
	{ }

	//The vertex
	HEMesh::VertexHandle vertexHandle;

	//Only used for non-manifold vertices; the first outgoing edge in the respective surface patch.
	//This is a boundary halfedge
	HEMesh::HalfedgeHandle contextOutgoingBoundaryEdge;

	//The valence defect of the singularity (valence - 4)
	int valenceDefect;

	//index of the fenced region that this singularity belongs to or (size_t)-1
	size_t correspondingRegion;
};

//Represents a vertex that acts as a singularity (either an original singularity or an arbitrary vertex inside a fenced region)
class MetaSingularity
{
public:	
	//Priority of motorcycles that are generated from this meta singularity
	bool highPriority;

	//Returns the path of the motorcycle with the given orientation
	const std::vector<HEMesh::HalfedgeHandle>& GetEmanatingMotorcycle(int orientation) const;

	//Returns the path of the motorcycle with the given orientation. If the list of emanating
	//motorcycles is too short, it is extended.
	std::vector<HEMesh::HalfedgeHandle>& GetEmanatingMotorcycle(int orientation);

	//Sets if a given emanating motorcycle is active.
	void SetEmanatingMotorcycleActive(int orientation, bool active);

	//Returns if a given emanating motorcycle is active.
	bool GetEmanatingMotorcycleActive(int orientation) const;

	//Returns the orientation of the emanating motorcycle whose first halfedge is h
	//or (size_t)-1 if there is no such motorcycle.
	size_t FindOutgoingMotorcycle(HEMesh::HalfedgeHandle h) const;

	//Returns the number of emanating motorcycles.
	size_t Degree() const;

	//Adds a new emanating motorcycle at the end of this meta singularity.
	void AddMotorcycle(HEMesh::HalfedgeHandle direction, bool active);

	//Adds a new virtual motorcycle with no path at the end of this meta singularity. This
	//is only used to ensure correct ordering.
	void AddEmptyMotorcycle();

	//Adds a new emanating motorcycle at the beginning of this meta singularity.
	void AddMotorcycleAtFront(HEMesh::HalfedgeHandle direction, bool active);

private:
	//List of motorcycles that emanate from this meta singularity, one for each orientation.
	//Can be empty for a single edge orientation if the singuarity is on the boundary.
	//Sorted in counter-clockwise order. The second pair item determines if the motorcycle
	//is active.
	std::vector<std::pair<std::vector<HEMesh::HalfedgeHandle>, bool>> emanatingMotorcycles;
};

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API