From c015fc811852ffc9848d174ba2e474811e9eae8f Mon Sep 17 00:00:00 2001
From: Volker Neff <m300859@mpipc39.mpimet.mpg.de>
Date: Thu, 8 Oct 2020 15:02:47 +0200
Subject: [PATCH] fix path problems

---
 interfaces/julia/cdi/src/cdi.jl  | 108 ----------------
 interfaces/julia/cdi_macro.jl    | 210 -------------------------------
 interfaces/julia/macro_parser.jl |  10 +-
 3 files changed, 5 insertions(+), 323 deletions(-)
 delete mode 100644 interfaces/julia/cdi/src/cdi.jl
 delete mode 100644 interfaces/julia/cdi_macro.jl

diff --git a/interfaces/julia/cdi/src/cdi.jl b/interfaces/julia/cdi/src/cdi.jl
deleted file mode 100644
index 3f4915e6e..000000000
--- a/interfaces/julia/cdi/src/cdi.jl
+++ /dev/null
@@ -1,108 +0,0 @@
-module cdi
-
-include("cdi_macro.jl")
-
-function gridCreate(gridtype::GRID_t, size::Number):Cint
-    return ccall((:gridCreate, "libcdi"),Cint, (Cint, Csize_t), gridtype, size)
-end
-
-function gridDefXsize(gridID::Cint, size::Number)
-    ccall((:gridDefXsize, "libcdi"), Cvoid, (Cint, Csize_t), gridID, size)
-end
-
-function gridDefYsize(gridID::Cint, size::Number)
-    ccall((:gridDefYsize, "libcdi"), Cvoid, (Cint, Csize_t), gridID, size)
-end
-
-function gridDefXvals(gridID::Cint, xvals::Vector{T}) where {T <: Number}
-    ccall((:gridDefXvals, "libcdi"), Cvoid, (Cint, Ptr{Cdouble}), gridID, xvals)
-end
-
-function gridDefYvals(gridID::Cint, yvals::Vector{T}) where {T <: Number}
-    ccall((:gridDefYvals, "libcdi"), Cvoid, (Cint, Ptr{Cdouble}), gridID, yvals)
-end
-
-function zaxisCreate(zaxistype::ZAXIS_t, size::Number):Cint
-    return ccall((:zaxisCreate, "libcdi"), Cint, (Cint, Cint), zaxistype, size)
-end
-
-function zaxisDefLevels(zaxisID::Cint, levels::Vector{T}) where {T <: Number}
-    ccall((:zaxisDefLevels, "libcdi"), Cvoid, (Cint, Ptr{Cdouble}), zaxisID, levels)
-end
-
-function vlistCreate():Cint
-    ccall((:vlistCreate, "libcdi"), Cint, ())
-end
-
-function vlistDefVar(vlistID::Cint, gridID::Cint, zaxisID::Cint, timetype::TIME_t)
-    ccall((:vlistDefVar, "libcdi"), Cint, (Cint, Cint, Cint, Cint), vlistID, gridID, zaxisID, timetype)
-end
-
-function vlistDefVarName(vlistID::Cint, varID::Cint, name::AbstractString)
-    ccall((:vlistDefVarName, "libcdi"), Cvoid, (Cint, Cint, Cstring), vlistID, varID, name)
-end
-
-function taxisCreate(taxistype::TAXIS_t)
-    return ccall((:taxisCreate, "libcdi"), Cint, (Cint,), taxistype)
-end
-
-function vlistDefTaxis(vlistID::Cint, taxisID::Cint)
-    ccall((:vlistDefTaxis, "libcdi"), Cvoid, (Cint, Cint), vlistID, taxisID)
-end
-
-function streamOpenWrite(path::AbstractString, filetype::FileTypes_t)
-    return ccall((:streamOpenWrite, "libcdi"), Cint, (Cstring, Cint), path, filetype)
-end
-
-function cdiStringError(cdiErrno::Cint)
-    str = ccall((:cdiStringError, "libcdi"), Cstring, (Cint,), cdiErrno)
-    return unsafe_string(str)
-end
-
-function streamDefVlist(streamID::Cint, vlistID::Cint)
-    ccall((:streamDefVlist, "libcdi"), Cvoid, (Cint, Cint), streamID, vlistID)
-end
-
-function taxisDefVdate(taxisID::Cint, date::Int64)
-    ccall((:taxisDefVdate, "libcdi"), Cvoid, (Cint, Int64), taxisID, date)
-end
-
-function taxisDefVtime(taxisID::Cint, time::Number)
-    ccall((:taxisDefVtime, "libcdi"), Cvoid, (Cint, Cint), taxisID, time)
-end
-
-function streamDefTimestep(streamID::Cint, tsID::Number)::Cint
-    return ccall((:streamDefTimestep, "libcdi"), Cint, (Cint, Cint), streamID, tsID)
-end
-
-function streamWriteVar(streamID::Cint, varID::Cint, data::Vector{T}, nmiss::Number) where {T <: Number}
-    ccall((:streamWriteVar, "libcdi"), Cvoid, (Cint, Cint, Ptr{Cdouble}, Csize_t), streamID, varID, data, nmiss)
-end
-
-function streamClose(streamID::Cint)
-    ccall((:streamClose, "libcdi"), Cvoid, (Cint,), streamID)
-end
-
-function vlistDestroy(vlistID::Cint)
-    ccall((:vlistDestroy, "libcdi"), Cvoid, (Cint,), vlistID)
-end
-
-function taxisDestroy(taxisID::Cint)
-    ccall((:taxisDestroy, "libcdi"), Cvoid, (Cint,), taxisID)
-end
-
-function zaxisDestroy(zaxisID::Cint)
-    ccall((:zaxisDestroy, "libcdi"), Cvoid, (Cint,), zaxisID)
-end
-
-function gridDestroy(gridID::Cint)
-    ccall((:gridDestroy, "libcdi"), Cvoid, (Cint,), gridID)
-end
-
-export gridCreate, gridDefXsize, gridDefYsize, gridDefXvals, gridDefYvals
-export zaxisCreate, zaxisDefLevels, vlistCreate, vlistDefVar, vlistDefVarName
-export taxisCreate, vlistDefTaxis, streamOpenWrite, cdiStringError
-export streamDefVlist, taxisDefVdate, taxisDefVtime, streamDefTimestep, streamWriteVar
-export streamClose, vlistDestroy, taxisDestroy, zaxisDestroy, gridDestroy
-
-end #module cdi
diff --git a/interfaces/julia/cdi_macro.jl b/interfaces/julia/cdi_macro.jl
deleted file mode 100644
index 2683faea0..000000000
--- a/interfaces/julia/cdi_macro.jl
+++ /dev/null
@@ -1,210 +0,0 @@
-@enum ByteOrder::Cint begin
-  CDI_BIGENDIAN = 0 #  Byte order BIGENDIAN
-  CDI_LITTLEENDIAN = 1 #  Byte order LITTLEENDIAN
-  CDI_PDPENDIAN = 2
-end
-
-
-
-@enum NumberType::Cint begin
-  CDI_REAL = 1 #  Real numbers
-  CDI_COMP = 2 #  Complex numbers
-  CDI_BOTH = 3 #  Both numbers
-end
-
-
-
-@enum ErrorIdentifier::Cint begin
-  CDI_EEOF = -1 #  The end of file was encountered
-  CDI_ETMOF = -9 #  Too many open files
-  CDI_ESYSTEM = -10 #  Operating system error
-  CDI_EINVAL = -20 #  Invalid argument
-  CDI_EISDIR = -21 #  Is a directory
-  CDI_EISEMPTY = -22 #  Is empty
-  CDI_EUFTYPE = -23 #  Unsupported file type
-  CDI_ELIBNAVAIL = -24 #  xxx library not available
-  CDI_EUFSTRUCT = -25 #  Unsupported file structure
-  CDI_EUNC4 = -26 #  Unsupported NetCDF4 structure
-  CDI_EDIMSIZE = -27 #  Invalid dimension size
-  CDI_ELIMIT = -99 #  Internal limits exceeded
-end
-
-
-
-@enum FileTypes::Cint begin
-  CDI_FILETYPE_GRB = 1 #  File type GRIB
-  CDI_FILETYPE_GRB2 = 2 #  File type GRIB version 2
-  CDI_FILETYPE_NC = 3 #  File type NetCDF
-  CDI_FILETYPE_NC2 = 4 #  File type NetCDF version 2 (64-bit offset)
-  CDI_FILETYPE_NC4 = 5 #  File type NetCDF version 4
-  CDI_FILETYPE_NC4C = 6 #  File type NetCDF version 4 (classic)
-  CDI_FILETYPE_NC5 = 7 #  File type NetCDF version 5 (64-bit data)
-  CDI_FILETYPE_SRV = 8 #  File type SERVICE
-  CDI_FILETYPE_EXT = 9 #  File type EXTRA
-  CDI_FILETYPE_IEG = 10 #  File type IEG
-end
-
-
-
-@enum CompressTypes::Cint begin
-  CDI_COMPRESS_NONE = 0
-  CDI_COMPRESS_SZIP = 1
-  CDI_COMPRESS_AEC = 2
-  CDI_COMPRESS_ZIP = 3
-  CDI_COMPRESS_JPEG = 4
-end
-
-
-
-@enum dataTypes::Cint begin
-  CDI_DATATYPE_PACK = 0
-  CDI_DATATYPE_PACK1 = 1
-  CDI_DATATYPE_PACK2 = 2
-  CDI_DATATYPE_PACK3 = 3
-  CDI_DATATYPE_PACK4 = 4
-  CDI_DATATYPE_PACK5 = 5
-  CDI_DATATYPE_PACK6 = 6
-  CDI_DATATYPE_PACK7 = 7
-  CDI_DATATYPE_PACK8 = 8
-  CDI_DATATYPE_PACK9 = 9
-  CDI_DATATYPE_PACK10 = 10
-  CDI_DATATYPE_PACK11 = 11
-  CDI_DATATYPE_PACK12 = 12
-  CDI_DATATYPE_PACK13 = 13
-  CDI_DATATYPE_PACK14 = 14
-  CDI_DATATYPE_PACK15 = 15
-  CDI_DATATYPE_PACK16 = 16
-  CDI_DATATYPE_PACK17 = 17
-  CDI_DATATYPE_PACK18 = 18
-  CDI_DATATYPE_PACK19 = 19
-  CDI_DATATYPE_PACK20 = 20
-  CDI_DATATYPE_PACK21 = 21
-  CDI_DATATYPE_PACK22 = 22
-  CDI_DATATYPE_PACK23 = 23
-  CDI_DATATYPE_PACK24 = 24
-  CDI_DATATYPE_PACK25 = 25
-  CDI_DATATYPE_PACK26 = 26
-  CDI_DATATYPE_PACK27 = 27
-  CDI_DATATYPE_PACK28 = 28
-  CDI_DATATYPE_PACK29 = 29
-  CDI_DATATYPE_PACK30 = 30
-  CDI_DATATYPE_PACK31 = 31
-  CDI_DATATYPE_PACK32 = 32
-  CDI_DATATYPE_CPX32 = 64
-  CDI_DATATYPE_CPX64 = 128
-  CDI_DATATYPE_FLT32 = 132
-  CDI_DATATYPE_FLT64 = 164
-  CDI_DATATYPE_INT8 = 208
-  CDI_DATATYPE_INT16 = 216
-  CDI_DATATYPE_INT32 = 232
-  CDI_DATATYPE_UINT8 = 308
-  CDI_DATATYPE_UINT16 = 316
-  CDI_DATATYPE_UINT32 = 332
-  CDI_DATATYPE_INT = 251
-  CDI_DATATYPE_FLT = 252
-  CDI_DATATYPE_TXT = 253
-  CDI_DATATYPE_CPX = 254
-  CDI_DATATYPE_UCHAR = 255
-  CDI_DATATYPE_LONG = 256
-  CDI_DATATYPE_UINT = 257
-end
-
-
-
-@enum Chunks::Cint begin
-  CDI_CHUNK_AUTO = 1 #  use default chunk size
-  CDI_CHUNK_GRID = 2
-  CDI_CHUNK_LINES = 3
-end
-
-
-
-@enum GRID::Cint begin
-  GRID_GENERIC = 1 #  Generic grid
-  GRID_GAUSSIAN = 2 #  Regular Gaussian lon/lat grid
-  GRID_GAUSSIAN_REDUCED = 3 #  Reduced Gaussian lon/lat grid
-  GRID_LONLAT = 4 #  Regular longitude/latitude grid
-  GRID_SPECTRAL = 5 #  Spherical harmonic coefficients
-  GRID_FOURIER = 6 #  Fourier coefficients
-  GRID_GME = 7 #  Icosahedral-hexagonal GME grid
-  GRID_TRAJECTORY = 8 #  Trajectory
-  GRID_UNSTRUCTURED = 9 #  General unstructured grid
-  GRID_CURVILINEAR = 10 #  Curvilinear grid
-  GRID_PROJECTION = 12 #  Projected coordinates
-  GRID_CHARXY = 13 #  One horizontal character dimension
-  CDI_PROJ_RLL = 21 #  Rotated Latitude Longitude
-  CDI_PROJ_LCC = 22 #  Lambert Conformal Conic
-  CDI_PROJ_LAEA = 23 #  Lambert Azimuthal Equal Area
-  CDI_PROJ_SINU = 24 #  Sinusoidal
-  CDI_PROJ_STERE = 25 #  Polar stereographic
-end
-
-
-
-@enum ZAXIS::Cint begin
-  ZAXIS_SURFACE = 0 #  Surface level
-  ZAXIS_GENERIC = 1 #  Generic level
-  ZAXIS_HYBRID = 2 #  Hybrid level
-  ZAXIS_HYBRID_HALF = 3 #  Hybrid half level
-  ZAXIS_PRESSURE = 4 #  Isobaric pressure level in Pascal
-  ZAXIS_HEIGHT = 5 #  Height above ground
-  ZAXIS_DEPTH_BELOW_SEA = 6 #  Depth below sea level in meters
-  ZAXIS_DEPTH_BELOW_LAND = 7 #  Depth below land surface in centimeters
-  ZAXIS_ISENTROPIC = 8 #  Isentropic
-  ZAXIS_TRAJECTORY = 9 #  Trajectory
-  ZAXIS_ALTITUDE = 10 #  Altitude above mean sea level in meters
-  ZAXIS_SIGMA = 11 #  Sigma level
-  ZAXIS_MEANSEA = 12 #  Mean sea level
-  ZAXIS_TOA = 13 #  Norminal top of atmosphere
-  ZAXIS_SEA_BOTTOM = 14 #  Sea bottom
-  ZAXIS_ATMOSPHERE = 15 #  Entire atmosphere
-  ZAXIS_CLOUD_BASE = 16 #  Cloud base level
-  ZAXIS_CLOUD_TOP = 17 #  Level of cloud tops
-  ZAXIS_ISOTHERM_ZERO = 18 #  Level of 0o C isotherm
-  ZAXIS_SNOW = 19 #  Snow level
-  ZAXIS_LAKE_BOTTOM = 20 #  Lake or River Bottom
-  ZAXIS_SEDIMENT_BOTTOM = 21 #  Bottom Of Sediment Layer
-  ZAXIS_SEDIMENT_BOTTOM_TA = 22 #  Bottom Of Thermally Active Sediment Layer
-  ZAXIS_SEDIMENT_BOTTOM_TW = 23 #  Bottom Of Sediment Layer Penetrated By Thermal Wave
-  ZAXIS_MIX_LAYER = 24 #  Mixing Layer
-  ZAXIS_REFERENCE = 25 #  zaxis reference number
-  ZAXIS_CHAR = 26 #  Area types
-end
-
-
-
-@enum TIME::Cint begin
-  TIME_CONSTANT = 0 #  Time constant
-  TIME_VARYING = 1 #  Time varying
-  TIME_VARIABLE = 1 #  obsolate, use TIME_VARYING
-end
-
-
-
-@enum TimeSteps::Cint begin
-  TSTEP_INSTANT = 1 #  Instant
-  TSTEP_AVG = 2 #  Average
-  TSTEP_ACCUM = 3 #  Accumulation
-  TSTEP_MAX = 4 #  Maximum
-  TSTEP_MIN = 5 #  Minimum
-  TSTEP_DIFF = 6 #  Difference
-  TSTEP_RMS = 7 #  Root mean square
-  TSTEP_SD = 8 #  Standard deviation
-  TSTEP_COV = 9 #  Covariance
-  TSTEP_RATIO = 10 #  Ratio
-  TSTEP_SUM = 11 #  Summation
-  TSTEP_RANGE = 12
-  TSTEP_INSTANT2 = 13
-  TSTEP_INSTANT3 = 14
-end
-
-
-
-@enum TAXIS::Cint begin
-  TAXIS_ABSOLUTE = 1
-  TAXIS_RELATIVE = 2
-  TAXIS_FORECAST = 3
-end
-
-
-
diff --git a/interfaces/julia/macro_parser.jl b/interfaces/julia/macro_parser.jl
index 096520939..fa52c3ba0 100644
--- a/interfaces/julia/macro_parser.jl
+++ b/interfaces/julia/macro_parser.jl
@@ -43,12 +43,12 @@ function macroName(name::AbstractString)
 end
 
 ###### Main #######
-
-#inputpath = joinpath(dirname("./../../"), "src", "cdi.h") |> normpath
-inputpath = "/home/mpim/m300859/libcdi/src/cdi.h"
+const BASEPATH = @__DIR__
+const INPUTPATH = BASEPATH * "/../../../../src/cdi.h" |> normpath
+const OUTPUTPATH = BASEPATH * "/../../cdi/src/cdi_macro.jl" |> normpath
 
 # Read input file
-io = open(inputpath, "r")
+io = open(INPUTPATH, "r")
 lines = split(read(io, String), '\n') 
 close(io)
 
@@ -90,7 +90,7 @@ if length(enums) == 0
     exit(0)
 end
 
-io = open("/home/mpim/m300859/libcdi/interfaces/julia/cdi_macro.jl", "w")
+io = open(OUTPUTPATH, "w")
 for e in enums
     modulename = e.name
     enumname = e.name * "_t"
-- 
GitLab