2 * Smart Common Input Method
4 * Copyright (c) 2005 James Su <suzhe@tsinghua.org.cn>
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this program; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20 * Boston, MA 02111-1307 USA
22 * $Id: scim_filter_module.cpp,v 1.5 2005/05/24 12:22:51 suzhe Exp $
26 #define Uses_SCIM_FILTER_MODULE
27 #include "scim_private.h"
32 FilterModule::FilterModule ()
34 m_filter_create_filter (0),
35 m_filter_get_filter_info (0),
36 m_number_of_filters (0)
40 FilterModule::FilterModule (const String &name, const ConfigPointer &config)
42 m_filter_create_filter (0),
43 m_filter_get_filter_info (0),
44 m_number_of_filters (0)
50 FilterModule::load (const String &name, const ConfigPointer &config)
53 if (!m_module.load (name, "Filter"))
57 (FilterModuleInitFunc) m_module.symbol ("scim_filter_module_init");
59 m_filter_create_filter =
60 (FilterModuleCreateFilterFunc) m_module.symbol ("scim_filter_module_create_filter");
62 m_filter_get_filter_info =
63 (FilterModuleGetFilterInfoFunc) m_module.symbol ("scim_filter_module_get_filter_info");
65 if (!m_filter_init || !m_filter_create_filter || !m_filter_get_filter_info ||
66 (m_number_of_filters = m_filter_init (config)) == 0) {
69 m_filter_create_filter = 0;
70 m_filter_get_filter_info = 0;
76 m_filter_create_filter = 0;
77 m_filter_get_filter_info = 0;
85 FilterModule::unload ()
87 return m_module.unload ();
91 FilterModule::valid () const
93 return (m_module.valid () && m_filter_init && m_number_of_filters > 0 &&
94 m_filter_create_filter && m_filter_get_filter_info);
98 FilterModule::create_filter (unsigned int index) const
100 if (valid () && index < m_number_of_filters)
101 return m_filter_create_filter (index);
103 return FilterFactoryPointer (0);
107 FilterModule::get_filter_info (unsigned int index, FilterInfo &info) const
109 if (valid () && index < m_number_of_filters)
110 return m_filter_get_filter_info (index, info);
116 FilterModule::number_of_filters () const
118 return m_number_of_filters;
122 int scim_get_filter_module_list (std::vector <String>& engine_list)
124 return scim_get_module_list (engine_list, "Filter");
131 vi:ts=4:nowrap:ai:expandtab