From 71d91089b6ca3d761774d3fc542f3cf1d98e435f Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Fri, 4 Feb 2011 00:38:48 +0900 Subject: [PATCH] unihandecode: introduce borg to reduce memory consumption --- src/calibre/ebooks/unihandecode/pykakasi/h2a.py | 8 ++++++++ src/calibre/ebooks/unihandecode/pykakasi/jisyo.py | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/calibre/ebooks/unihandecode/pykakasi/h2a.py b/src/calibre/ebooks/unihandecode/pykakasi/h2a.py index d4da21ba42..83bb6a8d6a 100644 --- a/src/calibre/ebooks/unihandecode/pykakasi/h2a.py +++ b/src/calibre/ebooks/unihandecode/pykakasi/h2a.py @@ -163,6 +163,14 @@ class H2a (object): u"\u3093\u304a":"n'o", } +# this class is Borg + _shared_state = {} + + def __new__(cls, *p, **k): + self = object.__new__(cls, *p, **k) + self.__dict__ = cls._shared_state + return self + def isHiragana(self, char): return ( 0x3040 < ord(char) and ord(char) < 0x3094) diff --git a/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py b/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py index 3d6d1be173..d56e409ee5 100644 --- a/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py +++ b/src/calibre/ebooks/unihandecode/pykakasi/jisyo.py @@ -15,6 +15,14 @@ class jisyo (object): kanadict = None jisyo_table = {} +# this class is Borg + _shared_state = {} + + def __new__(cls, *p, **k): + self = object.__new__(cls, *p, **k) + self.__dict__ = cls._shared_state + return self + def __init__(self): if self.kanwadict is None: dictpath = resources.get_path(os.path.join('localization','pykakasi','kanwadict2.db'))