1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*******************************************************************************
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   Copyright (C) 2003-2006, International Business Machines
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   Corporation and others.  All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*******************************************************************************
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   file name:   regexc.cpp
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   description: The purpose of this function is to separate the codepage
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*       conversion from the rest of the uregex_ API. This can removes any
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*       dependency on codepage conversion, which reduces the overhead of
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uregex.h"
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/unistr.h"
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_USE
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//----------------------------------------------------------------------------------------
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//    uregex_openC
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//----------------------------------------------------------------------------------------
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_REGULAR_EXPRESSIONS
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI URegularExpression * U_EXPORT2
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruuregex_openC( const char           *pattern,
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    uint32_t        flags,
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    UParseError    *pe,
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    UErrorCode     *status) {
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (U_FAILURE(*status)) {
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return NULL;
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if (pattern == NULL) {
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        *status = U_ILLEGAL_ARGUMENT_ERROR;
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return NULL;
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UnicodeString patString(pattern);
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return uregex_open(patString.getBuffer(), patString.length(), flags, pe, status);
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
41