File: rdf_init_internal.h

package info (click to toggle)
redland 1.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 27,592 kB
  • ctags: 12,328
  • sloc: ansic: 79,017; xml: 25,115; sh: 10,162; yacc: 5,985; lex: 3,682; makefile: 3,260; perl: 2,814; cpp: 59
file content (141 lines) | stat: -rw-r--r-- 3,478 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* -*- Mode: c; c-basic-offset: 2 -*-
 *
 * rdf_init_internal.h - Internal library initialisation / termination
 *
 * $Id: rdf_init_internal.h 13171 2007-11-12 09:25:18Z laalto $
 *
 * Copyright (C) 2000-2006, David Beckett http://purl.org/net/dajobe/
 * Copyright (C) 2000-2005, 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.
 * 
 * 
 */


#ifndef LIBRDF_INIT_INTERNAL_H
#define LIBRDF_INIT_INTERNAL_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef WITH_THREADS
#include <pthread.h>
#endif

struct librdf_world_s
{
  void *error_user_data;
  librdf_log_level_func error_handler;

  void *warning_user_data;
  librdf_log_level_func warning_handler;

  void *log_user_data;
  librdf_log_func log_handler;

  /* static (last) log message */
  librdf_log_message log;

  char *digest_factory_name;
  librdf_digest_factory* digest_factory;

  /* URI interning */
  librdf_hash* uris_hash;
  int uris_hash_allocated_here;

  /* Node interning */
  librdf_hash* nodes_hash[3]; /* resource, literal, blank */

  /* Sequence of model factories */
  raptor_sequence* models;
  
  /* Sequence of storage factories */
  raptor_sequence* storages;
  
  /* Sequence of parser factories */
  raptor_sequence* parsers;

  /* Sequence of serializer factories */
  raptor_sequence* serializers;

  /* List of query factories */
  librdf_query_factory* query_factories;

  /* List of digest factories */
  librdf_digest_factory *digests;

  /* list of hash factories */
  librdf_hash_factory* hashes;

  /* list of free librdf_hash_datums is kept */
  librdf_hash_datum* hash_datums_list;

   /* hash load_factor out of 1000 */
  int hash_load_factor;

  /* ID base from startup time */
  long genid_base;

  /* Unique counter from there */
  long genid_counter;

#ifdef WITH_THREADS
  /* mutex so we can lock around this when we need to */
  pthread_mutex_t* mutex;

  /* mutex to lock the nodes class */
  pthread_mutex_t* nodes_mutex;

  /* mutex to lock the statements class */
  pthread_mutex_t* statements_mutex;
#else
  /* !WITH_THREADS - pad structure to same size */
  void* mutex_fake;
  void* nodes_mutex_fake;
  void* statements_mutex_fake;
#endif

  /* non-0 if librdf_world_open() has been called */
  int opened;

  /* Sequence of storage modules
   * Used with --enable-modular / MODULAR_LIBRDF
   */
  raptor_sequence* storage_modules;

  /* If libtdl has been opened with lt_dlinit()
   * Used with --enable-modular / MODULAR_LIBRDF
   */
  int ltdl_opened;

  /* librdf_concepts RDF syntax and Schema namespace uris */
  librdf_uri* concept_ms_namespace_uri;
  librdf_uri* concept_schema_namespace_uri;

  /* librdf_concepts nodes and uris */
  librdf_uri** concept_uris;
  librdf_node** concept_resources;
};

unsigned char* librdf_world_get_genid(librdf_world* world);


#ifdef __cplusplus
}
#endif

#endif