summaryrefslogtreecommitdiffstats
path: root/asn1/asn1c/asn_application.h
blob: e6e9112ab5184ed587c4a822b6fc697e7f4770c3 (plain)
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

/*-
 * Copyright (c) 2004, 2006 Lev Walkin <vlm@lionet.info>. All rights reserved.
 * Redistribution and modifications are permitted subject to BSD license.
 */

/*
 * Application-level ASN.1 callbacks.
 */
#ifndef	_ASN_APPLICATION_H_
#define	_ASN_APPLICATION_H_

#include "asn_system.h"         /* for platform-dependent types */
#include "asn_codecs.h"         /* for ASN.1 codecs specifics */

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Generic type of an application-defined callback to return various
 * types of data to the application.
 * EXPECTED RETURN VALUES:
 *  -1: Failed to consume bytes. Abort the mission.
 * Non-negative return values indicate success, and ignored.
 */
    typedef int (asn_app_consume_bytes_f) (const void *buffer, size_t size,
                                           void *application_specific_key);

/*
 * A callback of this type is called whenever constraint validation fails
 * on some ASN.1 type. See "constraints.h" for more details on constraint
 * validation.
 * This callback specifies a descriptor of the ASN.1 type which failed
 * the constraint check, as well as human readable message on what
 * particular constraint has failed.
 */
    typedef void (asn_app_constraint_failed_f) (void *application_specific_key,
                                                struct asn_TYPE_descriptor_s *
                                                type_descriptor_which_failed,
                                                const void
                                                *structure_which_failed_ptr,
                                                const char
                                                *error_message_format,
                                                ...)GCC_PRINTFLIKE(4, 5);

#ifdef __cplusplus
}
#endif
#include "constr_TYPE.h"        /* for asn_TYPE_descriptor_t */
#endif                          /* _ASN_APPLICATION_H_ */