Mercurial > ~dholland > hg > ag > index.cgi
view anagram/support/bitmap.h @ 12:aab9ff6af791
Strengthen the build hack for non-DOS targets.
author | David A. Holland |
---|---|
date | Tue, 31 May 2022 00:58:42 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
/* * AnaGram, A System for Syntax Directed Programming * Copyright 1993-2000 Parsifal Software. All Rights Reserved. * See the file COPYING for license and usage terms. * * bitmap.h */ #ifndef BITMAP_H #define BITMAP_H #include <string.h> #include "port.h" #include "data.h" // sigh... XXX (for n_chars) #include "pointer.h" class Bitmap { protected: unsigned nChars; unsigned int nBits; ArrayPointer<unsigned char> map; public: Bitmap(int n) : nChars((n+7)/8), nBits(n), map(new unsigned char[nChars]) { memset(map, 0, nChars); } virtual ~Bitmap() {} virtual int setBit(int x); virtual int getBit(int x); virtual int list(int *x); virtual Bitmap &setRange(unsigned first, unsigned last); Bitmap &operator |= (const Bitmap &b); Bitmap &operator &= (const Bitmap &b); Bitmap &operator -= (const Bitmap &b); Bitmap &operator ~ (); }; class CharBitmap : public Bitmap { public: CharBitmap() : Bitmap(n_chars) {} CharBitmap(const Bitmap &b) : Bitmap(b) {} virtual int setBit(int x); virtual int getBit(int x); virtual int list(int *x); #ifdef _MSC_VER virtual Bitmap &setRange(unsigned first, unsigned last); #else virtual CharBitmap &setRange(unsigned first, unsigned last); #endif void blurCase(); void blurCase(int); }; #endif /* BITMAP_H */