mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-11-04 08:04:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* -*- Mode: c; c-basic-offset: 2 -*-
 | 
						|
 *
 | 
						|
 * rdf_hash.c - RDF Hash Cursor Implementation
 | 
						|
 *
 | 
						|
 * Copyright (C) 2000-2008, David Beckett http://www.dajobe.org/
 | 
						|
 * Copyright (C) 2000-2004, University of Bristol, UK http://www.bristol.ac.uk/
 | 
						|
 * 
 | 
						|
 * This package is Free Software and part of Redland http://librdf.org/
 | 
						|
 * 
 | 
						|
 * It is licensed under the following three licenses as alternatives:
 | 
						|
 *   1. GNU Lesser General Public License (LGPL) V2.1 or any newer version
 | 
						|
 *   2. GNU General Public License (GPL) V2 or any newer version
 | 
						|
 *   3. Apache License, V2.0 or any newer version
 | 
						|
 * 
 | 
						|
 * You may not use this file except in compliance with at least one of
 | 
						|
 * the above three licenses.
 | 
						|
 * 
 | 
						|
 * See LICENSE.html or LICENSE.txt at the top of this package for the
 | 
						|
 * complete terms and further detail along with the license texts for
 | 
						|
 * the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively.
 | 
						|
 * 
 | 
						|
 * 
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
#ifdef HAVE_CONFIG_H
 | 
						|
#include <rdf_config.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef WIN32
 | 
						|
#include <win32_rdf_config.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdarg.h>
 | 
						|
#include <ctype.h>
 | 
						|
#include <sys/types.h>
 | 
						|
 | 
						|
#include <redland.h>
 | 
						|
 | 
						|
 | 
						|
/* private structure */
 | 
						|
struct librdf_hash_cursor_s {
 | 
						|
  librdf_hash *hash;
 | 
						|
  void *context;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * librdf_new_hash_cursor:
 | 
						|
 * @hash: the hash object
 | 
						|
 *
 | 
						|
 * Constructor - Create a new #librdf_hash_cursor over a #librdf_hash.
 | 
						|
 *
 | 
						|
 * Return value: a new #librdf_hash_cursor or NULL on failure
 | 
						|
 **/
 | 
						|
librdf_hash_cursor*
 | 
						|
librdf_new_hash_cursor (librdf_hash* hash) 
 | 
						|
{
 | 
						|
  librdf_hash_cursor* cursor;
 | 
						|
  void *cursor_context;
 | 
						|
 | 
						|
  cursor=(librdf_hash_cursor*)LIBRDF_CALLOC(librdf_hash_cursor, 1, 
 | 
						|
                                            sizeof(librdf_hash_cursor));
 | 
						|
  if(!cursor)
 | 
						|
    return NULL;
 | 
						|
 | 
						|
  cursor_context=(char*)LIBRDF_CALLOC(librdf_hash_cursor_context, 1,
 | 
						|
                                      hash->factory->cursor_context_length);
 | 
						|
  if(!cursor_context) {
 | 
						|
    LIBRDF_FREE(librdf_hash_cursor, cursor);
 | 
						|
    return NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  cursor->hash=hash;
 | 
						|
  cursor->context=cursor_context;
 | 
						|
 | 
						|
  if(hash->factory->cursor_init(cursor->context, hash->context)) {
 | 
						|
    librdf_free_hash_cursor(cursor);
 | 
						|
    cursor=NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  return cursor;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * librdf_free_hash_cursor:
 | 
						|
 *
 | 
						|
 * Destructor - destroy a #librdf_hash_cursor object.
 | 
						|
 *
 | 
						|
 * @cursor: hash cursor object
 | 
						|
 **/
 | 
						|
void
 | 
						|
librdf_free_hash_cursor (librdf_hash_cursor* cursor) 
 | 
						|
{
 | 
						|
  if(cursor->context) {
 | 
						|
    cursor->hash->factory->cursor_finish(cursor->context);
 | 
						|
    LIBRDF_FREE(librdf_hash_cursor_context, cursor->context);
 | 
						|
  }
 | 
						|
 | 
						|
  LIBRDF_FREE(librdf_hash_cursor, cursor);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int
 | 
						|
librdf_hash_cursor_set(librdf_hash_cursor *cursor,
 | 
						|
                       librdf_hash_datum *key,
 | 
						|
                       librdf_hash_datum *value)
 | 
						|
{
 | 
						|
  return cursor->hash->factory->cursor_get(cursor->context, key, value, 
 | 
						|
                                           LIBRDF_HASH_CURSOR_SET);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int
 | 
						|
librdf_hash_cursor_get_next_value(librdf_hash_cursor *cursor, 
 | 
						|
                                  librdf_hash_datum *key,
 | 
						|
                                  librdf_hash_datum *value)
 | 
						|
{
 | 
						|
  return cursor->hash->factory->cursor_get(cursor->context, key, value, 
 | 
						|
                                           LIBRDF_HASH_CURSOR_NEXT_VALUE);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int
 | 
						|
librdf_hash_cursor_get_first(librdf_hash_cursor *cursor,
 | 
						|
                             librdf_hash_datum *key, librdf_hash_datum *value)
 | 
						|
{
 | 
						|
  return cursor->hash->factory->cursor_get(cursor->context, key, value, 
 | 
						|
                                           LIBRDF_HASH_CURSOR_FIRST);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int
 | 
						|
librdf_hash_cursor_get_next(librdf_hash_cursor *cursor, librdf_hash_datum *key,
 | 
						|
                            librdf_hash_datum *value)
 | 
						|
{
 | 
						|
  return cursor->hash->factory->cursor_get(cursor->context, key, value, 
 | 
						|
                                           LIBRDF_HASH_CURSOR_NEXT);
 | 
						|
}
 |