Commit 2f954888 authored by Ole Streicher's avatar Ole Streicher

New upstream version 0.9.8

parent b54153cb
......@@ -14,7 +14,7 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(GDL)
# X.X.X CVS becomes release X.X.X+1
set(VERSION "0.9.7")
set(VERSION "0.9.8")
enable_testing()
include(CheckIncludeFile)
......@@ -70,6 +70,9 @@ set(GRIBDIR "" CACHE PATH "GDL: Specifiy the GRIB directory tree")
set(QHULL OFF CACHE BOOL "GDL: Enable Qhull ?")
set(QHULLDIR "" CACHE PATH "GDL: Specifiy the QHULL directory tree")
set(GLPK OFF CACHE BOOL "GDL: Enable GLPK (for function SIMPLEX) ?")
set(GLPKDIR "" CACHE PATH "GDL: Specify the GLPK directory tree")
# GraphicsMagick is a good alternative to ImageMagick, if GM OK, we don't look for IM
set(GRAPHICSMAGICK ON CACHE BOOL "GDL: Enable GraphicsMagick ?")
set(GRAPHICSMAGICKDIR "" CACHE PATH "GDL: Specify the GraphicsMagick directory tree")
......@@ -310,17 +313,18 @@ endif(PNGLIB)
# openmp
# -DOPENMP=ON|OFF
if(OPENMP)
find_package(OpenMP QUIET)
if(OPENMP_FOUND)
add_definitions(${OpenMP_CXX_FLAGS})
if(MSVC)
set(LIBRARIES ${LIBRARIES} vcomp)
elseif(WIN32)
find_package(OpenMP QUIET)
set(USE_OPENMP ${OPENMP_FOUND})
if(OPENMP_FOUND)
add_definitions(${OpenMP_CXX_FLAGS})
if(MSVC)
set(LIBRARIES ${LIBRARIES} vcomp)
elseif(WIN32)
set(LIBRARIES ${LIBRARIES} gomp pthread)
else()
set(LIBRARIES ${LIBRARIES} ${OpenMP_CXX_FLAGS})
endif()
endif(OPENMP_FOUND)
set(LIBRARIES ${LIBRARIES} ${OpenMP_CXX_FLAGS})
endif()
endif(OPENMP_FOUND)
else(OPENMP)
# we need to define those semaphore posix symbols, do it with threads libs
find_package(Threads)
......@@ -354,7 +358,7 @@ endif(GSL_FOUND)
if(WIN32 AND NOT CYGWIN)
set(CMAKE_PREFIX_PATH ${XDRDIR})
find_package(xdr)
find_package(Xdr)
set(HAVE_LIBXDR ${XDR_FOUND})
if(XDR_FOUND)
set(LIBRARIES ${LIBRARIES} ${XDR_LIBRARIES})
......@@ -365,7 +369,7 @@ else(XDR_FOUND)
endif(XDR_FOUND)
set(CMAKE_PREFIX_PATH ${PCREDIR})
find_package(pcre)
find_package(PCRE)
set(HAVE_LIBPCRE ${PCRE_FOUND})
if(PCRE_FOUND)
set(LIBRARIES ${LIBRARIES} ${PCRE_LIBRARIES})
......@@ -374,7 +378,7 @@ else(PCRE_FOUND)
message(FATAL_ERROR "pcre library is required but was not found.\n"
"Use -DPCREDIR=DIR to specify the pcre directory tree.")
endif(PCRE_FOUND)
LINK_LIBRARIES(shlwapi)
LINK_LIBRARIES(shlwapi gnurx)
endif(WIN32 AND NOT CYGWIN)
# PLplot MANDATORY
......@@ -429,12 +433,6 @@ if(PLPLOT_FOUND)
else(PLPLOT_PRIVATE_NOT_HIDDEN)
message(STATUS "Using a plplot library without private functions - workarounds will be used.")
endif(PLPLOT_PRIVATE_NOT_HIDDEN)
check_library_exists("${PLPLOT_LIBRARIES}" c_pllegend "" PLPLOT_HAS_LEGEND)
if(PLPLOT_HAS_LEGEND)
set(PLPLOT_HAS_LEGEND 1)
else(PLPLOT_HAS_LEGEND)
message(STATUS "Your plplot lib is too old for some gdl functions, please upgrade.")
endif(PLPLOT_HAS_LEGEND)
check_cxx_source_compiles("#include <plplot/plstream.h>
int main(){PLINT n; PLFLT x,y;plcallback::fill(n,&x,&y);}" PLPLOT_HAS_PLCALLBACK)
if(PLPLOT_HAS_PLCALLBACK)
......@@ -916,6 +914,25 @@ if(QHULL)
endif(QHULL_FOUND)
endif(QHULL)
# GLPK for Simplex ( Linear programming )
# GLPK (enable SIMPLEX command)
# -DGLPK=ON|OFF
# -DGLPKDIR=DIR
if(GLPK)
set(CMAKE_PREFIX_PATH ${GLPKDIR})
find_package(GLPK QUIET)
set(USE_GLPK ${GLPK_FOUND})
if(GLPK_FOUND)
set(LIBRARIES ${LIBRARIES} ${GLPK_LIBRARIES})
include_directories(${GLPK_INCLUDE_DIR})
else(GLPK_FOUND)
message(FATAL_ERROR "GLPK (Gnu Linear Programming Kit) is required but was not found.\n"
"Use -DGLPKDIR=DIR to specify the GLPK-devel directory tree.\n"
"Use -DGLPK=OFF to not use it.\n")
endif(GLPK_FOUND)
endif(GLPK)
#check_include_file(glpk.h HAVE_GLPK)
# gshhs
# -DGSHHS=ON|OFF
if(GSHHS)
......@@ -940,8 +957,9 @@ endif(GSHHS)
if(X11)
set(CMAKE_PREFIX_PATH ${X11DIR})
if(WIN32 AND NOT CYGWIN)
find_package(XPORTMINGW QUIET)
find_package(Xportmingw QUIET)
set(HAVE_X ${XPORTMINGW_FOUND})
set(USE_X ${XPORTMINGW_FOUND})
if(XPORTMINGW_FOUND)
set(LIBRARIES ${LIBRARIES} ${XPORTMINGW_LIBRARIES})
include_directories(${XPORTMINGW_INCLUDE_DIR})
......@@ -952,6 +970,7 @@ if(X11)
else(WIN32 AND NOT CYGWIN)
find_package(X11 QUIET)
set(HAVE_X ${X11_FOUND})
set(USE_X ${X11_FOUND})
if(X11_FOUND)
set(LIBRARIES ${LIBRARIES} ${X11_LIBRARIES})
include_directories(${X11_INCLUDE_DIR})
......@@ -1066,6 +1085,8 @@ module(GRAPHICSMAGICK "GRAPHICSMAGICK")
module(GRIB "GRIB ")
set(QHULL_LIBRARIES ${QHULL_LIBRARIES})
module(QHULL "QHULL ")
set(GLPK_LIBRARIES ${GLPK_LIBRARIES})
module(GLPK "GLPK ")
set(GSHHS_LIBRARIES ${GSHHS_INCLUDE_DIR})
module(GSHHS "GSHHS ")
module(PSLIB "pslib ")
......
# Find GLPK header and library.
#
# This module defines the following uncached variables:
# GLPK_FOUND, if false, do not try to use GLPK.
# GLPK_INCLUDE_DIRS, where to find glpk.h.
# GLPK_LIBRARIES, the libraries to link against to use the GLPK library
# GLPK_LIBRARY_DIRS, the directory where the GLPK library is found.
find_path(
GLPK_INCLUDE_DIR
glpk.h
PATHS /usr/local/include /usr/include
)
if( GLPK_INCLUDE_DIR )
find_library(
GLPK_LIBRARY
NAMES libglpk.so libglpk.a
PATHS /usr/lib64 /usr/local/lib /usr/lib
)
if( GLPK_LIBRARY )
set(GLPK_LIBRARY_DIR "")
get_filename_component(GLPK_LIBRARY_DIRS ${GLPK_LIBRARY} PATH)
# Set uncached variables as per standard.
set(GLPK_FOUND ON)
set(GLPK_INCLUDE_DIRS ${GLPK_INCLUDE_DIR})
set(GLPK_LIBRARIES ${GLPK_LIBRARY})
endif(GLPK_LIBRARY)
else(GLPK_INCLUDE_DIR)
message(FATAL_ERROR "FindGLPK: Could not find glpk.h")
endif(GLPK_INCLUDE_DIR)
if(GLPK_FOUND)
if(NOT GLPK_FIND_QUIETLY)
message(STATUS "FindGLPK: Found both glpk.h and libglpk.a")
endif(NOT GLPK_FIND_QUIETLY)
else(GLPK_FOUND)
if(GLPK_FIND_REQUIRED)
message(FATAL_ERROR "FindGLPK: Could not find glpk.h and/or libglpk.a")
endif(GLPK_FIND_REQUIRED)
endif(GLPK_FOUND)
#
# copyright : (c) 2012 Jeongbin Park
# The RealityGrid Steering Library
#
# 2012/Sep/18 Jeongbin Park added this file; to support Windows platform.
# Copyright (c) 2002-2010, University of Manchester, United Kingdom.
# All rights reserved.
#
# This program 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.
# This software is produced by Research Computing Services, University
# of Manchester as part of the RealityGrid project and associated
# follow on projects, funded by the EPSRC under grants GR/R67699/01,
# GR/R67699/02, GR/T27488/01, EP/C536452/1, EP/D500028/1,
# EP/F00561X/1.
#
# LICENCE TERMS
#
# 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 University of Manchester 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.
#
# Author: Robert Haines
find_library(XDR_LIBRARY NAMES xdr)
set(XDR_LIBRARIES ${XDR_LIBRARY})
find_path(XDR_INCLUDE_DIR NAMES rpc/xdr.h)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(XDR DEFAULT_MSG XDR_LIBRARIES XDR_INCLUDE_DIR)
if(XDR_INCLUDE_DIR)
# already in cache so be quiet
set(XDR_FIND_QUIETLY TRUE)
endif(XDR_INCLUDE_DIR)
# if we have rpc.h then we may *need* it for xdr.h
# so don't only look for xdr.h
find_path(RPC_INCLUDE_DIR "rpc/rpc.h")
# might only have xdr.h
if(RPC_INCLUDE_DIR STREQUAL "RPC_INCLUDE_DIR-NOTFOUND")
find_path(XDR_INCLUDE_DIR "rpc/xdr.h")
if(NOT XDR_INCLUDE_DIR STREQUAL "XDR_INCLUDE_DIR-NOTFOUND")
set(REG_HAS_XDR_H 1)
endif(NOT XDR_INCLUDE_DIR STREQUAL "XDR_INCLUDE_DIR-NOTFOUND")
else(RPC_INCLUDE_DIR STREQUAL "RPC_INCLUDE_DIR-NOTFOUND")
set(REG_HAS_RPC_H 1)
set(XDR_INCLUDE_DIR ${RPC_INCLUDE_DIR})
endif(RPC_INCLUDE_DIR STREQUAL "RPC_INCLUDE_DIR-NOTFOUND")
mark_as_advanced(
XDR_LIBRARY
XDR_LIBRARIES
XDR_INCLUDE_DIR
)
# find the lib and add it if found
find_library(XDR_LIBRARY NAMES rpc xdr_s xdr openxdr)
if(NOT XDR_LIBRARY STREQUAL "XDR_LIBRARY-NOTFOUND")
set(REG_EXTERNAL_LIBS ${REG_EXTERNAL_LIBS} ${XDR_LIBRARY})
endif(NOT XDR_LIBRARY STREQUAL "XDR_LIBRARY-NOTFOUND")
mark_as_advanced(RPC_INCLUDE_DIR XDR_INCLUDE_DIR XDR_LIBRARY)
# tend not to need a separate lib on Unix systems
# do need one for Windows and Cygwin
include(FindPackageHandleStandardArgs)
if(UNIX)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XDR DEFAULT_MSG XDR_INCLUDE_DIR)
else(UNIX)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XDR DEFAULT_MSG XDR_INCLUDE_DIR XDR_LIBRARY)
endif(UNIX)
\ No newline at end of file
......@@ -3639,7 +3639,7 @@ GDL 0.9.4:
* src/pro/idl_validname.pro:
three improvments in pro IDL_VALIDNAME: 1/ input as list of string OK,
2/ thanks to patch 66, better managment of 3 special chars: $, ! and \,
2/ thanks to patch 66, better management of 3 special chars: $, ! and \,
3/ "!" at first place and /convert_all is well managed.
2013-08-05 alaingdl <alaingdl@sf.net>
......@@ -3886,7 +3886,7 @@ GDL 0.9.4:
switching back the default history to 200: convenient, and similar behavior on the other side ;-)
* src/gsl_fun.cpp:
In QROMB and QROMO, better managment of keyword EPS=, thanks to patch 67.
In QROMB and QROMO, better management of keyword EPS=, thanks to patch 67.
At the same time, correcting a long living bug in the order of parameters
when calling GSL function : gsl_integration_qag(). Please report pbs !!
......@@ -4200,7 +4200,7 @@ GDL 0.9.4:
* src/basic_fun.cpp: removing extra "cout <<"
* src/basic_fun.cpp, src/libinit.cpp:
Initial managment of /source keyword in ROUTINE_INFO() [bug report 3612842].
Initial management of /source keyword in ROUTINE_INFO() [bug report 3612842].
Not ready when no parameter provided (in that case, all compiled procedures or functions
name/path informations must returned)
......@@ -5791,7 +5791,7 @@ GDL 0.9.3:
update test cases for QROMO (we should now cover all the cases)
* src/gsl_fun.cpp:
revised version of QROMO by M. Pinter. Should cover all the cases. Good managment of NaN/Inf ...
revised version of QROMO by M. Pinter. Should cover all the cases. Good management of NaN/Inf ...
* testsuite/test_fz_roots.pro:
tests cases for FZ_ROOTS (preliminary version, errors accumulation not managed !)
......@@ -5912,7 +5912,7 @@ GDL 0.9.3:
2012-03-15 alaingdl <alaingdl@sf.net>
* src/devicex.hpp, src/pro/loadct.pro:
better managment for color tables in LOADCT (good resultS around Coyote lib.)
better management for color tables in LOADCT (good resultS around Coyote lib.)
2012-03-13 alaingdl <alaingdl@sf.net>
......@@ -6181,7 +6181,7 @@ GDL 0.9.3:
QROMO: initial import of limited version only for range [a,+inf]; help welcome.
* src/gsl_fun.cpp:
QROMB: better managment of inputs (vectors, matrix); IDL doc. is wrong for that ([1],[8]) return [8], not [1]
QROMB: better management of inputs (vectors, matrix); IDL doc. is wrong for that ([1],[8]) return [8], not [1]
2012-01-12 alaingdl <alaingdl@sf.net>
......@@ -6213,7 +6213,7 @@ GDL 0.9.3:
2012-01-04 alaingdl <alaingdl@sf.net>
* src/gsl_fun.cpp:
in RANDOM(U/N), better managment of GAMMA values (exit if <= 0.; put to 1 if 0.0 < Gamma < 1.0)
in RANDOM(U/N), better management of GAMMA values (exit if <= 0.; put to 1 if 0.0 < Gamma < 1.0)
2012-01-03 slayoo <slayoo@sf.net>
......@@ -6259,7 +6259,7 @@ GDL 0.9.3:
initial import of TEST_GET_KBRD. 3 main cases are tested.
* src/basic_fun.cpp:
in GET_KBRD(), better managment of GET_KBRD(0) (see testsuite/test_get_kbrd.pro) [should be retest on OSX]
in GET_KBRD(), better management of GET_KBRD(0) (see testsuite/test_get_kbrd.pro) [should be retest on OSX]
* src/pro/identity.pro: in IDENTITY, bug corrected when N=1
......@@ -6507,7 +6507,7 @@ GDL 0.9.3:
initial import of a fake USERSYM to avoid stopping codes just because we don't know how to write USERSYM
* src/pro/read_ascii.pro, src/pro/read_jpeg.pro, src/pro/read_png.pro, src/pro/read_xwd.pro:
better managment when we try to read a directory when a real file is expected.
better management when we try to read a directory when a real file is expected.
* testsuite/Makefile.am, testsuite/Makefile.in, testsuite/test-read_ascii.pro, testsuite/test_image_statistics.pro:
initial import of TEST_IMAGE_STATISTICS; correction in TEST-READ_ASCII to be able to go to the end.
......@@ -8111,7 +8111,7 @@ GDL 0.9.1:
Still improving the CMake alternative. Now target (gdl) don't loose PATH to alternative librairies (pb on Debian where we need dedicated Image Magick version).
* CMake.tar.gz, gdl/CMake.tar.gz:
better managment of alternative path to ImageMagick lib. (need a "by-hand" Image Magick Lib. under Debian to avoid a known pb with Plplot (two seccessive calls to WINDOW will crash, see testsuite/test_known_bugs.pro))
better management of alternative path to ImageMagick lib. (need a "by-hand" Image Magick Lib. under Debian to avoid a known pb with Plplot (two seccessive calls to WINDOW will crash, see testsuite/test_known_bugs.pro))
2010-08-27 slayoo <slayoo@DaMachineInDaMachine>
......@@ -8509,7 +8509,7 @@ GDL 0.9:
LUDC.pro: initial import of a fake one to be able to run the full time_test3 suite
* src/file.cpp:
trying to manage "~" in GDL_PATH, also for EXPAND_PATH. No managment of redundant entry (like ".");
trying to manage "~" in GDL_PATH, also for EXPAND_PATH. No management of redundant entry (like ".");
not sure path expansion always done ...
2010-04-21 slayoo <slayoo@DaMachineInDaMachine>
......@@ -8619,7 +8619,7 @@ GDL 0.9:
in TVSCL, return when input array not given or without elements
* testsuite/test_read_jpeg.pro:
better managment of big images/small screen (and vertical/horizontal modes)
better management of big images/small screen (and vertical/horizontal modes)
2010-04-13 m_schellens <m_schellens@DaMachineInDaMachine>
......@@ -9004,7 +9004,7 @@ GDL 0.9:
Wider tests for PRODUCT(), including /int, /nan, and dim param.
* src/basic_fun.cpp:
dding managment of keyword /Integer to PRODUCT function (see test_product.pro)
dding management of keyword /Integer to PRODUCT function (see test_product.pro)
This Keyword is used in current Astron Lib.
2010-02-09 alaingdl <alaingdl@DaMachineInDaMachine>
......@@ -9990,7 +9990,7 @@ GDL 0.9rc3:
2009-07-30 alaingdl <alaingdl@DaMachineInDaMachine>
* TODO, src/math_fun_ac.cpp, testsuite/test_besel.pro, testsuite/test_tv.pro:
BESEL family functions: non integer order, X neg, Complex, and better managment of arrays dimensions
BESEL family functions: non integer order, X neg, Complex, and better management of arrays dimensions
2009-07-29 alaingdl <alaingdl@DaMachineInDaMachine>
......@@ -10841,7 +10841,7 @@ GDL 0.9pre6:
2007-12-21 alaingdl <alaingdl at users.sourceforge.net>
* INSTALL, NEWS, src/basic_pro.cpp, src/dinterpreter.cpp, src/gdljournal.cpp:
history file managment (~/.gdl/history)
history file management (~/.gdl/history)
2007-12-09 m_schellens <m_schellens at users.sourceforge.net>
......
......@@ -68,14 +68,16 @@ of targets and `make edit_cache' to edit cache results
examples:
mkdir gdl-clang
cd gdl-clang
cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DPYTHON=NO -DCMAKE_CXX_FLAGS_RELEASE=" -Wno-return-type -Wno-switch -Wno-format -O3 " -DPLPLOTDIR="somewhere" -DLIBPROJ4=YES -DGSHHS=YES -DGSHHSDIR="/where/is/gshhs" -DHDF=YES -DUDUNITS=YES -DUDUNITSDIR=/usr/include/udunits2 -DQHULL=OFF ../gdl-lastversionfromcvs
cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DPYTHON=NO -DCMAKE_CXX_FLAGS_RELEASE=" -Wno-return-type -Wno-switch -Wno-format -O3 " -DPLPLOTDIR="somewhere" -DLIBPROJ4=YES -DGSHHS=YES -DGSHHSDIR="/where/is/gshhs" -DHDF=YES -DUDUNITS=YES -DUDUNITSDIR=/usr/include/udunits2 -DQHULL=OFF -DGLPK=OFF ../gdl-lastversionfromcvs
make -j 4
sudo make install
or
or
mkdir gdl-gcc
cd gdl-gcc
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON=NO -DCMAKE_CXX_FLAGS_RELEASE=" -Wno-return-type -Wno-switch -Wno-format -O3 " -DPLPLOTDIR="somewhere" -DLIBPROJ4=YES -DGSHHS=YES -DGSHHSDIR="/where/is/gshhs" -DHDF=YES -DUDUNITS=YES -DUDUNITSDIR=/usr/include/udunits2 -DQHULL=OFF ../gdl-lastversionfromcvs
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON=NO -DCMAKE_CXX_FLAGS_RELEASE=" -Wno-return-type -Wno-switch -Wno-format " -DPLPLOTDIR="somewhere" -DLIBPROJ4=YES -DGSHHS=YES -DGSHHSDIR="/where/is/gshhs" -DHDF=YES -DUDUNITS=YES -DUDUNITSDIR=/usr/include/udunits2 -DQHULL=OFF -DGLPK=OFF ../gdl-lastversionfromcvs
make -j 4
sudo make install
For a special compilation with all the options for fast code, including targeting the machine's processor type, use:
-DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_RELEASE="-O3 -fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range -march=native -DNDEBUG"
......@@ -186,7 +186,7 @@
Add 6 linestyles (via !p.linestyle or keyword) for PLOT, OPLOT, PLOTS
Improved memory management.
Improved new implementation of struct arrays.
Managment of an history (ASCII) file save in ~/.gdl/history (with memory of previous sessions)
Management of an history (ASCII) file save in ~/.gdl/history (with memory of previous sessions)
Add initial CURSOR, limited but functionnal (know
limitations documented in program) and !mouse
......@@ -234,7 +234,7 @@
- ATAN: precision fixes (atan(float, float) -> float(atan(double, double))),
/PHASE keyword support, array-scalar argument combination support,
two-complex-arguments case support
- BESEL*: non integer order, X neg, Complex, and better managment of arrays dimensions
- BESEL*: non integer order, X neg, Complex, and better management of arrays dimensions
- BETA: better management of the dimensions of output arrays
- BROYDEN: initial import
- CALENDAR: initial import
......@@ -572,7 +572,7 @@
0.9.4:
- when compiled with Eigen3 library, significant speed improvement
in MATRIX_MULTIPLY() (and # operators), especially on multi-cores
Basic loading managment included (if some core are busy).
Basic loading management included (if some core are busy).
- LIST and HASH are fully supported
even left-side struct access is possible e. g.:
GDL> h = HASH('key',{tag1:1}) & h['key'].tag1 = 3
......@@ -674,3 +674,13 @@
- Experimental: calling GDL with option "--fussy" or setting the environment variable "GDL_IS_FUSSY"
enforces the STRICTARR compiling scheme (array index always between "[]"). This generally speeds up
procedure compilation.
0.9.8
- internal SAVE and RESTORE. CMSVLIB not required anymore, and references to it removed in the documentation.
- better L64 support (N_ELEMENTS, SIZE)
- better TOTAL for large numbers or special types
- update RANDOM ...
- revisited MAKE_DLL & CALL_EXTERNAL
- MIN, MAX /ABSOLUTE.
- support of DEVICE,SET_CHARACTER_SIZE, and consequently a better positioning and sizes of plots.
This diff is collapsed.
......@@ -33,7 +33,6 @@
#cmakedefine HAVE_PLPLOT_SLABELFUNC 1
#cmakedefine HAVE_PLPLOT_WIDTH 1
#cmakedefine PLPLOT_PRIVATE_NOT_HIDDEN 1
#cmakedefine PLPLOT_HAS_LEGEND
#cmakedefine PLPLOT_HAS_PLCALLBACK
#define _WCHAR_H_CPLUSPLUS_98_CONFORMANCE_ 1
......@@ -68,6 +67,7 @@
#cmakedefine USE_FFTW 1
#cmakedefine USE_GRIB 1
#cmakedefine PL_HAVE_QHULL 1
#cmakedefine USE_GLPK 1
#cmakedefine USE_GSHHS 1
#cmakedefine USE_HDF 1
#cmakedefine USE_HDF5 1
......@@ -77,9 +77,11 @@
#cmakedefine USE_MPI 1
#cmakedefine USE_NETCDF 1
#cmakedefine USE_NETCDF4 1
#cmakedefine USE_OPENMP 1
#cmakedefine USE_PYTHON 1
#cmakedefine USE_UDUNITS 1
#cmakedefine USE_PSLIB 1
#cmakedefine USE_EIGEN 1
#cmakedefine USE_PNGLIB 1
#cmakedefine USE_X 1
#endif
/***************************************************************************
call_external - CALL_EXTERNAL function for GDL
-------------------
begin : October 16, 2010
copyright : (C) 2010 by Christoph Fuchs
email : j.c.fuchs@gmx.de
***************************************************************************/
/***************************************************************************
* *
* This program 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. *
* *
***************************************************************************/
CALL_EXTERNAL: call a routine from a sharable object library
This is the Linux/Unix implementation of call_external for GDL,
and should compile on systems which support dlopen/dlsym/dlclose.
It should work as close as possible as in IDL (exceptions see below).
It has been tested on
Linux (SuSe 11, both 32 and 64 bit)
Solaris 5.10 (x86 32bit)
INSTALLATION
============
1. Copy new.cpp and new.hpp to the src directory of your gdl-0.9
distribution
2. Edit libinit.cpp and enter the following lines near the end
of the file (before the //sort )
// call_external
const string call_externalKey[] = {"VALUE", "ALL_VALUE", "RETURN_TYPE",
"B_VALUE", "I_VALUE", "L_VALUE", "F_VALUE", "D_VALUE",
"UI_VALUE", "UL_VALUE", "L64_VALUE", "UL64_VALUE", "S_VALUE",
"UNLOAD", "ALL_GDL", "STRUCT_ALIGN_BYTES", KLISTEND };
new DLibFun(lib::call_external, string("CALL_EXTERNAL"), -1, call_externalKey);
3. make && make install
TEST
====
1. Generate a shared object file from test_ce.c (see comments in this file)
2. Start gdl and enter the command
test_ce
SYNTAX
=======
ret = CALL_EXTERNAL(image, entry [, p1, ... pn] [, keywords] )
Arguments:
image (string) Name of the sharable object
entry (string) Name of the routine in image
p1, ..., pn (any) Any number of parameters passed
to the routine
Keywords: (*)=extension in GDL, not in IDL
RETURN_TYPE=n Indicates the type of the return value of the called
routine, this value will be returned by CALL_EXTERNAL
to GDL.
n is an integer with the same meaning as e.g. the type
field of the SIZE function (see basegdl.hpp for a list
of types). Possible values for n are those for numeric
types except COMPLEX and DCOMPLEX.
The default value is n=3 (GDL type LONG, which corresponds
to C type int).
Alternatively one of the following keywords may be used:
/B_VALUE equivalent to RETURN_TYPE=1 (BYTE)
/I_VALUE equivalent to RETURN_TYPE=2 (INTEGER)
/L_VALUE (*) equivalent to RETURN_TYPE=3 (LONG) (default)
/F_VALUE equivalent to RETURN_TYPE=4 (FLOAT)
/D_VALUE equivalent to RETURN_TYPE=5 (DOUBLE)
/UI_VALUE equivalent to RETURN_TYPE=12 (UINT)
/UL_VALUE equivalent to RETURN_TYPE=13 (ULONG)
/L64_VALUE equivalent to RETURN_TYPE=14 (LONG64)
/UL64_VALUE equivalent to RETURN_TYPE=15 (ULONG64)
/S_VALUE equivalent to RETURN_TYPE=6 (STRING, the called function
should return char*)
/ALL_VALUE The default is to pass all parameters by reference.
If this keyword is set, all parameters are passed by value.
/ALL_GDL (*) Pass all parameters as BaseGDL*
Alternatively these methods can be requested for each parameter
individually with the following keyword:
VALUE=array where array is an integer array with as many elements as parameters.
If the i_th element of array is 0, the i_th parameter will be
passed by reference to an equivalent C variable, strings are