~ubuntu-branches/ubuntu/oneiric/mozc/oneiric

« back to all changes in this revision

Viewing changes to rewriter/rewriter.cc

  • Committer: Bazaar Package Importer
  • Author(s): Nobuhiro Iwamatsu
  • Date: 2010-07-14 03:26:47 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100714032647-13qjisj6m8cm8jdx
Tags: 0.12.410.102-1
* New upstream release (Closes: #588971).
  - Add mozc-server, mozc-utils-gui and scim-mozc packages.
* Update debian/rules.
  Add --gypdir option to build_mozc.py.
* Update debian/control.
  - Bumped standards-version to 3.9.0.
  - Update description.
* Add mozc icon (Closes: #588972).
* Add patch which revises issue 18.
  ibus_mozc_issue18.patch
* kFreeBSD build support.
  support_kfreebsd.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
#include <string>
33
33
#include <vector>
34
34
#include "base/util.h"
 
35
#include "base/singleton.h"
35
36
#include "converter/segments.h"
36
37
#include "rewriter/collocation_rewriter.h"
37
 
#include "rewriter/rewriter.h"
38
38
#include "rewriter/rewriter_interface.h"
39
39
#include "rewriter/date_rewriter.h"
40
40
#include "rewriter/number_rewriter.h"
45
45
#include "rewriter/version_rewriter.h"
46
46
 
47
47
namespace mozc {
48
 
 
49
 
Rewriter::Rewriter() {
50
 
  rewriters_.push_back(new SingleKanjiRewriter);
51
 
  rewriters_.push_back(new SymbolRewriter);
52
 
  rewriters_.push_back(new NumberRewriter);
53
 
  rewriters_.push_back(new CollocationRewriter);
54
 
  rewriters_.push_back(new DateRewriter);
55
 
  rewriters_.push_back(new UserBoundaryHistoryRewriter);
56
 
  rewriters_.push_back(new UserSegmentHistoryRewriter);
57
 
  rewriters_.push_back(new VersionRewriter);
 
48
namespace {
 
49
 
 
50
class RewriterImpl: public RewriterInterface {
 
51
 public:
 
52
  RewriterImpl();
 
53
  virtual ~RewriterImpl();
 
54
 
 
55
  // Rewrite request and/or result.
 
56
  // Can call converter if need be
 
57
  virtual bool Rewrite(Segments *segments) const;
 
58
 
 
59
  // Hook(s) for all mutable operations
 
60
  virtual void Finish(Segments *segments);
 
61
 
 
62
  virtual bool Sync();
 
63
 
 
64
  virtual void Clear();
 
65
 
 
66
 private:
 
67
  SingleKanjiRewriter *single_kanji_rewriter_;
 
68
  SymbolRewriter *symbol_rewriter_;
 
69
  NumberRewriter *number_rewriter_;
 
70
  CollocationRewriter *collocation_rewriter_;
 
71
  DateRewriter *date_rewriter_;
 
72
  UserBoundaryHistoryRewriter *user_boundary_history_rewriter_;
 
73
  UserSegmentHistoryRewriter  *user_segment_history_rewriter_;
 
74
  VersionRewriter *version_rewriter_;
 
75
  vector<RewriterInterface *> rewriters_;
 
76
};
 
77
 
 
78
RewriterImpl::RewriterImpl()
 
79
    : single_kanji_rewriter_(new SingleKanjiRewriter),
 
80
      symbol_rewriter_(new SymbolRewriter),
 
81
      number_rewriter_(new NumberRewriter),
 
82
      collocation_rewriter_(new CollocationRewriter),
 
83
      date_rewriter_(new DateRewriter),
 
84
      user_boundary_history_rewriter_(new UserBoundaryHistoryRewriter),
 
85
      user_segment_history_rewriter_(new UserSegmentHistoryRewriter),
 
86
      version_rewriter_(new VersionRewriter) {
 
87
  rewriters_.push_back(single_kanji_rewriter_);
 
88
  rewriters_.push_back(symbol_rewriter_);
 
89
  rewriters_.push_back(number_rewriter_);
 
90
  rewriters_.push_back(collocation_rewriter_);
 
91
  rewriters_.push_back(date_rewriter_);
 
92
  rewriters_.push_back(user_boundary_history_rewriter_);
 
93
  rewriters_.push_back(user_segment_history_rewriter_);
 
94
  rewriters_.push_back(version_rewriter_);
58
95
}
59
96
 
60
 
Rewriter::~Rewriter() {
61
 
  for (size_t i = 0; i < rewriters_.size(); ++i) {
62
 
    delete rewriters_[i];
63
 
  }
 
97
RewriterImpl::~RewriterImpl() {
 
98
  delete single_kanji_rewriter_;
 
99
  delete symbol_rewriter_;
 
100
  delete number_rewriter_;
 
101
  delete collocation_rewriter_;
 
102
  delete date_rewriter_;
 
103
  delete user_boundary_history_rewriter_;
 
104
  delete user_segment_history_rewriter_;
 
105
  delete version_rewriter_;
64
106
  rewriters_.clear();
65
107
}
66
108
 
67
 
void Rewriter::Finish(Segments *segments) {
 
109
void RewriterImpl::Finish(Segments *segments) {
68
110
  for (size_t i = 0; i < rewriters_.size(); ++i) {
69
111
    rewriters_[i]->Finish(segments);
70
112
  }
71
113
}
72
114
 
73
 
bool Rewriter::Rewrite(Segments *segments) const {
 
115
bool RewriterImpl::Rewrite(Segments *segments) const {
74
116
  bool result = false;
75
117
  for (size_t i = 0; i < rewriters_.size(); ++i) {
76
118
    result |= rewriters_[i]->Rewrite(segments);
78
120
  return result;
79
121
}
80
122
 
81
 
bool Rewriter::Sync() {
 
123
bool RewriterImpl::Sync() {
82
124
  bool result = false;
83
125
  for (size_t i = 0; i < rewriters_.size(); ++i) {
84
126
    result |= rewriters_[i]->Sync();
86
128
  return result;
87
129
}
88
130
 
89
 
void Rewriter::Clear() {
 
131
void RewriterImpl::Clear() {
90
132
  for (size_t i = 0; i < rewriters_.size(); ++i) {
91
133
    rewriters_[i]->Clear();
92
134
  }
93
135
}
 
136
 
 
137
RewriterInterface *g_rewriter = NULL;
 
138
}  // namespace
 
139
 
 
140
RewriterInterface *RewriterFactory::GetRewriter() {
 
141
  if (g_rewriter == NULL) {
 
142
    return Singleton<RewriterImpl>::get();
 
143
  } else {
 
144
    return g_rewriter;
 
145
  }
 
146
}
 
147
 
 
148
void RewriterFactory::SetRewriter(RewriterInterface *rewriter) {
 
149
  g_rewriter = rewriter;
 
150
}
94
151
}  // namespace mozc