1/*********************************************************************
2 *   Copyright 2010, UCAR/Unidata
3 *   See netcdf/COPYRIGHT file for copying and redistribution conditions.
4 *********************************************************************/
5
6#include "config.h"
7
8#ifdef USE_PARALLEL
9#include <mpi.h>
10#endif
11
12#include "ncdispatch.h"
13
14extern int NC3_initialize(void);
15extern int NC3_finalize(void);
16
17#ifdef USE_NETCDF4
18#include "nc4internal.h"
19extern int NC4_initialize(void);
20extern int NC4_finalize(void);
21#endif
22
23#ifdef USE_DAP
24extern int NCD2_initialize(void);
25extern int NCD2_finalize(void);
26#endif
27
28#ifdef USE_PNETCDF
29extern int NCP_initialize(void);
30extern int NCP_finalize(void);
31#endif
32
33int NC_argc = 1;
34char* NC_argv[] = {"nc_initialize",NULL};
35
36int NC_initialized = 0;
37int NC_finalized = 1;
38
39/**
40This procedure invokes all defined
41initializers, and there is an initializer
42for every known dispatch table.
43So if you modify the format of NC_Dispatch,
44then you need to fix it everywhere.
45It also initializes appropriate external libraries.
46*/
47
48int
49nc_initialize()
50{
51    int stat = NC_NOERR;
52
53    if(NC_initialized) return NC_NOERR;
54    NC_initialized = 1;
55    NC_finalized = 0;
56
57    /* Do general initialization */
58    if((stat = NCDISPATCH_initialize())) goto done;
59
60    /* Initialize each active protocol */
61    if((stat = NC3_initialize())) goto done;
62#ifdef USE_DAP
63    if((stat = NCD2_initialize())) goto done;
64#endif
65#ifdef USE_PNETCDF
66    if((stat = NCP_initialize())) goto done;
67#endif
68#ifdef USE_NETCDF4
69    if((stat = NC4_initialize())) goto done;
70    stat = NC4_fileinfo_init();
71#endif /* USE_NETCDF4 */
72
73done:
74    return stat;
75}
76
77/**
78This procedure invokes all defined
79finalizers, and there should be one
80for every known dispatch table.
81So if you modify the format of NC_Dispatch,
82then you need to fix it everywhere.
83It also finalizes appropriate external libraries.
84*/
85
86int
87nc_finalize(void)
88{
89    int stat = NC_NOERR;
90
91    if(NC_finalized) return NC_NOERR;
92    NC_initialized = 0;
93    NC_finalized = 1;
94
95    /* Finalize each active protocol */
96
97#ifdef USE_DAP
98    if((stat = NCD2_finalize())) return stat;
99#endif
100
101#ifdef USE_PNETCDF
102    if((stat = NCP_finalize())) return stat;
103#endif
104
105#ifdef USE_NETCDF4
106    if((stat = NC4_finalize())) return stat;
107#endif /* USE_NETCDF4 */
108
109    if((stat = NC3_finalize())) return stat;
110
111    /* Do general finalization */
112    if((stat = NCDISPATCH_finalize())) return stat;
113
114    return NC_NOERR;
115}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed