1/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
2   See the COPYRIGHT file for more information. */
3
4#ifndef NCURI_H
5#define NCURI_H
6
7/*! This is an open structure meaning
8 it is ok to directly access its fields*/
9typedef struct NCURI {
10    char* uri;        /* as passed by the caller */
11    char* params;     /* all params */
12    char** paramlist;    /*!<null terminated list */
13    char* constraint; /*!< projection+selection */
14    char* projection; /*!< without leading '?'*/
15    char* selection;  /*!< with leading '&'*/
16    char* strings;    /* first char of strings is always '\0' */
17    /* Following all point into the strings field */
18    char* protocol;
19    char* user; /* from user:password@ */
20    char* password; /* from user:password@ */
21    char* host;       /*!< host*/
22    char* port;       /*!< host */
23    char* file;       /*!< file */
24NCURI;
25
26extern int ncuriparse(const char* sNCURI** ncuri);
27extern void ncurifree(NCURIncuri);
28
29/* Replace the constraints */
30extern void ncurisetconstraints(NCURI*,const char* constraints);
31
32/* Construct a complete NC URI; caller frees returned string */
33
34/* Define flags to control what is included */
35#define NCURICONSTRAINTS  1
36#define NCURIUSERPWD     2
37#define NCURIPREFIXPARAMS    4
38#define NCURISUFFIXPARAMS  8
39#define NCURIPARAMS    NCURIPREFIXPARAMS
40#define NCURIENCODE 16 /* If output should be encoded */
41#define NCURISTD    (NCURICONSTRAINTS|NCURIUSERPWD)
42
43extern char* ncuribuild(NCURI*,const char* prefix, const char* suffix, int flags);
44
45
46/* Param Management */
47extern int ncuridecodeparams(NCURIncuri);
48extern int ncurisetparams(NCURIncuri,const char*);
49
50/*! 0 result => entry not found; 1=>found; result holds value (may be null).
51    In any case, the result is imutable and should not be free'd.
52*/
53extern int ncurilookup(NCURI*, const char* param, const char** result);
54
55extern char* ncuriencode(char* s, char* allowable);
56extern char* ncuridecode(char* s);
57extern char* ncuridecodeonly(char* s, char*);
58
59#endif /*NCURI_H*/


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