00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _bitmanip_H__
00013 #define _bitmanip_H__
00014
00015 #ifdef _MSC_VER
00016 #pragma once
00017 #endif
00018
00019 namespace bitmanip {
00020
00021
00022
00023
00024
00025
00026 template <class _T>
00027 inline short int word ( short i, const _T& v )
00028 {
00029 short shft = i*4;
00030 _T mask = 0x000F << shft;
00031 return (v & mask) >> shft;
00032 }
00033
00034 template <class _T>
00035 void set_word ( short i, _T& v, const _T& s )
00036 {
00037 short shft = i*4;
00038 _T mask = 0x000F << shft;
00039 v = ((v & ~mask) | ((s << shft) & mask));
00040 }
00041
00042 }
00043
00044 #endif