• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

/home/pvrabec/project/openscap/openscap-0.6.6/src/OVAL/probes/SEAP/_sexp-rawptr.h

00001 #ifndef SEXP_RAWPTR
00002 #define SEXP_RAWPTR
00003 
00004 #include <stdint.h>
00005 
00006 static inline void *SEXP_rawptr_mask(void *ptr, uintptr_t mask)
00007 {
00008         return (void *)((uintptr_t)(ptr) & mask);
00009 }
00010 
00011 #define SEXP_rawptr_maskT(T, ptr, mask) ((T *)SEXP_rawptr_mask((void *)(ptr), mask))
00012 
00013 static inline void *SEXP_rawptr_merge(void *ptr, uintptr_t bits)
00014 {
00015         return (void *)(((uintptr_t)(ptr) | bits));
00016 }
00017 
00018 #define SEXP_rawptr_mergeT(T, ptr, bits) ((T *)SEXP_rawptr_merge((void *)(ptr), bits))
00019 
00020 static inline void *SEXP_rawptr_safemerge(void *ptr, uintptr_t bits, uintptr_t mask)
00021 {
00022         return (void *)(((uintptr_t)SEXP_rawptr_mask(ptr, mask))|(~mask & bits));
00023 }
00024 
00025 #define SEXP_rawptr_safemergeT(T, ptr, bits, mask) ((T *)SEXP_rawptr_safemerge((void *)(ptr), bits, mask))
00026 
00027 static inline bool SEXP_rawptr_bit(void *ptr, int n)
00028 {
00029         return (bool)(((uintptr_t)(ptr)) & (1 << n));
00030 }
00031 
00032 static inline uintptr_t SEXP_rawptr_bitmask(void *ptr, uintptr_t mask)
00033 {
00034         return ((uintptr_t)(ptr)) & mask;
00035 }
00036 
00037 #endif /* SEXP_RAWPTR */

Generated on Thu Dec 9 2010 for Open SCAP Library by  doxygen 1.7.1