1 /* 2 * uriparser - RFC 3986 URI parsing library 3 * 4 * Copyright (C) 2007, Weijia Song <songweijia@gmail.com> 5 * Copyright (C) 2007, Sebastian Pipping <sebastian@pipping.org> 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * * Redistributions of source code must retain the above 13 * copyright notice, this list of conditions and the following 14 * disclaimer. 15 * 16 * * Redistributions in binary form must reproduce the above 17 * copyright notice, this list of conditions and the following 18 * disclaimer in the documentation and/or other materials 19 * provided with the distribution. 20 * 21 * * Neither the name of the <ORGANIZATION> nor the names of its 22 * contributors may be used to endorse or promote products 23 * derived from this software without specific prior written 24 * permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 29 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 30 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 31 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 32 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 33 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 35 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 36 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 37 * OF THE POSSIBILITY OF SUCH DAMAGE. 38 */ 39 40 /** 41 * @file UriIp4.h 42 * Holds the IPv4 parser interface. 43 * NOTE: This header includes itself twice. 44 */ 45 46 #if (defined(URI_PASS_ANSI) && !defined(URI_IP4_TWICE_H_ANSI)) \ 47 || (defined(URI_PASS_UNICODE) && !defined(URI_IP4_TWICE_H_UNICODE)) \ 48 || (!defined(URI_PASS_ANSI) && !defined(URI_PASS_UNICODE)) 49 /* What encodings are enabled? */ 50 #include "UriDefsConfig.h" 51 #if (!defined(URI_PASS_ANSI) && !defined(URI_PASS_UNICODE)) 52 /* Include SELF twice */ 53 # ifdef URI_ENABLE_ANSI 54 # define URI_PASS_ANSI 1 55 # include "UriIp4.h" 56 # undef URI_PASS_ANSI 57 # endif 58 # ifdef URI_ENABLE_UNICODE 59 # define URI_PASS_UNICODE 1 60 # include "UriIp4.h" 61 # undef URI_PASS_UNICODE 62 # endif 63 /* Only one pass for each encoding */ 64 #elif (defined(URI_PASS_ANSI) && !defined(URI_IP4_TWICE_H_ANSI) \ 65 && defined(URI_ENABLE_ANSI)) || (defined(URI_PASS_UNICODE) \ 66 && !defined(URI_IP4_TWICE_H_UNICODE) && defined(URI_ENABLE_UNICODE)) 67 # ifdef URI_PASS_ANSI 68 # define URI_IP4_TWICE_H_ANSI 1 69 # include "UriDefsAnsi.h" 70 # else 71 # define URI_IP4_TWICE_H_UNICODE 1 72 # include "UriDefsUnicode.h" 73 # include <wchar.h> 74 # endif 75 76 77 78 #ifdef __cplusplus 79 extern "C" { 80 #endif 81 82 83 84 #ifndef URI_DOXYGEN 85 # include "UriBase.h" 86 #endif 87 88 89 90 /** 91 * Converts a IPv4 text representation into four bytes. 92 * 93 * @param octetOutput Output destination 94 * @param first First character of IPv4 text to parse 95 * @param afterLast Position to stop parsing at 96 * @return Error code or 0 on success 97 */ 98 URI_PUBLIC int URI_FUNC(ParseIpFourAddress)(unsigned char * octetOutput, 99 const URI_CHAR * first, const URI_CHAR * afterLast); 100 101 102 103 #ifdef __cplusplus 104 } 105 #endif 106 107 108 109 #endif 110 #endif 111