1/*
2 *******************************************************************************
3 *
4 *   Copyright (C) 2003, International Business Machines
5 *   Corporation and others.  All Rights Reserved.
6 *
7 *******************************************************************************
8 *   file name:  nfsprep.h
9 *   encoding:   US-ASCII
10 *   tab size:   8 (not used)
11 *   indentation:4
12 *
13 *   created on: 2003jul11
14 *   created by: Ram Viswanadha
15 */
16#ifndef _NFSPREP_H
17#define _NFSPREP_H
18
19#include "unicode/utypes.h"
20
21#if !UCONFIG_NO_IDNA
22
23#include "unicode/ustring.h"
24#include "unicode/usprep.h"
25#include <stdlib.h>
26#include <string.h>
27
28
29/* this enum must be kept in syn with NFS4DataFileNames array in nfsprep.c */
30enum NFS4ProfileState{
31    NFS4_CS_PREP_CS,
32    NFS4_CS_PREP_CI,
33    NFS4_CIS_PREP,
34    NFS4_MIXED_PREP_PREFIX,
35    NFS4_MIXED_PREP_SUFFIX
36};
37
38typedef enum NFS4ProfileState NFS4ProfileState;
39
40/**
41 * Prepares the source UTF-8 string for use in file names and
42 * returns UTF-8 string on output.
43 * @param src
44 * @param srcLen
45 * @param dest
46 * @param destCapacity
47 * @param state
48 * @param parseError
49 * @param status
50 */
51int32_t
52nfs4_prepare(const char* src, int32_t srcLength,
53                  char* dest, int32_t destCapacity,
54                  NFS4ProfileState state,
55                  UParseError* parseError,
56                  UErrorCode*  status);
57
58/**
59 * @param dest
60 * @param destCapacity
61 * @param src
62 * @param srcLen
63 * @param state
64 * @param parseError
65 * @param status
66 */
67int32_t
68nfs4_mixed_prepare( const char* src, int32_t srcLength,
69                    char* dest, int32_t destCapacity,
70                    UParseError* parseError,
71                    UErrorCode*  status);
72
73/**
74 * @param dest
75 * @param destCapacity
76 * @param src
77 * @param srcLen
78 * @param state
79 * @param parseError
80 * @param status
81 */
82int32_t
83nfs4_cis_prepare(   const char* src, int32_t srcLength,
84                    char* dest, int32_t destCapacity,
85                    UParseError* parseError,
86                    UErrorCode*  status);
87
88/**
89 * @param dest
90 * @param destCapacity
91 * @param src
92 * @param srcLen
93 * @param state
94 * @param parseError
95 * @param status
96 */
97int32_t
98nfs4_cs_prepare(    const char* src, int32_t srcLength,
99                    char* dest, int32_t destCapacity,
100                    UBool isCaseSensitive,
101                    UParseError* parseError,
102                    UErrorCode*  status);
103#endif
104
105#endif
106/*
107 * Hey, Emacs, please set the following:
108 *
109 * Local Variables:
110 * indent-tabs-mode: nil
111 * End:
112 *
113 */
114