~ubuntu-branches/ubuntu/dapper/lurker/dapper

« back to all changes in this revision

Viewing changes to libesort/Parameters.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Meurer
  • Date: 2004-09-26 16:27:51 UTC
  • Revision ID: james.westby@ubuntu.com-20040926162751-z1ohcjltv7ojtg6z
Tags: upstream-1.2
ImportĀ upstreamĀ versionĀ 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  $Id: Parameters.cpp,v 1.9 2003/06/23 14:38:42 terpstra Exp $
 
2
 *  
 
3
 *  Parameters.cpp - Control how the database is stored
 
4
 *  
 
5
 *  Copyright (C) 2002 - Wesley W. Terpstra
 
6
 *  
 
7
 *  License: GPL
 
8
 *  
 
9
 *  Authors: 'Wesley W. Terpstra' <wesley@terpstra.ca>
 
10
 *  
 
11
 *    This program is free software; you can redistribute it and/or modify
 
12
 *    it under the terms of the GNU General Public License as published by
 
13
 *    the Free Software Foundation; version 2.
 
14
 *    
 
15
 *    This program is distributed in the hope that it will be useful,
 
16
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
18
 *    GNU General Public License for more details.
 
19
 *    
 
20
 *    You should have received a copy of the GNU General Public License
 
21
 *    along with this program; if not, write to the Free Software
 
22
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
23
 */
 
24
 
 
25
#define _XOPEN_SOURCE 500
 
26
#define _FILE_OFFSET_BITS 64
 
27
 
 
28
#include "esort.h"
 
29
 
 
30
#include <cmath>
 
31
#include <cassert>
 
32
 
 
33
namespace ESort
 
34
{
 
35
 
 
36
Parameters::Parameters(
 
37
        bool          synced,
 
38
        bool          unique,
 
39
        unsigned int  version, 
 
40
        unsigned long blockSize, 
 
41
        unsigned long keySize)
 
42
 : version_(version), blockSize_(blockSize), keySize_(keySize), unique_(unique), synced_(synced)
 
43
{
 
44
        assert (keySize_ > 0);
 
45
        assert (keySize_ * 8 <= blockSize_);
 
46
        
 
47
        keyWidth_ = static_cast<int>(
 
48
                ceil(
 
49
                        log(static_cast<double>(keySize_)) /
 
50
                        log(256)
 
51
                ));
 
52
}
 
53
 
 
54
bool Parameters::isWider(const Parameters& p)
 
55
{
 
56
        return version_   > p.version_   ||
 
57
               blockSize_ > p.blockSize_ ||
 
58
               keySize_   > p.keySize_;
 
59
}
 
60
 
 
61
}