asteroidgen/vendor/OpenNL_psm.h

407 lines
9.2 KiB
C

#define GEOGRAM_PSM
#ifndef GEO_STATIC_LIBS
#define GEO_DYNAMIC_LIBS
#endif
/*
* Copyright (c) 2004-2010, Bruno Levy
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* * Neither the name of the ALICE Project-Team nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* If you modify this software, you should include a notice giving the
* name of the person performing the modification, the date of modification,
* and the reason for such modification.
*
* Contact: Bruno Levy
*
* levy@loria.fr
*
* ALICE Project
* LORIA, INRIA Lorraine,
* Campus Scientifique, BP 239
* 54506 VANDOEUVRE LES NANCY CEDEX
* FRANCE
*
*/
/*
* This file is a PSM (pluggable software module)
* generated from the distribution of Geogram.
*
* See Geogram documentation on:
* http://alice.loria.fr/software/geogram/doc/html/index.html
*
* See documentation of the functions bundled in this PSM on:
* http://alice.loria.fr/software/geogram/doc/html/nl_8h.html
*/
/******* extracted from nl_linkage.h *******/
#ifndef OPENL_LINKAGE_H
#define OPENL_LINKAGE_H
#ifdef GEO_DYNAMIC_LIBS
#define NL_SHARED_LIBS
#ifdef geogram_EXPORTS
#define NL_EXPORTS
#endif
#endif
#ifdef WIN32
#ifdef NL_SHARED_LIBS
#ifdef NL_EXPORTS
#define NLAPIENTRY __declspec( dllexport )
#else
#define NLAPIENTRY __declspec( dllimport )
#endif
#else
#define NLAPIENTRY
#endif
#else
#ifdef NL_SHARED_LIBS
#define NLAPIENTRY __attribute__ ((visibility("default")))
#else
#define NLAPIENTRY
#endif
#endif
#ifdef __GNUC__
#define NL_DEPRECATED(func) func __attribute__ ((deprecated))
#elif defined(_MSC_VER)
#define NL_DEPRECATED(func) __declspec(deprecated) func
#else
#define NL_DEPRECATED(func) func
#endif
#endif
/******* extracted from nl.h *******/
#ifndef OPENNL_H
#define OPENNL_H
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NL_VERSION_4_0 1
#define NLAPI
/*
* Deactivate warnings about documentation
* We do that, because CLANG's doxygen parser does not know
* some doxygen commands that we use (retval, copydoc) and
* generates many warnings for them...
*/
#if defined(__clang__)
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wdocumentation"
#pragma clang diagnostic ignored "-Wdocumentation-unknown-command"
#endif
typedef unsigned int NLenum;
typedef unsigned char NLboolean;
typedef unsigned int NLbitfield;
typedef void NLvoid;
typedef signed char NLbyte;
typedef short NLshort;
typedef int NLint;
typedef unsigned char NLubyte;
typedef unsigned short NLushort;
typedef unsigned int NLuint;
typedef unsigned long NLulong;
typedef int NLsizei;
typedef float NLfloat;
typedef double NLdouble;
typedef void(*NLfunc)(void);
typedef void* NLContext;
#define NL_FALSE 0x0
#define NL_TRUE 0x1
#define NL_SOLVER 0x100
#define NL_NB_VARIABLES 0x101
#define NL_LEAST_SQUARES 0x102
#define NL_MAX_ITERATIONS 0x103
#define NL_THRESHOLD 0x104
#define NL_OMEGA 0x105
#define NL_SYMMETRIC 0x106
#define NL_USED_ITERATIONS 0x107
#define NL_ERROR 0x108
#define NL_INNER_ITERATIONS 0x109
#define NL_ELAPSED_TIME 0x10a
#define NL_PRECONDITIONER 0x10b
#define NL_GFLOPS 0x10c
#define NL_NNZ 0x10d
#define NL_NB_SYSTEMS 0x10e
#define NL_SOLVER_DEFAULT 0x000
#define NL_CG 0x200
#define NL_BICGSTAB 0x201
#define NL_GMRES 0x202
#define NL_PRECOND_NONE 0x000
#define NL_PRECOND_JACOBI 0x300
#define NL_PRECOND_SSOR 0x301
#define NL_PRECOND_USER 0x303
#define NL_NORMALIZE_ROWS 0x400
#define NL_VERBOSE 0x401
NLAPI NLContext NLAPIENTRY nlNewContext(void);
NLAPI void NLAPIENTRY nlDeleteContext(NLContext context);
NLAPI void NLAPIENTRY nlMakeCurrent(NLContext context);
NLAPI NLContext NLAPIENTRY nlGetCurrent(void);
NLAPI NLboolean NLAPIENTRY nlInitExtension(const char* extension);
NLAPI NLboolean NLAPIENTRY nlExtensionIsInitialized(const char* extension);
NLAPI void NLAPIENTRY nlInitialize(int argc, char** argv);
NLAPI void NLAPIENTRY nlSolverParameterd(NLenum pname, NLdouble param);
NLAPI void NLAPIENTRY nlSolverParameteri(NLenum pname, NLint param);
NLAPI void NLAPIENTRY nlGetBooleanv(NLenum pname, NLboolean* params);
NLAPI void NLAPIENTRY nlGetDoublev(NLenum pname, NLdouble* params);
NLAPI void NLAPIENTRY nlGetIntegerv(NLenum pname, NLint* params);
NLAPI void NLAPIENTRY nlEnable(NLenum pname);
NLAPI void NLAPIENTRY nlDisable(NLenum pname);
NLAPI NLboolean nlIsEnabled(NLenum pname);
#define NL_FUNC_SOLVER 0x600
#define NL_FUNC_MATRIX 0x601
#define NL_FUNC_PRECONDITIONER 0x602
#define NL_FUNC_PROGRESS 0x603
NLAPI void NLAPIENTRY nlSetFunction(NLenum pname, NLfunc param);
NLAPI void NLAPIENTRY nlGetFunction(NLenum pname, NLfunc* param);
NLAPI void NLAPIENTRY nlSetVariable(NLuint i, NLdouble value);
NLAPI void NLAPIENTRY nlMultiSetVariable(
NLuint i, NLuint k, NLdouble value
);
NLAPI NLdouble NLAPIENTRY nlGetVariable(NLuint i);
NLAPI NLdouble NLAPIENTRY nlMultiGetVariable(NLuint i, NLuint k);
NLAPI void NLAPIENTRY nlLockVariable(NLuint index);
NLAPI void NLAPIENTRY nlUnlockVariable(NLuint index);
NLAPI NLboolean NLAPIENTRY nlVariableIsLocked(NLuint index);
#define NL_SYSTEM 0x0
#define NL_MATRIX 0x1
#define NL_ROW 0x2
NLAPI void NLAPIENTRY nlBegin(NLenum primitive);
NLAPI void NLAPIENTRY nlEnd(NLenum primitive);
NLAPI void NLAPIENTRY nlCoefficient(NLuint i, NLdouble value);
NLAPI void NLAPIENTRY nlAddIJCoefficient(
NLuint i, NLuint j, NLdouble value
);
NLAPI void NLAPIENTRY nlAddIRightHandSide(NLuint i, NLdouble value);
NLAPI void NLAPIENTRY nlMultiAddIRightHandSide(
NLuint i, NLuint k, NLdouble value
);
NLAPI void NLAPIENTRY nlRightHandSide(NLdouble value);
NLAPI void NLAPIENTRY nlMultiRightHandSide(NLuint k, NLdouble value);
NLAPI void NLAPIENTRY nlRowScaling(NLdouble value);
NLAPI NLboolean NLAPIENTRY nlSolve(void);
NLAPI void NLAPIENTRY nlUpdateRightHandSide(NLdouble* values);
#define NL_VARIABLES_BUFFER 0x1000
NLAPI void NLAPIENTRY nlBindBuffer(
NLenum buffer, NLuint k, void* addr, NLuint stride
);
#define NL_STIFFNESS_MATRIX 0x3001
#define NL_MASS_MATRIX 0x3002
NLAPI void NLAPIENTRY nlMatrixMode(NLenum matrix);
#define NL_NB_EIGENS NL_NB_SYSTEMS
#define NL_EIGEN_MAX_ITERATIONS NL_MAX_ITERATIONS
#define NL_EIGEN_THRESHOLD NL_THRESHOLD
#define NL_EIGEN_SOLVER 0x2000
#define NL_EIGEN_SHIFT 0x2001
#define NL_EIGEN_SHIFT_INVERT 0x2002
NLAPI void NLAPIENTRY nlEigenSolverParameterd(
NLenum pname, NLdouble val
);
NLAPI void NLAPIENTRY nlEigenSolverParameteri(
NLenum pname, NLint val
);
NLAPI void NLAPIENTRY nlEigenSolve(void);
NLAPI double NLAPIENTRY nlGetEigenValue(NLuint i);
typedef int (*NLprintfFunc)(const char* format, ...);
typedef int (*NLfprintfFunc)(FILE* out, const char* format, ...);
NLAPI void NLAPIENTRY nlPrintfFuncs(NLprintfFunc f1, NLfprintfFunc f2);
#ifdef __cplusplus
}
#endif
#endif
/******* extracted from nl_ext.h *******/
#ifndef OPENNL_EXT_H
#define OPENNL_EXT_H
#ifdef __cplusplus
extern "C" {
#endif
#define NL_SUPERLU_EXT 0x210
#define NL_PERM_SUPERLU_EXT 0x211
#define NL_SYMMETRIC_SUPERLU_EXT 0x212
#define NL_SOLVER_USER 0x213
#define NL_CHOLMOD_EXT 0x214
#define NL_ARPACK_EXT 0x215
#define NL_CUDA_PRECOND_ILU_EXT 0x220
#ifdef __cplusplus
}
#endif
#endif