Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Impressum simple_list.c

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * Simple list facilities for frontend code
 *
 * Data structures for simple lists of OIDs and strings.  The support for
 * these is very primitive compared to the backend's List facilities, but
 * it's all we need in, eg, pg_dump.
 *
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/fe_utils/simple_list.c
 *
 *-------------------------------------------------------------------------
 */

#include "postgres_fe.h"

#include "fe_utils/simple_list.h"


/*
 * Append an OID to the list.
 */

void
simple_oid_list_append(SimpleOidList *list, Oid val)
{
 SimpleOidListCell *cell;

 cell = (SimpleOidListCell *) pg_malloc(sizeof(SimpleOidListCell));
 cell->next = NULL;
 cell->val = val;

 if (list->tail)
  list->tail->next = cell;
 else
  list->head = cell;
 list->tail = cell;
}

/*
 * Is OID present in the list?
 */

bool
simple_oid_list_member(SimpleOidList *list, Oid val)
{
 SimpleOidListCell *cell;

 for (cell = list->head; cell; cell = cell->next)
 {
  if (cell->val == val)
   return true;
 }
 return false;
}

/*
 * Append a string to the list.
 *
 * The given string is copied, so it need not survive past the call.
 */

void
simple_string_list_append(SimpleStringList *list, const char *val)
{
 SimpleStringListCell *cell;

 cell = (SimpleStringListCell *)
  pg_malloc(offsetof(SimpleStringListCell, val) + strlen(val) + 1);

 cell->next = NULL;
 cell->touched = false;
 strcpy(cell->val, val);

 if (list->tail)
  list->tail->next = cell;
 else
  list->head = cell;
 list->tail = cell;
}

/*
 * Is string present in the list?
 *
 * If found, the "touched" field of the first match is set true.
 */

bool
simple_string_list_member(SimpleStringList *list, const char *val)
{
 SimpleStringListCell *cell;

 for (cell = list->head; cell; cell = cell->next)
 {
  if (strcmp(cell->val, val) == 0)
  {
   cell->touched = true;
   return true;
  }
 }
 return false;
}

/*
 * Destroy an OID list
 */

void
simple_oid_list_destroy(SimpleOidList *list)
{
 SimpleOidListCell *cell;

 cell = list->head;
 while (cell != NULL)
 {
  SimpleOidListCell *next;

  next = cell->next;
  pg_free(cell);
  cell = next;
 }
}

/*
 * Destroy a string list
 */

void
simple_string_list_destroy(SimpleStringList *list)
{
 SimpleStringListCell *cell;

 cell = list->head;
 while (cell != NULL)
 {
  SimpleStringListCell *next;

  next = cell->next;
  pg_free(cell);
  cell = next;
 }
}

/*
 * Find first not-touched list entry, if there is one.
 */

const char *
simple_string_list_not_touched(SimpleStringList *list)
{
 SimpleStringListCell *cell;

 for (cell = list->head; cell; cell = cell->next)
 {
  if (!cell->touched)
   return cell->val;
 }
 return NULL;
}

/*
 * Append a pointer to the list.
 *
 * Caller must ensure that the pointer remains valid.
 */

void
simple_ptr_list_append(SimplePtrList *list, void *ptr)
{
 SimplePtrListCell *cell;

 cell = (SimplePtrListCell *) pg_malloc(sizeof(SimplePtrListCell));
 cell->next = NULL;
 cell->ptr = ptr;

 if (list->tail)
  list->tail->next = cell;
 else
  list->head = cell;
 list->tail = cell;
}

/*
 * Destroy only pointer list and not the pointed-to element
 */

void
simple_ptr_list_destroy(SimplePtrList *list)
{
 SimplePtrListCell *cell;

 cell = list->head;
 while (cell != NULL)
 {
  SimplePtrListCell *next;

  next = cell->next;
  pg_free(cell);
  cell = next;
 }
}

Messung V0.5 in Prozent
C=96 H=73 G=85

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:  (vorverarbeitet am  2026-08-04) ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002