/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef __com_sun_star_linguistic2_XSpellChecker_idl__
#define __com_sun_star_linguistic2_XSpellChecker_idl__

#include <com/sun/star/linguistic2/XSupportedLocales.idl>
#include <com/sun/star/lang/IllegalArgumentException.idl>
#include <com/sun/star/linguistic2/XDictionaryList.idl>
#include <com/sun/star/linguistic2/XSpellAlternatives.idl>
#include <com/sun/star/beans/PropertyValues.idl>


module com { module sun { module star { module linguistic2 {

/** This interface allows for spell checking.

    <P>It is possible to simply check if a word, in a specified language,
    is correct or additionally, if it was misspelled, some proposals
    how it might be correctly written.</P>

    @see    com::sun::star::linguistic2::XSupportedLocales
*/
published interface XSpellChecker : com::sun::star::linguistic2::XSupportedLocales
{
    /** checks if a word is spelled correctly in a given language.

        @returns
            `TRUE` if the word is spelled correctly using
             the specified language, `FALSE` otherwise.

        @param  aWord
            the word to be checked.

        @param aLocale
            the Locale (language) to be used.
            If the Locale is empty, the word is spelled correctly by
            definition.

            <P>If <var>aLocale</var> is not supported an
            IllegalArgumentException exception is raised.</P>

        @param aProperties
            provides property values to be used for this function call only.
            It is usually empty in order to use the default values supplied with
            the property set.

        @see    com::sun::star::lang::Locale
    */
    boolean isValid(
            [in] string aWord,
            [in] com::sun::star::lang::Locale aLocale,
            [in] com::sun::star::beans::PropertyValues aProperties )
        raises( com::sun::star::lang::IllegalArgumentException );

    /** This method checks if a word is spelled correctly in a given
        language.

        @returns
            `NULL` if <var>aWord</var> is spelled correctly using
             <var>aLocale</var>. Otherwise, an XSpellAlternatives
             object with information about the reason of failure and, if available,
             proposals for spelling alternatives will be returned.

        @param  aWord
            the word to be checked.

        @param aLocale
            the language to be used.

            <P>If the language is not supported an IllegalArgumentException exception is raised.

        @param aProperties
            provides property values to be used for this function call only.
            It is usually empty in order to use the default values supplied with
            the property set.
        exception is raised.</P>

        @see    com::sun::star::linguistic2::XSpellAlternatives
        @see    com::sun::star::lang::Locale
    */
    com::sun::star::linguistic2::XSpellAlternatives spell(
            [in] string aWord,
            [in] com::sun::star::lang::Locale aLocale,
            [in] com::sun::star::beans::PropertyValues aProperties )
        raises( com::sun::star::lang::IllegalArgumentException );

};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
