1/* 2 * Copyright (c) 2001-2002 Michael David Adams. 3 * All rights reserved. 4 */ 5 6/* __START_OF_JASPER_LICENSE__ 7 * 8 * JasPer Software License 9 * 10 * IMAGE POWER JPEG-2000 PUBLIC LICENSE 11 * ************************************ 12 * 13 * GRANT: 14 * 15 * Permission is hereby granted, free of charge, to any person (the "User") 16 * obtaining a copy of this software and associated documentation, to deal 17 * in the JasPer Software without restriction, including without limitation 18 * the right to use, copy, modify, merge, publish, distribute, sublicense, 19 * and/or sell copies of the JasPer Software (in source and binary forms), 20 * and to permit persons to whom the JasPer Software is furnished to do so, 21 * provided further that the License Conditions below are met. 22 * 23 * License Conditions 24 * ****************** 25 * 26 * A. Redistributions of source code must retain the above copyright notice, 27 * and this list of conditions, and the following disclaimer. 28 * 29 * B. Redistributions in binary form must reproduce the above copyright 30 * notice, and this list of conditions, and the following disclaimer in 31 * the documentation and/or other materials provided with the distribution. 32 * 33 * C. Neither the name of Image Power, Inc. nor any other contributor 34 * (including, but not limited to, the University of British Columbia and 35 * Michael David Adams) may be used to endorse or promote products derived 36 * from this software without specific prior written permission. 37 * 38 * D. User agrees that it shall not commence any action against Image Power, 39 * Inc., the University of British Columbia, Michael David Adams, or any 40 * other contributors (collectively "Licensors") for infringement of any 41 * intellectual property rights ("IPR") held by the User in respect of any 42 * technology that User owns or has a right to license or sublicense and 43 * which is an element required in order to claim compliance with ISO/IEC 44 * 15444-1 (i.e., JPEG-2000 Part 1). "IPR" means all intellectual property 45 * rights worldwide arising under statutory or common law, and whether 46 * or not perfected, including, without limitation, all (i) patents and 47 * patent applications owned or licensable by User; (ii) rights associated 48 * with works of authorship including copyrights, copyright applications, 49 * copyright registrations, mask work rights, mask work applications, 50 * mask work registrations; (iii) rights relating to the protection of 51 * trade secrets and confidential information; (iv) any right analogous 52 * to those set forth in subsections (i), (ii), or (iii) and any other 53 * proprietary rights relating to intangible property (other than trademark, 54 * trade dress, or service mark rights); and (v) divisions, continuations, 55 * renewals, reissues and extensions of the foregoing (as and to the extent 56 * applicable) now existing, hereafter filed, issued or acquired. 57 * 58 * E. If User commences an infringement action against any Licensor(s) then 59 * such Licensor(s) shall have the right to terminate User's license and 60 * all sublicenses that have been granted hereunder by User to other parties. 61 * 62 * F. This software is for use only in hardware or software products that 63 * are compliant with ISO/IEC 15444-1 (i.e., JPEG-2000 Part 1). No license 64 * or right to this Software is granted for products that do not comply 65 * with ISO/IEC 15444-1. The JPEG-2000 Part 1 standard can be purchased 66 * from the ISO. 67 * 68 * THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. 69 * NO USE OF THE JASPER SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER 70 * THIS DISCLAIMER. THE JASPER SOFTWARE IS PROVIDED BY THE LICENSORS AND 71 * CONTRIBUTORS UNDER THIS LICENSE ON AN ``AS-IS'' BASIS, WITHOUT WARRANTY 72 * OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, 73 * WARRANTIES THAT THE JASPER SOFTWARE IS FREE OF DEFECTS, IS MERCHANTABLE, 74 * IS FIT FOR A PARTICULAR PURPOSE OR IS NON-INFRINGING. THOSE INTENDING 75 * TO USE THE JASPER SOFTWARE OR MODIFICATIONS THEREOF FOR USE IN HARDWARE 76 * OR SOFTWARE PRODUCTS ARE ADVISED THAT THEIR USE MAY INFRINGE EXISTING 77 * PATENTS, COPYRIGHTS, TRADEMARKS, OR OTHER INTELLECTUAL PROPERTY RIGHTS. 78 * THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE JASPER SOFTWARE 79 * IS WITH THE USER. SHOULD ANY PART OF THE JASPER SOFTWARE PROVE DEFECTIVE 80 * IN ANY RESPECT, THE USER (AND NOT THE INITIAL DEVELOPERS, THE UNIVERSITY 81 * OF BRITISH COLUMBIA, IMAGE POWER, INC., MICHAEL DAVID ADAMS, OR ANY 82 * OTHER CONTRIBUTOR) SHALL ASSUME THE COST OF ANY NECESSARY SERVICING, 83 * REPAIR OR CORRECTION. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, 84 * WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE 85 * INITIAL DEVELOPER, THE UNIVERSITY OF BRITISH COLUMBIA, IMAGE POWER, INC., 86 * MICHAEL DAVID ADAMS, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE 87 * JASPER SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO 88 * THE USER OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR 89 * CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, 90 * DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR 91 * MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF 92 * SUCH PARTY HAD BEEN INFORMED, OR OUGHT TO HAVE KNOWN, OF THE POSSIBILITY 93 * OF SUCH DAMAGES. THE JASPER SOFTWARE AND UNDERLYING TECHNOLOGY ARE NOT 94 * FAULT-TOLERANT AND ARE NOT DESIGNED, MANUFACTURED OR INTENDED FOR USE OR 95 * RESALE AS ON-LINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING 96 * FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, 97 * AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT 98 * LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE 99 * JASPER SOFTWARE OR UNDERLYING TECHNOLOGY OR PRODUCT COULD LEAD DIRECTLY 100 * TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE 101 * ("HIGH RISK ACTIVITIES"). LICENSOR SPECIFICALLY DISCLAIMS ANY EXPRESS 102 * OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES. USER WILL NOT 103 * KNOWINGLY USE, DISTRIBUTE OR RESELL THE JASPER SOFTWARE OR UNDERLYING 104 * TECHNOLOGY OR PRODUCTS FOR HIGH RISK ACTIVITIES AND WILL ENSURE THAT ITS 105 * CUSTOMERS AND END-USERS OF ITS PRODUCTS ARE PROVIDED WITH A COPY OF THE 106 * NOTICE SPECIFIED IN THIS SECTION. 107 * 108 * __END_OF_JASPER_LICENSE__ 109 */ 110 111/* 112 * Tag/Value Parser 113 * 114 * $Id: jas_tvp.h 14449 2005-10-20 12:15:56Z stippi $ 115 */ 116 117#ifndef JAS_TVP_H 118#define JAS_TVP_H 119 120/******************************************************************************\ 121* Includes. 122\******************************************************************************/ 123 124#ifdef __cplusplus 125extern "C" { 126#endif 127 128/******************************************************************************\ 129* Types. 130\******************************************************************************/ 131 132/* Tag information type. */ 133 134typedef struct { 135 136 int id; 137 /* The ID for the tag. */ 138 139 char *name; 140 /* The name of the tag. */ 141 142} jas_taginfo_t; 143 144/* Tag-value parser type. */ 145 146typedef struct { 147 148 char *buf; 149 /* The parsing buffer. */ 150 151 char *tag; 152 /* The current tag name. */ 153 154 char *val; 155 /* The current value. */ 156 157 char *pos; 158 /* The current position in the parsing buffer. */ 159 160} jas_tvparser_t; 161 162/******************************************************************************\ 163* Tag information functions. 164\******************************************************************************/ 165 166/* Lookup a tag by name. */ 167jas_taginfo_t *jas_taginfos_lookup(jas_taginfo_t *taginfos, const char *name); 168 169/* This function returns a pointer to the specified taginfo object if it 170 exists (i.e., the pointer is nonnull); otherwise, a pointer to a dummy 171 object is returned. This is useful in some situations to avoid checking 172 for a null pointer. */ 173jas_taginfo_t *jas_taginfo_nonull(jas_taginfo_t *taginfo); 174 175/******************************************************************************\ 176* Tag-value parser functions. 177\******************************************************************************/ 178 179/* Create a tag-value parser for the specified string. */ 180jas_tvparser_t *jas_tvparser_create(const char *s); 181 182/* Destroy a tag-value parser. */ 183void jas_tvparser_destroy(jas_tvparser_t *tvparser); 184 185/* Get the next tag-value pair. */ 186int jas_tvparser_next(jas_tvparser_t *tvparser); 187 188/* Get the tag name for the current tag-value pair. */ 189char *jas_tvparser_gettag(jas_tvparser_t *tvparser); 190 191/* Get the value for the current tag-value pair. */ 192char *jas_tvparser_getval(jas_tvparser_t *tvparser); 193 194#ifdef __cplusplus 195} 196#endif 197 198#endif 199