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

Raw File Download

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
content badge
swh:1:cnt:c81087d24247971c838fd06051ced4588327da9a

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
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
/*
 * ============================================================================
 *
 *        Authors:  Prashant Pandey <ppandey@cs.stonybrook.edu>
 *                  Rob Johnson <robj@vmware.com>   
 *
 * ============================================================================
 */

#ifndef _GQF_FILE_H_
#define _GQF_FILE_H_

#include <inttypes.h>
#include <pthread.h>
#include <stdbool.h>

#include "gqf.h"

#ifdef __cplusplus
extern "C" {
#endif

	/* Initialize a file-backed (i.e. mmapped) CQF at "filename". */
	bool qf_initfile(QF *qf, uint64_t nslots, uint64_t key_bits, uint64_t
									value_bits, enum qf_hashmode hash, uint32_t seed, const char*
									filename);

#define QF_USEFILE_READ_ONLY (0x01)
#define QF_USEFILE_READ_WRITE (0x02)

	/* mmap existing cqf in "filename" into "qf". */
	uint64_t qf_usefile(QF* qf, const char* filename, int flag);

	/* Resize the QF to the specified number of slots.  Uses mmap to
	 * initialize the new file, and calls munmap() on the old memory.
	 * Return value:
	 *    >= 0: number of keys copied during resizing.
	 * */
	int64_t qf_resize_file(QF *qf, uint64_t nslots);

	bool qf_closefile(QF* qf);

	bool qf_deletefile(QF* qf);

	/* write data structure of to the disk */
	uint64_t qf_serialize(const QF *qf, const char *filename);

	/* read data structure off the disk */
	uint64_t qf_deserialize(QF *qf, const char *filename);

  /* This wraps qfi_next, using madvise(DONTNEED) to reduce our RSS.
     Only valid on mmapped QFs, i.e. cqfs from qf_initfile and
     qf_usefile. */
  int qfi_next_madvise(QFi *qfi);

  /* Furthermore, you can call this immediately after constructing the
     qfi to call madvise(DONTNEED) on the portion of the cqf up to the
     first element visited by the qfi. */
  int qfi_initial_madvise(QFi *qfi);
  
#ifdef __cplusplus
}
#endif

#endif // _GQF_FILE_H_

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