12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*- 22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 2003, 2004 David Young. All rights reserved. 32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without 52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that the following conditions 62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * are met: 72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * notice, this list of conditions and the following disclaimer. 92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * documentation and/or other materials provided with the distribution. 122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 3. The name of David Young may not be used to endorse or promote 132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * products derived from this software without specific prior 142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * written permission. 152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY 172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID 202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OF SUCH DAMAGE. 282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef _CPACK_H 312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define _CPACK_H 322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct cpack_state { 342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t *c_buf; 352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project u_int8_t *c_next; 362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project size_t c_len; 372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint cpack_init(struct cpack_state *, u_int8_t *, size_t); 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint cpack_uint8(struct cpack_state *, u_int8_t *); 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint cpack_uint16(struct cpack_state *, u_int16_t *); 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint cpack_uint32(struct cpack_state *, u_int32_t *); 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint cpack_uint64(struct cpack_state *, u_int64_t *); 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define cpack_int8(__s, __p) cpack_uint8((__s), (u_int8_t*)(__p)) 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define cpack_int16(__s, __p) cpack_uint16((__s), (u_int16_t*)(__p)) 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define cpack_int32(__s, __p) cpack_uint32((__s), (u_int32_t*)(__p)) 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define cpack_int64(__s, __p) cpack_uint64((__s), (u_int64_t*)(__p)) 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* _CPACK_H */ 52