Index: third_party/cld/bar/toolbar/cld/i18n/encodings/compact_lang_det/subsetsequence.h |
=================================================================== |
--- third_party/cld/bar/toolbar/cld/i18n/encodings/compact_lang_det/subsetsequence.h (revision 0) |
+++ third_party/cld/bar/toolbar/cld/i18n/encodings/compact_lang_det/subsetsequence.h (revision 0) |
@@ -0,0 +1,44 @@ |
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Remember a subset of a sequence of values, using a modest amount of memory |
+ |
+#ifndef I18N_ENCODINGS_COMPACT_LANG_DET_SUBSETSEQUENCE_H_ |
+#define I18N_ENCODINGS_COMPACT_LANG_DET_SUBSETSEQUENCE_H_ |
+ |
+#include "third_party/cld/bar/toolbar/cld/i18n/encodings/compact_lang_det/win/cld_basictypes.h" |
+#include "third_party/cld/bar/toolbar/cld/i18n/encodings/compact_lang_det/win/cld_google.h" |
+ |
+ |
+class SubsetSequence { |
+ public: |
+ void Init(); |
+ void Add(uint8 e); |
+ void Extract(int n, uint8* dst); |
+ SubsetSequence() {Init();} |
+ ~SubsetSequence() {}; |
+ |
+ private: |
+ uint8 Median3(int sub); |
+ void NewLevel(); |
+ void DoCarries(); |
+ void Flush(); |
+ |
+ static const int kMaxLevel_ = 16; // 3**16 ~= 43M (3**20 ~= 3.4B) |
+ static const int kMaxSeq_ = 128; |
+ |
+ int k_; |
+ int next_e_; |
+ int limit_e_; |
+ int level_limit_e_; |
+ uint8 seq_[kMaxSeq_]; |
+ uint8 count_[kMaxLevel_ + 1]; // +1 allows graceful overflow |
+ |
+ DISALLOW_EVIL_CONSTRUCTORS(SubsetSequence); |
+ |
+ // Require enough room to end up with 40 entries plus carrying space |
+ COMPILE_ASSERT(kMaxSeq_ >= (kMaxLevel_ * 2 + 40), kMaxSeq__is_too_small); |
+}; |
+ |
+#endif // I18N_ENCODINGS_COMPACT_LANG_DET_SUBSETSEQUENCE_H_ |
Property changes on: third_party\cld\bar\toolbar\cld\i18n\encodings\compact_lang_det\subsetsequence.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |