2
2
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4
4
* Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
6
6
* The contents of this file are subject to the terms of either the GNU Lesser
7
7
* General Public License Version 2.1 only ("LGPL") or the Common Development and
8
8
* Distribution License ("CDDL")(collectively, the "License"). You may not use this
9
9
* file except in compliance with the License. You can obtain a copy of the CDDL at
10
10
* http://www.opensource.org/licenses/cddl1.php and a copy of the LGPLv2.1 at
11
* http://www.opensource.org/licenses/lgpl-license.php. See the License for the
11
* http://www.opensource.org/licenses/lgpl-license.php. See the License for the
12
12
* specific language governing permissions and limitations under the License. When
13
13
* distributing the software, include this License Header Notice in each file and
14
14
* include the full text of the License in the License file as well as the
15
15
* following notice:
17
17
* NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
19
19
* For Covered Software in this distribution, this License shall be governed by the
21
21
* Any litigation relating to this License shall be subject to the jurisdiction of
22
22
* the Federal Courts of the Northern District of California and the state courts
23
23
* of the State of California, with venue lying in Santa Clara County, California.
27
27
* If you wish your version of this file to be governed by only the CDDL or only
28
28
* the LGPL Version 2.1, indicate your decision by adding "[Contributor]" elects to
29
29
* include this software in this distribution under the [CDDL or LGPL Version 2.1]
32
32
* Version 2.1, or to extend the choice of license to its licensees as provided
33
33
* above. However, if you add LGPL Version 2.1 code and therefore, elected the LGPL
34
34
* Version 2 license, then the option applies only if the new code is made subject
35
* to such option by the copyright holder.
35
* to such option by the copyright holder.
38
38
#ifndef _SIM_IDNGRAM_H
45
45
class CSIM_Idngram {
50
{ for (int i=0; i<N; ++i) ids[i] = 0; }
51
CSIM_Idngram & operator= (const CSIM_Idngram& r)
53
for (int i=0; i<N; ++i)
57
bool operator< (const CSIM_Idngram& r) const
59
for (int i=0; i<N; ++i) {
60
if (ids[i] < r.ids[i])
62
else if (ids[i] > r.ids[i])
68
bool operator> (const CSIM_Idngram& r) const
70
for (int i=0; i<N; ++i) {
71
if (ids[i] > r.ids[i])
73
else if (ids[i] < r.ids[i])
79
bool operator==(const CSIM_Idngram& r) const
81
for (int i=0; i<N; ++i)
82
if (ids[i] != r.ids[i]) return false;
50
{ for (int i = 0; i < N; ++i) ids[i] = 0; }
51
CSIM_Idngram & operator=(const CSIM_Idngram& r){
52
for (int i = 0; i < N; ++i)
56
bool operator<(const CSIM_Idngram& r) const {
57
for (int i = 0; i < N; ++i) {
58
if (ids[i] < r.ids[i])
60
else if (ids[i] > r.ids[i])
66
bool operator>(const CSIM_Idngram& r) const {
67
for (int i = 0; i < N; ++i) {
68
if (ids[i] > r.ids[i])
70
else if (ids[i] < r.ids[i])
76
bool operator==(const CSIM_Idngram& r) const {
77
for (int i = 0; i < N; ++i)
78
if (ids[i] != r.ids[i]) return false;
89
85
class CSIM_IdngramFreq : public CSIM_Idngram<N> {
92
: CSIM_Idngram<N>(), freq(0) { }
93
CSIM_IdngramFreq& operator= (const CSIM_IdngramFreq& r)
95
for (int i=0; i<N; ++i)
96
this->ids[i] = r.ids[i];
100
bool read(FILE *fp, size_t& start_offset, size_t last_offset)
102
if (start_offset + size() <= last_offset) {
103
fseek(fp, start_offset, SEEK_SET);
104
if (fread(this->ids, sizeof(TSIMWordId), N, fp) == N && fread(&freq, sizeof(unsigned int), 1, fp) == 1) {
105
start_offset += size();
88
: CSIM_Idngram<N>(), freq(0) { }
89
CSIM_IdngramFreq& operator=(const CSIM_IdngramFreq& r){
90
for (int i = 0; i < N; ++i)
91
this->ids[i] = r.ids[i];
95
bool read(FILE *fp, size_t& start_offset, size_t last_offset){
96
if (start_offset + size() <= last_offset) {
97
fseek(fp, start_offset, SEEK_SET);
98
if (fread(this->ids, sizeof(TSIMWordId), N,
100
fread(&freq, sizeof(unsigned int), 1, fp) == 1) {
101
start_offset += size();
113
size_t size() { return N*sizeof(TSIMWordId) + sizeof(unsigned int); }
109
size_t size() { return N * sizeof(TSIMWordId) + sizeof(unsigned int); }