~ubuntu-branches/ubuntu/maverick/pdns/maverick-updates

« back to all changes in this revision

Viewing changes to pdns/backends/bind/huffman.hh

  • Committer: Bazaar Package Importer
  • Author(s): Matthijs Mohlmann, Matthijs Mohlmann, Christoph Haas
  • Date: 2007-04-15 23:23:39 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070415232339-5x3scc8gx04e50um
Tags: 2.9.21-1
[ Matthijs Mohlmann ]
* New upstream release. (Closes: #420294)
* Remove meta pdns package.
* Added new sqlite3 backend package.
* Months and minutes where mixed up. (Closes: #406462)
* Case sensitivity in bind backend caused PowerDNS to not serve a certain
  zone. (Closes: #406461)
* Bind backend forgot about zones on a notify. (Closes: #398213)

[ Christoph Haas ]
* Documented incorporated backend bind. (Closes: #415471)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
    PowerDNS Versatile Database Driven Nameserver
3
 
    Copyright (C) 2002  PowerDNS.COM BV
4
 
 
5
 
    This program is free software; you can redistribute it and/or modify
6
 
    it under the terms of the GNU General Public License as published by
7
 
    the Free Software Foundation; either version 2 of the License, or
8
 
    (at your option) any later version.
9
 
 
10
 
    This program is distributed in the hope that it will be useful,
11
 
    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
    GNU General Public License for more details.
14
 
 
15
 
    You should have received a copy of the GNU General Public License
16
 
    along with this program; if not, write to the Free Software
17
 
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
 
*/
19
 
#ifndef PDNS_HUFFMAN
20
 
#define PDNS_HUFFMAN
21
 
#include <string>
22
 
#include <bitset>
23
 
#include <map>
24
 
#include <sstream>
25
 
#include <vector>
26
 
#include "../../ahuexception.hh"
27
 
 
28
 
using namespace std;
29
 
 
30
 
class HuffmanCodec
31
 
{
32
 
public:
33
 
  HuffmanCodec();
34
 
  void encode(const string &in, string &out);
35
 
  void decode(const string &compressed, string &out);
36
 
  void passthrough(bool);
37
 
  string decode(const string &in) {
38
 
    string tmp;
39
 
    decode(in,tmp);
40
 
    return tmp;
41
 
  }
42
 
private:
43
 
  void bitify(const string &full, string &out);
44
 
  void unbitify(const string &in, string &full);
45
 
  void set(char c,const string &code);
46
 
  map<char,string> d_dict;
47
 
  vector<map<string,char> >d_rdict;
48
 
  size_t d_min, d_max;
49
 
  string d_last_compressed;
50
 
  string d_last_out;
51
 
  bool d_passthrough;
52
 
};
53
 
#endif /* PDNS_HUFFMAN */