YAZ
4.2.57
Main Page
Data Structures
Files
File List
Globals
src
odr_int.c
Go to the documentation of this file.
1
/* This file is part of the YAZ toolkit.
2
* Copyright (C) 1995-2013 Index Data
3
* See the file LICENSE for details.
4
*/
9
#if HAVE_CONFIG_H
10
#include <
config.h
>
11
#endif
12
13
#include "
odr-priv.h
"
14
15
/*
16
* Top level integer en/decoder.
17
* Returns 1 on success, 0 on error.
18
*/
19
int
odr_integer
(
ODR
o,
Odr_int
**p,
int
opt
,
const
char
*
name
)
20
{
21
int
res, cons = 0;
22
23
if
(o->
error
)
24
return
0;
25
if
(o->
op
->
t_class
< 0)
26
{
27
o->
op
->
t_class
=
ODR_UNIVERSAL
;
28
o->
op
->
t_tag
=
ODR_INTEGER
;
29
}
30
res =
ber_tag
(o, p, o->
op
->
t_class
, o->
op
->
t_tag
, &cons, opt, name);
31
if
(res < 0)
32
return
0;
33
if
(!res)
34
return
odr_missing
(o, opt, name);
35
if
(o->
direction
==
ODR_PRINT
)
36
{
37
odr_prname
(o, name);
38
odr_printf
(o,
ODR_INT_PRINTF
"\n"
, **p);
39
return
1;
40
}
41
if
(cons)
42
{
43
odr_seterror
(o,
OPROTO
, 1);
44
return
0;
45
}
46
if
(o->
direction
==
ODR_DECODE
)
47
*p = (
Odr_int
*)
odr_malloc
(o,
sizeof
(**p));
48
return
ber_integer
(o, *p);
49
}
50
/*
51
* Local variables:
52
* c-basic-offset: 4
53
* c-file-style: "Stroustrup"
54
* indent-tabs-mode: nil
55
* End:
56
* vim: shiftwidth=4 tabstop=8 expandtab
57
*/
58
Generated on Wed May 15 2013 14:55:31 for YAZ by
1.8.1.2