Skip to content

Commit

Permalink
Merge remote-tracking branch 'geo/master' into stringvar
Browse files Browse the repository at this point in the history
  • Loading branch information
jarlela committed Sep 26, 2015
2 parents efac28c + 5113416 commit 286198e
Show file tree
Hide file tree
Showing 7 changed files with 252 additions and 262 deletions.
20 changes: 10 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
language: cpp
compiler:
- clang
# Documentation: http:https://docs.travis-ci.com/user/languages/julia/
language: julia
os:
- linux
- osx
julia:
- 0.4
notifications:
email: false
before_install:
- sudo add-apt-repository ppa:staticfloat/julia-deps -y
- sudo add-apt-repository ppa:staticfloat/julianightlies -y
- sudo apt-get update -qq -y
- sudo apt-get install libpcre3-dev julia -y
# uncomment the following lines to override the default test script
script:
- julia -e 'Pkg.init(); run(`ln -s $(pwd()) $(Pkg.dir())/NetCDF`); Pkg.resolve(); Pkg.build("NetCDF")'
- julia -e 'using NetCDF; @assert isdefined(:NetCDF); @assert typeof(NetCDF) === Module; include("$(Pkg.dir())/NetCDF/test/runtests.jl")'
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
- julia -e 'Pkg.clone("https://github.com/JuliaGeo/NetCDF.jl.git"); Pkg.test("NetCDF"; coverage=true)'
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
NetCDF.jl
============

[![Build Status](https://travis-ci.org/meggart/NetCDF.jl.png)](https://travis-ci.org/meggart/NetCDF.jl)
[![Build Status](https://travis-ci.org/JuliaGeo/NetCDF.jl.png)](https://travis-ci.org/JuliaGeo/NetCDF.jl)

NetCDF support for the julia programming language, there is a high-level and a medium-level interface for writing and reading netcdf files.

Expand Down Expand Up @@ -44,4 +44,4 @@ To learn more, have a look at https://github.com/meggart/NetCDF.jl/blob/master/d
Contact info:
Fabian Gans ([email protected])
Max-Planck-Institute for Biogeochemistry
Jena, Germany
Jena, Germany
5 changes: 3 additions & 2 deletions REQUIRE
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
julia 0.4-
BinDeps
@osx Homebrew
Compat
Conda
Compat
Formatting
22 changes: 6 additions & 16 deletions deps/build.jl
Original file line number Diff line number Diff line change
@@ -1,27 +1,17 @@
using BinDeps

@BinDeps.setup
netcdf = library_dependency("libnetcdf", aliases = ["libnetcdf4","libnetcdf-7"])

using Conda
provides(Conda.Manager, "libnetcdf", netcdf)

@osx_only begin
using Homebrew
netcdf = library_dependency("libnetcdf", aliases = ["libnetcdf.7"])
provides( Homebrew.HB, "netcdf", netcdf, os = :Darwin )
provides(Homebrew.HB, "netcdf", netcdf, os = :Darwin )
end

@linux_only begin
netcdf = library_dependency("libnetcdf", aliases = ["libnetcdf-7"])
provides(AptGet, Dict("libnetcdf-dev"=>netcdf))
provides(Yum, Dict("netcdf-devel"=>netcdf))
end

@windows_only begin
netcdf = library_dependency("netcdf")
provides (Binaries,URI("http:https://www.paratools.com/Azure/NetCDF/paratools-netcdf-4.1.3.tar.gz"),netcdf,os=:Windows)
push!(DL_LOAD_PATH, joinpath(Pkg.dir(),"NetCDF","deps","netcdf-4.1.3","bin"))
end

provides(Sources, URI("ftp:https://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.0.tar.gz"),netcdf)

provides(AptGet, Dict("libnetcdf-dev"=>netcdf), os = :Linux)
provides(Yum, Dict("netcdf-devel"=>netcdf), os = :Linux)

@BinDeps.install
68 changes: 34 additions & 34 deletions src/NetCDF.jl

Large diffs are not rendered by default.

321 changes: 160 additions & 161 deletions src/netcdf_c.jl

Large diffs are not rendered by default.

74 changes: 37 additions & 37 deletions src/netcdf_helpers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ const error_description=
const funext = [ (Float64, "double","float64a"),
(Float32, "float","float32a"),
(Int32 , "int","int32a"),
(Uint8 , "text","uint8a"),
(UInt8 , "text","uint8a"),
(Int8 , "schar","int8a"),
(Int16 , "short","int16a"),
(Int64 , "longlong","int64a")]

const ida = zeros(Int32,1)
const namea = zeros(Uint8,NC_MAX_NAME+1)
const namea = zeros(UInt8,NC_MAX_NAME+1)
const lengtha = zeros(Csize_t,1)
const dimida = zeros(Int32,NC_MAX_VAR_DIMS)
const ndima = zeros(Int32,1)
Expand All @@ -55,14 +55,14 @@ const dima = zeros(Int32,1)
const varida = zeros(Int32,1)
const vara = zeros(Int32,1);
const dumids = zeros(Int32,NC_MAX_DIMS)
const gstart = zeros(Uint,NC_MAX_DIMS)
const gcount = zeros(Uint,NC_MAX_DIMS)
const gstart = zeros(UInt,NC_MAX_DIMS)
const gcount = zeros(UInt,NC_MAX_DIMS)

for (t,ending,aname) in funext
@eval const $(symbol(aname)) = zeros($t,1)
end

function nc_open(fname::String,omode::Uint16)
function nc_open(fname::AbstractString,omode::UInt16)
# Function to open file fname, returns a NetCDF file ID
nc_open(fname,omode,ida)
return ida[1]
Expand All @@ -80,7 +80,7 @@ function nc_inq_dim(id::Integer,idim::Integer)
return (name,lengtha[1])
end

function nc_inq_dimid(id::Integer,name::String)
function nc_inq_dimid(id::Integer,name::AbstractString)
# Function to read dimension id for a given function name
NetCDF.nc_inq_dimid(id,name,dimida)
return dimida[1]
Expand Down Expand Up @@ -124,38 +124,38 @@ function nc_get_att(ncid::Integer,varid::Integer,attnum::Integer)
end

#Define methods for writing attributes
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Int8}) = nc_put_att_schar(ncid,varid,name,NC_BYTE,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Int16}) = nc_put_att_short(ncid,varid,name,NC_SHORT,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Int32}) = nc_put_att_int(ncid,varid,name,NC_INT,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Int64}) = nc_put_att_long(ncid,varid,name,NC_LONG,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Float32}) = nc_put_att_float(ncid,varid,name,NC_FLOAT,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Float64}) = nc_put_att_double(ncid,varid,name,NC_DOUBLE,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::String) = nc_put_att_text(ncid,varid,name,length(val)+1,val)
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Array{Any}) = error("Writing attribute array of type Any is not possible")

nc_put_att(ncid::Integer,varid::Integer,name::String,val::Int8) = begin int8a[1] = val; nc_put_att(ncid,varid,name,int8a) end
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Int16) = begin int16a[1] = val; nc_put_att(ncid,varid,name,int16a) end
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Int32) = begin int32a[1] = val; nc_put_att(ncid,varid,name,int32a) end
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Int64) = begin int64a[1] = val; nc_put_att(ncid,varid,name,int64a) end
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Float32) = begin float32a[1] = val; nc_put_att(ncid,varid,name,float32a) end
nc_put_att(ncid::Integer,varid::Integer,name::String,val::Float64) = begin float64a[1] = val; nc_put_att(ncid,varid,name,float64a) end
nc_put_att(ncid::Integer,varid::Integer,name::String,val) = error("Writing attribute of type $(typeof(val)) is currently not possible.")



function nc_get_att(ncid::Integer,varid::Integer,name::String,attype::Integer,attlen::Integer)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Int8}) = nc_put_att_schar(ncid,varid,name,NC_BYTE,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Int16}) = nc_put_att_short(ncid,varid,name,NC_SHORT,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Int32}) = nc_put_att_int(ncid,varid,name,NC_INT,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Int64}) = nc_put_att_long(ncid,varid,name,NC_LONG,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Float32}) = nc_put_att_float(ncid,varid,name,NC_FLOAT,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Float64}) = nc_put_att_double(ncid,varid,name,NC_DOUBLE,length(val),val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::AbstractString) = nc_put_att_text(ncid,varid,name,length(val)+1,val)
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Array{Any}) = error("Writing attribute array of type Any is not possible")

nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Int8) = begin int8a[1] = val; nc_put_att(ncid,varid,name,int8a) end
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Int16) = begin int16a[1] = val; nc_put_att(ncid,varid,name,int16a) end
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Int32) = begin int32a[1] = val; nc_put_att(ncid,varid,name,int32a) end
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Int64) = begin int64a[1] = val; nc_put_att(ncid,varid,name,int64a) end
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Float32) = begin float32a[1] = val; nc_put_att(ncid,varid,name,float32a) end
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val::Float64) = begin float64a[1] = val; nc_put_att(ncid,varid,name,float64a) end
nc_put_att(ncid::Integer,varid::Integer,name::AbstractString,val) = error("Writing attribute of type $(typeof(val)) is currently not possible.")



function nc_get_att(ncid::Integer,varid::Integer,name::AbstractString,attype::Integer,attlen::Integer)
valsa=Array(nctype2jltype[attype],attlen)
nc_get_att!(ncid,varid,name,valsa)
end

nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Uint8}) = begin nc_get_att_text(ncid,varid,name,valsa); ascii(valsa) end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Ptr{Uint8}}) = begin nc_get_att_string(ncid,varid,name,valsa); [bytestring(pointer(valsa[i])) for i=1:length(valsa)] end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Int8}) = begin nc_get_att_schar(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Int16}) = begin nc_get_att_short(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Int32}) = begin nc_get_att_int(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Int64}) = begin nc_get_att_long(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Float32}) = begin nc_get_att_float(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::String,valsa::Array{Float64}) = begin nc_get_att_double(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{UInt8}) = begin nc_get_att_text(ncid,varid,name,valsa); ascii(valsa) end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Ptr{UInt8}}) = begin nc_get_att_string(ncid,varid,name,valsa); [bytestring(pointer(valsa[i])) for i=1:length(valsa)] end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Int8}) = begin nc_get_att_schar(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Int16}) = begin nc_get_att_short(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Int32}) = begin nc_get_att_int(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Int64}) = begin nc_get_att_long(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Float32}) = begin nc_get_att_float(ncid,varid,name,valsa); valsa end
nc_get_att!(ncid::Integer,varid::Integer,name::AbstractString,valsa::Array{Float64}) = begin nc_get_att_double(ncid,varid,name,valsa); valsa end


function nc_inq_var(nc::NcFile,varid::Integer)
Expand Down Expand Up @@ -192,7 +192,7 @@ function getatts_all(ncid::Integer,varid::Integer,natts::Integer)
atts=Dict{Any,Any}()
for attnum=0:natts-1
attname,attval=nc_get_att(ncid,varid,attnum)
if ((length(attval)==1) & !(typeof(attval)<:String))
if ((length(attval)==1) & !(typeof(attval)<:AbstractString))
attval=attval[1]
end
atts[attname]=attval
Expand Down Expand Up @@ -242,7 +242,7 @@ function parsedimargs(dim)
#Determine number of dimensions
ndim=0
for a in dim
if (typeof(a)<:String)
if (typeof(a)<:AbstractString)
ndim=ndim+1
end
NC_VERBOSE ? println(a) : nothing
Expand All @@ -251,7 +251,7 @@ function parsedimargs(dim)
idim=1
for a in dim
NC_VERBOSE ? println(a,idim) : nothing
if (typeof(a)<:String)
if (typeof(a)<:AbstractString)
#Assume a name is given
#first create an NcDim object from the last dim
if (name!=nothing)
Expand Down

0 comments on commit 286198e

Please sign in to comment.