~vamsi-krishnak/+junk/discrete-algorithms-0.9

« back to all changes in this revision

Viewing changes to BitArray.h

  • Committer: Vamsi Kundeti
  • Date: 2010-01-26 02:16:32 UTC
  • Revision ID: vamsi.krishnak@gmail.com-20100126021632-xmhc60dv0dizysfl
Added a new data-structure 'DynamicBuffer' and 'BitArray' and a useful rounding routine using
bit-wise operators

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _BIT_ARRAY_H
 
2
#define _BIT_ARRAY_H 1
 
3
#include<stdio.h>
 
4
#include<stdlib.h>
 
5
#define BYTE_SIZE_IN_BITS 8
 
6
#define HALF_BYTE_SIZE 4
 
7
#define BYTE_SIZE_IN_BITS_2 6 
 
8
#define MASK_FIRST_TWO_MSB_BITS 192U
 
9
#define MASK_LAST_TWO_LSB_BITS 3U
 
10
typedef struct _barray_{
 
11
        unsigned char *barray;
 
12
        unsigned long width; 
 
13
        unsigned char msb_mask;
 
14
}BitArray;
 
15
/*Creates and returns a new BArray with the given
 
16
 *'width' in bits*/
 
17
BitArray *BArrayNew(unsigned long width);
 
18
/*BASIC OPERATIONS*/
 
19
/*Shift by 1 bit*/
 
20
void BArrayLShift();
 
21
void BArrayRShift();
 
22
/*
 
23
 *Shift by 2 bits: useful in 
 
24
 *manipulating DNA strings
 
25
 */
 
26
void BArrayLShift2(BitArray *, unsigned char);
 
27
void BArrayRShift2(BitArray *, unsigned char);
 
28
/*Returns a bit string up-to 8 bits, from 
 
29
 *position 'i'. Note if idx+len > width, the
 
30
 *bit register is truncated appropriately.
 
31
 */
 
32
unsigned char BArrayGetBit(BitArray *, unsigned long, unsigned char);
 
33
void PrintBits(BitArray *);
 
34
void PrintBitsInByte(unsigned char);
 
35
void PrintBitString(unsigned char *, unsigned long); 
 
36
 
 
37
/*Reset the bit-array*/
 
38
void ResetBitArray(BitArray *);
 
39
#endif