Ceres: upgrade to version 1.3.0
[blender.git] / extern / colamd / Include / UFconfig.h
1 /* ========================================================================== */
2 /* === UFconfig.h =========================================================== */
3 /* ========================================================================== */
4
5 /* Configuration file for SuiteSparse: a Suite of Sparse matrix packages
6  * (AMD, COLAMD, CCOLAMD, CAMD, CHOLMOD, UMFPACK, CXSparse, and others).
7  *
8  * UFconfig.h provides the definition of the long integer.  On most systems,
9  * a C program can be compiled in LP64 mode, in which long's and pointers are
10  * both 64-bits, and int's are 32-bits.  Windows 64, however, uses the LLP64
11  * model, in which int's and long's are 32-bits, and long long's and pointers
12  * are 64-bits.
13  *
14  * SuiteSparse packages that include long integer versions are
15  * intended for the LP64 mode.  However, as a workaround for Windows 64
16  * (and perhaps other systems), the long integer can be redefined.
17  *
18  * If _WIN64 is defined, then the __int64 type is used instead of long.
19  *
20  * The long integer can also be defined at compile time.  For example, this
21  * could be added to UFconfig.mk:
22  *
23  * CFLAGS = -O -D'UF_long=long long' -D'UF_long_max=9223372036854775801' \
24  *   -D'UF_long_id="%lld"'
25  *
26  * This file defines UF_long as either long (on all but _WIN64) or
27  * __int64 on Windows 64.  The intent is that a UF_long is always a 64-bit
28  * integer in a 64-bit code.  ptrdiff_t might be a better choice than long;
29  * it is always the same size as a pointer.
30  *
31  * This file also defines the SUITESPARSE_VERSION and related definitions.
32  *
33  * Copyright (c) 2007, University of Florida.  No licensing restrictions
34  * apply to this file or to the UFconfig directory.  Author: Timothy A. Davis.
35  */
36
37 #ifndef _UFCONFIG_H
38 #define _UFCONFIG_H
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 #include <limits.h>
45
46 /* ========================================================================== */
47 /* === UF_long ============================================================== */
48 /* ========================================================================== */
49
50 #ifndef UF_long
51
52 #ifdef _WIN64
53
54 #define UF_long __int64
55 #define UF_long_max _I64_MAX
56 #define UF_long_id "%I64d"
57
58 #else
59
60 #define UF_long long
61 #define UF_long_max LONG_MAX
62 #define UF_long_id "%ld"
63
64 #endif
65 #endif
66
67 /* ========================================================================== */
68 /* === SuiteSparse version ================================================== */
69 /* ========================================================================== */
70
71 /* SuiteSparse is not a package itself, but a collection of packages, some of
72  * which must be used together (UMFPACK requires AMD, CHOLMOD requires AMD,
73  * COLAMD, CAMD, and CCOLAMD, etc).  A version number is provided here for the
74  * collection itself.  The versions of packages within each version of
75  * SuiteSparse are meant to work together.  Combining one packge from one
76  * version of SuiteSparse, with another package from another version of
77  * SuiteSparse, may or may not work.
78  *
79  * SuiteSparse Version 3.4.0 contains the following packages:
80  *
81  *  AMD             version 2.2.0
82  *  CAMD            version 2.2.0
83  *  COLAMD          version 2.7.1
84  *  CCOLAMD         version 2.7.1
85  *  CHOLMOD         version 1.7.1
86  *  CSparse         version 2.2.3
87  *  CXSparse        version 2.2.3
88  *  KLU             version 1.1.0
89  *  BTF             version 1.1.0
90  *  LDL             version 2.0.1
91  *  UFconfig        version number is the same as SuiteSparse
92  *  UMFPACK         version 5.4.0
93  *  RBio            version 1.1.2
94  *  UFcollection    version 1.2.0
95  *  LINFACTOR       version 1.1.0
96  *  MESHND          version 1.1.1
97  *  SSMULT          version 2.0.0
98  *  MATLAB_Tools    no specific version number
99  *  SuiteSparseQR   version 1.1.2
100  *
101  * Other package dependencies:
102  *  BLAS            required by CHOLMOD and UMFPACK
103  *  LAPACK          required by CHOLMOD
104  *  METIS 4.0.1     required by CHOLMOD (optional) and KLU (optional)
105  */
106
107 #define SUITESPARSE_DATE "May 20, 2009"
108 #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub))
109 #define SUITESPARSE_MAIN_VERSION 3
110 #define SUITESPARSE_SUB_VERSION 4
111 #define SUITESPARSE_SUBSUB_VERSION 0
112 #define SUITESPARSE_VERSION \
113     SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION)
114
115 #ifdef __cplusplus
116 }
117 #endif
118 #endif