LALStdio.h

Go to the documentation of this file.
00001 /*
00002 *  Copyright (C) 2007 Jolien Creighton
00003 *
00004 *  This program is free software; you can redistribute it and/or modify
00005 *  it under the terms of the GNU General Public License as published by
00006 *  the Free Software Foundation; either version 2 of the License, or
00007 *  (at your option) any later version.
00008 *
00009 *  This program is distributed in the hope that it will be useful,
00010 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 *  GNU General Public License for more details.
00013 *
00014 *  You should have received a copy of the GNU General Public License
00015 *  along with with program; see the file COPYING. If not, write to the
00016 *  Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00017 *  MA  02111-1307  USA
00018 */
00019 
00020 #if 0 /* autodoc block */
00021 
00022 <lalVerbatim file="LALStdioHV">
00023 $Id: LALStdio.h,v 1.3 2007/09/21 19:24:56 jolien Exp $
00024 </lalVerbatim>
00025 
00026 <lalLaTeX>
00027 
00028 \section{Header \texttt{LALStdio.h}}
00029 \label{s:LALStdio.h}
00030 
00031 Provides LAL functions similar to the non-file functions in \verb+<stdio.h>+.
00032 
00033 \subsection*{Synopsis}
00034 \begin{verbatim}
00035 #include <lal/LALStdio.h>
00036 #include <lal/FileIO.h>
00037 \end{verbatim}
00038 
00039 \noindent This header provides the LALsnprintf function.
00040 
00041 \vfill{\footnotesize\input{LALStdioHV}}
00042 \newpage\input{LALStdC}
00043 </lalLaTeX>
00044 #endif /* autodoc block */
00045 
00046 #ifndef _LALSTDIO_H
00047 #define _LALSTDIO_H
00048 
00049 #include <stdio.h>
00050 #include <stdarg.h>
00051 #include <lal/LALConfig.h>
00052 #include <lal/LALRCSID.h>
00053 
00054 #ifdef __cplusplus
00055 extern "C" {
00056 #endif
00057 
00058 NRCSID( LALSTDIOH, "$Id: LALStdio.h,v 1.3 2007/09/21 19:24:56 jolien Exp $" );
00059 
00060 #define LALFopen fopen
00061 #define LALFclose fclose
00062 
00063 
00064 #if LAL_SIZEOF_SHORT == 2
00065 #define __LAL_INT2_PRI_PREFIX__ ""
00066 #define __LAL_INT2_SCN_PREFIX__ "h"
00067 #elif LAL_SIZEOF_INT == 2
00068 #define __LAL_INT2_PRI_PREFIX__ ""
00069 #define __LAL_INT2_SCN_PREFIX__ ""
00070 #else
00071 #error "ERROR: NO 2 BYTE INTEGER FOUND"
00072 #endif
00073 
00074 #if LAL_SIZEOF_INT == 4
00075 #define __LAL_INT4_PRI_PREFIX__ ""
00076 #define __LAL_INT4_SCN_PREFIX__ ""
00077 #elif LAL_SIZEOF_LONG == 4
00078 #define __LAL_INT4_PRI_PREFIX__ "l"
00079 #define __LAL_INT4_SCN_PREFIX__ "l"
00080 #else
00081 #error "ERROR: NO 4 BYTE INTEGER FOUND"
00082 #endif
00083 
00084 #if LAL_SIZEOF_LONG == 8
00085 #define __LAL_INT8_PRI_PREFIX__ "l"
00086 #define __LAL_INT8_SCN_PREFIX__ "l"
00087 #elif LAL_SIZEOF_LONG_LONG == 8
00088 #define __LAL_INT8_PRI_PREFIX__ "ll"
00089 #define __LAL_INT8_SCN_PREFIX__ "ll"
00090 #else
00091 #error "ERROR: NO 8 BYTE INTEGER FOUND"
00092 #endif
00093 
00094 #define LAL_INT2_PRId __LAL_INT2_PRI_PREFIX__ "d"
00095 #define LAL_INT2_PRIi __LAL_INT2_PRI_PREFIX__ "i"
00096 #define LAL_INT2_PRIo __LAL_INT2_PRI_PREFIX__ "o"
00097 #define LAL_INT2_PRIu __LAL_INT2_PRI_PREFIX__ "u"
00098 #define LAL_INT2_PRIx __LAL_INT2_PRI_PREFIX__ "x"
00099 #define LAL_INT2_PRIX __LAL_INT2_PRI_PREFIX__ "X"
00100 
00101 #define LAL_INT4_PRId __LAL_INT4_PRI_PREFIX__ "d"
00102 #define LAL_INT4_PRIi __LAL_INT4_PRI_PREFIX__ "i"
00103 #define LAL_INT4_PRIo __LAL_INT4_PRI_PREFIX__ "o"
00104 #define LAL_INT4_PRIu __LAL_INT4_PRI_PREFIX__ "u"
00105 #define LAL_INT4_PRIx __LAL_INT4_PRI_PREFIX__ "x"
00106 #define LAL_INT4_PRIX __LAL_INT4_PRI_PREFIX__ "X"
00107 
00108 #define LAL_INT8_PRId __LAL_INT8_PRI_PREFIX__ "d"
00109 #define LAL_INT8_PRIi __LAL_INT8_PRI_PREFIX__ "i"
00110 #define LAL_INT8_PRIo __LAL_INT8_PRI_PREFIX__ "o"
00111 #define LAL_INT8_PRIu __LAL_INT8_PRI_PREFIX__ "u"
00112 #define LAL_INT8_PRIx __LAL_INT8_PRI_PREFIX__ "x"
00113 #define LAL_INT8_PRIX __LAL_INT8_PRI_PREFIX__ "X"
00114 
00115 #define LAL_INT2_SCNd __LAL_INT2_SCN_PREFIX__ "d"
00116 #define LAL_INT2_SCNi __LAL_INT2_SCN_PREFIX__ "i"
00117 #define LAL_INT2_SCNo __LAL_INT2_SCN_PREFIX__ "o"
00118 #define LAL_INT2_SCNu __LAL_INT2_SCN_PREFIX__ "u"
00119 #define LAL_INT2_SCNx __LAL_INT2_SCN_PREFIX__ "x"
00120 
00121 #define LAL_INT4_SCNd __LAL_INT4_SCN_PREFIX__ "d"
00122 #define LAL_INT4_SCNi __LAL_INT4_SCN_PREFIX__ "i"
00123 #define LAL_INT4_SCNo __LAL_INT4_SCN_PREFIX__ "o"
00124 #define LAL_INT4_SCNu __LAL_INT4_SCN_PREFIX__ "u"
00125 #define LAL_INT4_SCNx __LAL_INT4_SCN_PREFIX__ "x"
00126 
00127 #define LAL_INT8_SCNd __LAL_INT8_SCN_PREFIX__ "d"
00128 #define LAL_INT8_SCNi __LAL_INT8_SCN_PREFIX__ "i"
00129 #define LAL_INT8_SCNo __LAL_INT8_SCN_PREFIX__ "o"
00130 #define LAL_INT8_SCNu __LAL_INT8_SCN_PREFIX__ "u"
00131 #define LAL_INT8_SCNx __LAL_INT8_SCN_PREFIX__ "x"
00132 
00133 /* convenient versions of above that can be used in
00134  * either scanf or printf (decimal integers only) */
00135 #define LAL_INT2_FORMAT  LAL_INT2_SCNd
00136 #define LAL_INT4_FORMAT  LAL_INT4_SCNd
00137 #define LAL_INT8_FORMAT  LAL_INT8_SCNd
00138 #define LAL_UINT2_FORMAT LAL_INT2_SCNu
00139 #define LAL_UINT4_FORMAT LAL_INT4_SCNu
00140 #define LAL_UINT8_FORMAT LAL_INT8_SCNu
00141 #define LAL_REAL4_FORMAT "g"
00142 #define LAL_REAL8_FORMAT "lg"
00143 
00144 int
00145 LALSnprintf( char *, size_t, const char *, ... );
00146 
00147 int
00148 LALVsnprintf( char *, size_t, const char *, va_list );
00149 
00150 #ifdef __cplusplus
00151 }
00152 #endif
00153 
00154 #endif /* _LALSTDIO_H */

Generated on Mon Oct 6 02:31:48 2008 for LAL by  doxygen 1.5.2