Subversion Repositories tendra.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
7 7u83 2
 * Copyright (c) 2002-2006 The TenDRA Project <http://www.tendra.org/>.
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions are met:
7
 *
8
 * 1. Redistributions of source code must retain the above copyright notice,
9
 *    this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
11
 *    this list of conditions and the following disclaimer in the documentation
12
 *    and/or other materials provided with the distribution.
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
14
 *    may be used to endorse or promote products derived from this software
15
 *    without specific, prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
 *
29
 * $Id$
30
 */
31
/*
2 7u83 32
    		 Crown Copyright (c) 1997
7 7u83 33
 
2 7u83 34
    This TenDRA(r) Computer Program is subject to Copyright
35
    owned by the United Kingdom Secretary of State for Defence
36
    acting through the Defence Evaluation and Research Agency
37
    (DERA).  It is made available to Recipients with a
38
    royalty-free licence for its use, reproduction, transfer
39
    to other parties and amendment for any purpose not excluding
40
    product development provided that any such use et cetera
41
    shall be deemed to be acceptance of the following conditions:-
7 7u83 42
 
2 7u83 43
        (1) Its Recipients shall ensure that this Notice is
44
        reproduced upon any copies or amended versions of it;
7 7u83 45
 
2 7u83 46
        (2) Any amended version of it shall be clearly marked to
47
        show both the nature of and the organisation responsible
48
        for the relevant amendment or amendments;
7 7u83 49
 
2 7u83 50
        (3) Its onward transfer from a recipient to another
51
        party shall be deemed to be that party's acceptance of
52
        these conditions;
7 7u83 53
 
2 7u83 54
        (4) DERA gives no warranty or assurance as to its
55
        quality or suitability for any purpose and DERA accepts
56
        no liability whatsoever in relation to any use to which
57
        it may be put.
58
*/
59
 
60
 
61
/*** library.h --- TDF library ADT.
62
 *
63
 ** Author: Steve Folkes <smf@hermes.mod.uk>
64
 *
65
 *** Commentary:
66
 *
67
 * See the file "library.c" for more information.
68
 *
69
 *** Change Log:
70
 * $Log: library.h,v $
71
 * Revision 1.1.1.1  1998/01/17  15:57:18  release
72
 * First version to be checked into rolling release.
73
 *
74
 * Revision 1.4  1995/09/22  08:39:20  smf
75
 * Fixed problems with incomplete structures (to shut "tcc" up).
76
 * Fixed some problems in "name-key.c" (no real problems, but rewritten to
77
 * reduce the warnings that were output by "tcc" and "gcc").
78
 * Fixed bug CR95_354.tld-common-id-problem (library capsules could be loaded
79
 * more than once).
80
 *
81
 * Revision 1.3  1995/07/07  15:32:28  smf
82
 * Updated to support TDF specification 4.0.
83
 *
84
 * Revision 1.2  1994/12/12  11:46:25  smf
85
 * Performing changes for 'CR94_178.sid+tld-update' - bringing in line with
86
 * OSSG C Coding Standards.
87
 *
88
 * Revision 1.1.1.1  1994/07/25  16:03:32  smf
89
 * Initial import of TDF linker 3.5 non shared files.
90
 *
91
**/
92
 
93
/****************************************************************************/
94
 
95
#ifndef H_LIBRARY
96
#define H_LIBRARY
97
 
98
#include "os-interface.h"
99
#include "capsule.h"
100
#include "dalloc.h"
101
#include "shape-table.h"
102
#include "tdf-read.h"
103
#include "tdf-write.h"
104
 
105
/*--------------------------------------------------------------------------*/
106
 
107
#ifdef FS_NO_ENUM
108
typedef int LibraryTypeT, *LibraryTypeP;
109
#define LT_INPUT		(0)
110
#define LT_OUTPUT		(1)
111
#else
112
typedef enum {
113
    LT_INPUT,
114
    LT_OUTPUT
115
} LibraryTypeT, *LibraryTypeP;
116
#endif /* defined (FS_NO_ENUM) */
117
 
118
struct LibraryT;
119
 
120
typedef struct LibCapsuleT {
121
    struct LibraryT	       *library;
122
    CStringP			name;
123
    NStringT			contents;
124
    BoolT			loaded;
125
} LibCapsuleT, *LibCapsuleP;
126
 
127
typedef struct LibraryT {
128
    LibraryTypeT		type;
129
    union {
130
	TDFReaderT		reader;
131
	TDFWriterT		writer;
132
    } u;
133
    CStringP			name;
134
    unsigned			num_capsules;
135
    LibCapsuleP			capsules;
136
    unsigned			major;
137
    unsigned			minor;
138
    BoolT			complete;
139
} LibraryT, *LibraryP;
140
 
141
/*--------------------------------------------------------------------------*/
142
 
143
extern CStringP			lib_capsule_name
7 7u83 144
(LibCapsuleP);
2 7u83 145
extern CStringP			lib_capsule_full_name
7 7u83 146
(LibCapsuleP);
2 7u83 147
extern NStringP			lib_capsule_contents
7 7u83 148
(LibCapsuleP);
2 7u83 149
extern BoolT			lib_capsule_is_loaded
7 7u83 150
(LibCapsuleP);
2 7u83 151
extern void			lib_capsule_loaded
7 7u83 152
(LibCapsuleP);
2 7u83 153
 
154
extern void			write_lib_capsule_full_name
7 7u83 155
(OStreamP, LibCapsuleP);
2 7u83 156
 
157
extern LibraryP			library_create_stream_input
7 7u83 158
(CStringP);
2 7u83 159
extern LibraryP			library_create_stream_output
7 7u83 160
(CStringP);
2 7u83 161
extern CStringP			library_name
7 7u83 162
(LibraryP);
2 7u83 163
extern unsigned			library_num_capsules
7 7u83 164
(LibraryP);
2 7u83 165
extern LibCapsuleP		library_get_capsule
7 7u83 166
(LibraryP, unsigned);
2 7u83 167
extern unsigned			library_byte
7 7u83 168
(LibraryP);
2 7u83 169
extern void			library_content
7 7u83 170
(LibraryP, BoolT, BoolT, BoolT);
2 7u83 171
extern void			library_extract_all
7 7u83 172
(LibraryP, BoolT);
2 7u83 173
extern void			library_extract
7 7u83 174
(LibraryP, BoolT, BoolT, unsigned, CStringP *);
2 7u83 175
extern void			library_read
7 7u83 176
(LibraryP, ShapeTableP);
2 7u83 177
extern void			library_write
7 7u83 178
(LibraryP, ShapeTableP, unsigned, CapsuleP *);
2 7u83 179
extern void			library_close
7 7u83 180
(LibraryP);
2 7u83 181
 
182
#endif /* !defined (H_LIBRARY) */
183
 
184
/*
185
 * Local variables(smf):
186
 * eval: (include::add-path-entry "../os-interface" "../library")
187
 * eval: (include::add-path-entry "../generated")
188
 * end:
189
**/