ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitCommon/OptIO/src/lzo_ptr.h
Revision: 1.1
Committed: Tue Feb 24 11:56:44 2009 UTC (16 years, 2 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, V07-05-00, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, ConvRejection-10-06-09, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1, Mit_012i, Mit_012g, Mit_012f, Mit_012e, Mit_012d, Mit_012c, Mit_012b, Mit_012a, Mit_012, Mit_011a, Mit_011, Mit_010a, Mit_010, Mit_009c, Mit_009b, Mit_009a, Mit_009, Mit_008, Mit_008pre2, Mit_008pre1, HEAD
Branch point for: Mit_025c_branch
Log Message:
Preload lib for compression improvements.

File Contents

# User Rev Content
1 loizides 1.1 /* lzo_ptr.h -- low-level pointer constructs
2    
3     This file is part of the LZO real-time data compression library.
4    
5     Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
6     Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
7     Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
8     Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
9     Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
10     Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
11     Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
12     Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
13     Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
14     Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
15     Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
16     Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
17     Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
18     All Rights Reserved.
19    
20     The LZO library is free software; you can redistribute it and/or
21     modify it under the terms of the GNU General Public License as
22     published by the Free Software Foundation; either version 2 of
23     the License, or (at your option) any later version.
24    
25     The LZO library is distributed in the hope that it will be useful,
26     but WITHOUT ANY WARRANTY; without even the implied warranty of
27     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28     GNU General Public License for more details.
29    
30     You should have received a copy of the GNU General Public License
31     along with the LZO library; see the file COPYING.
32     If not, write to the Free Software Foundation, Inc.,
33     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
34    
35     Markus F.X.J. Oberhumer
36     <markus@oberhumer.com>
37     http://www.oberhumer.com/opensource/lzo/
38     */
39    
40    
41     /* WARNING: this file should *not* be used by applications. It is
42     part of the implementation of the library and is subject
43     to change.
44     */
45    
46    
47     #ifndef __LZO_PTR_H
48     #define __LZO_PTR_H
49    
50     #ifdef __cplusplus
51     extern "C" {
52     #endif
53    
54    
55     /***********************************************************************
56     // Integral types
57     ************************************************************************/
58    
59     #if !defined(lzo_uintptr_t)
60     # if defined(__LZO_MMODEL_HUGE)
61     # define lzo_uintptr_t unsigned long
62     # else
63     # define lzo_uintptr_t acc_uintptr_t
64     # ifdef __ACC_INTPTR_T_IS_POINTER
65     # define __LZO_UINTPTR_T_IS_POINTER 1
66     # endif
67     # endif
68     #endif
69    
70    
71     /***********************************************************************
72     //
73     ************************************************************************/
74    
75     /* Always use the safe (=integral) version for pointer-comparisions.
76     * The compiler should optimize away the additional casts anyway.
77     *
78     * Note that this only works if the representation and ordering
79     * of the pointer and the integral is the same (at bit level).
80     *
81     * Most 16-bit compilers have their own view about pointers -
82     * fortunately they don't care about comparing pointers
83     * that are pointing to Nirvana.
84     */
85    
86     #if (LZO_ARCH_I086)
87     #define PTR(a) ((lzo_bytep) (a))
88     /* only need the low bits of the pointer -> offset is ok */
89     #define PTR_ALIGNED_4(a) ((ACC_PTR_FP_OFF(a) & 3) == 0)
90     #define PTR_ALIGNED2_4(a,b) (((ACC_PTR_FP_OFF(a) | ACC_PTR_FP_OFF(b)) & 3) == 0)
91     #elif (LZO_MM_PVP)
92     #define PTR(a) ((lzo_bytep) (a))
93     #define PTR_ALIGNED_8(a) ((((lzo_uintptr_t)(a)) >> 61) == 0)
94     #define PTR_ALIGNED2_8(a,b) ((((lzo_uintptr_t)(a)|(lzo_uintptr_t)(b)) >> 61) == 0)
95     #else
96     #define PTR(a) ((lzo_uintptr_t) (a))
97     #define PTR_LINEAR(a) PTR(a)
98     #define PTR_ALIGNED_4(a) ((PTR_LINEAR(a) & 3) == 0)
99     #define PTR_ALIGNED_8(a) ((PTR_LINEAR(a) & 7) == 0)
100     #define PTR_ALIGNED2_4(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 3) == 0)
101     #define PTR_ALIGNED2_8(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 7) == 0)
102     #endif
103    
104     #define PTR_LT(a,b) (PTR(a) < PTR(b))
105     #define PTR_GE(a,b) (PTR(a) >= PTR(b))
106     #define PTR_DIFF(a,b) (PTR(a) - PTR(b))
107     #define pd(a,b) ((lzo_uint) ((a)-(b)))
108    
109    
110     LZO_EXTERN(lzo_uintptr_t)
111     __lzo_ptr_linear(const lzo_voidp ptr);
112    
113    
114     typedef union
115     {
116     char a_char;
117     unsigned char a_uchar;
118     short a_short;
119     unsigned short a_ushort;
120     int a_int;
121     unsigned int a_uint;
122     long a_long;
123     unsigned long a_ulong;
124     lzo_int a_lzo_int;
125     lzo_uint a_lzo_uint;
126     lzo_int32 a_lzo_int32;
127     lzo_uint32 a_lzo_uint32;
128     ptrdiff_t a_ptrdiff_t;
129     lzo_uintptr_t a_lzo_uintptr_t;
130     lzo_voidp a_lzo_voidp;
131     void * a_void_p;
132     lzo_bytep a_lzo_bytep;
133     lzo_bytepp a_lzo_bytepp;
134     lzo_uintp a_lzo_uintp;
135     lzo_uint * a_lzo_uint_p;
136     lzo_uint32p a_lzo_uint32p;
137     lzo_uint32 * a_lzo_uint32_p;
138     unsigned char * a_uchar_p;
139     char * a_char_p;
140     }
141     lzo_full_align_t;
142    
143    
144    
145     #ifdef __cplusplus
146     } /* extern "C" */
147     #endif
148    
149     #endif /* already included */
150    
151     /*
152     vi:ts=4:et
153     */
154