kopia lustrzana https://gitlab.com/sane-project/backends
161 wiersze
5.4 KiB
C
161 wiersze
5.4 KiB
C
/* sane - Scanner Access Now Easy.
|
|
Copyright (C) 1996 David Mosberger-Tang and Andreas Beck
|
|
Copyright (C) 2002, 2003 Henning Meier-Geinitz
|
|
|
|
This file is part of the SANE package.
|
|
|
|
SANE is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
SANE is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with sane; see the file COPYING. If not, write to the Free
|
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
As a special exception, the authors of SANE give permission for
|
|
additional uses of the libraries contained in this release of SANE.
|
|
|
|
The exception is that, if you link a SANE library with other files
|
|
to produce an executable, this does not by itself cause the
|
|
resulting executable to be covered by the GNU General Public
|
|
License. Your use of that executable is in no way restricted on
|
|
account of linking the SANE library code into it.
|
|
|
|
This exception does not, however, invalidate any other reasons why
|
|
the executable file might be covered by the GNU General Public
|
|
License.
|
|
|
|
If you submit changes to SANE to the maintainers to be included in
|
|
a subsequent release, you agree by submitting the changes that
|
|
those changes may be distributed with this exception intact.
|
|
|
|
If you write modifications of your own for SANE, it is your choice
|
|
whether to permit this exception to apply to your modifications.
|
|
If you do not wish that, delete this exception notice.
|
|
*/
|
|
|
|
/** @file sanei.h
|
|
* Convenience macros and function declarations for backends
|
|
* @sa sanei_backend.h sanei_thread.h
|
|
*/
|
|
|
|
/* Doxygen documentation */
|
|
|
|
/** @mainpage SANEI (SANE internal routines) documentation
|
|
*
|
|
* @image html sane-logo2.jpg
|
|
* @section intro Introduction
|
|
*
|
|
* The header files in the include/sane/ directory named sanei_*.h provide
|
|
* function declarations and macros that can be used by every SANE backend.
|
|
* Their implementations can be found in the sanei/ directory. The code aims
|
|
* to be platform-independent to avoid lots of \#ifdef code in the backends.
|
|
* Please use the SANEI functions wherever possible.
|
|
*
|
|
* This documentation was created by the use of doxygen, the
|
|
* doc/doxygen-sanei.conf configuration file and documentation in the sanei_*.h
|
|
* files.
|
|
*
|
|
* This documentation is far from complete. Any help is appreciated.
|
|
*
|
|
* @section additional Additional documentation
|
|
* - The SANE standard can be found at <a
|
|
* href="http://www.sane-project.org/html/">the SANE webserver</a>,
|
|
* though the PostScript version produced from the source may be more recent.
|
|
* - Information on how to write a backend: <a
|
|
* href="../backend-writing.txt">backend-writing.txt</a>.
|
|
* - General SANE documentation is on <a
|
|
* href="http://www.sane-project.org/docs.html">the SANE documentation
|
|
* page</a>.
|
|
*
|
|
* @section contact Contact
|
|
*
|
|
* The common way to contact the developers of SANE is the sane-devel
|
|
* mailing list. See the <a
|
|
* href="http://www.sane-project.org/mailing-lists.html">mailing list webpage</a>
|
|
* for details. That's the place to ask questions, report bugs, or announce
|
|
* a new backend.
|
|
*
|
|
*/
|
|
|
|
#ifndef sanei_h
|
|
#define sanei_h
|
|
|
|
#include <sane/sane.h>
|
|
|
|
/** @name Public macros and functions
|
|
* @{
|
|
*/
|
|
/** @def STRINGIFY(x)
|
|
* Turn parameter into string.
|
|
*/
|
|
/** @def PASTE(x,y)
|
|
* Concatenate parameters.
|
|
*
|
|
*/
|
|
/** @def NELEMS(a)
|
|
* Return number of elements of an array.
|
|
*
|
|
*/
|
|
|
|
/** @fn extern SANE_Status sanei_check_value (const SANE_Option_Descriptor * opt, void * value);
|
|
* Check the constraints of a SANE option.
|
|
*
|
|
* @param opt option to check
|
|
* @param value value of the option
|
|
*
|
|
* @return
|
|
* - SANE_STATUS_GOOD - on success
|
|
* - SANE_STATUS_INVAL - if the value doesn't fit inside the constraint
|
|
* or any other error occured
|
|
* @sa sanei_constrain_value()
|
|
*/
|
|
|
|
/** @fn extern SANE_Status sanei_constrain_value (const SANE_Option_Descriptor * opt, void * value, SANE_Word * info);
|
|
* Check the constraints of a SANE option and adjust its value if necessary.
|
|
*
|
|
* Depending on the type of the option and constraint, value is modified
|
|
* to fit inside constraint.
|
|
*
|
|
* @param opt option to check
|
|
* @param value value of the option
|
|
* @param info info is set to SANE_INFO_INEXACT if value was changed
|
|
*
|
|
* @return
|
|
* - SANE_STATUS_GOOD - on success
|
|
* - SANE_STATUS_INVAL - if the function wasn't able to fit value into the
|
|
* constraint or any other error occured
|
|
* @sa sanei_check_value()
|
|
*/
|
|
|
|
/* @} */
|
|
|
|
/* A few convenience macros: */
|
|
/** @hideinitializer */
|
|
#define NELEMS(a) ((int)(sizeof (a) / sizeof (a[0])))
|
|
|
|
/** @hideinitializer */
|
|
#define STRINGIFY1(x) #x
|
|
/** @hideinitializer */
|
|
#define STRINGIFY(x) STRINGIFY1(x)
|
|
|
|
/** @hideinitializer */
|
|
#define PASTE1(x,y) x##y
|
|
/** @hideinitializer */
|
|
#define PASTE(x,y) PASTE1(x,y)
|
|
|
|
extern SANE_Status sanei_check_value (const SANE_Option_Descriptor * opt,
|
|
void * value);
|
|
|
|
extern SANE_Status sanei_constrain_value (const SANE_Option_Descriptor * opt,
|
|
void * value, SANE_Word * info);
|
|
|
|
|
|
#endif /* sanei_h */
|