I am trying to wrap miniz. I am using nimterop, so I created a file 
miniz_wrapper.nim as follows:
    
    
    import os, strutils
    
    import nimterop/[cimport, git, paths]
    
    const
      baseDir = currentSourcePath.parentDir()/"build"
      
      srcDir = baseDir/"project"
    
    static:
      cDebug()
      cDisableCaching()
      
      
      
downloadUrl("https://github.com/richgel999/miniz/releases/download/2.1.0/miniz-2.1.0.zip";,
 outdir = srcDir)
    
    cIncludeDir(srcDir)
    
    cOverride:
      defineEnum(Enum_minizh8)
      const
        TDEFL_LZ_CODE_BUF_SIZE* = (64*1024).Enum_minizh8
        TDEFL_OUT_BUF_SIZE* = ((TDEFL_LZ_CODE_BUF_SIZE.int*13)/10).Enum_minizh8
        TDEFL_MAX_HUFF_SYMBOLS* = (288).Enum_minizh8
        TDEFL_LZ_HASH_BITS* = (15).Enum_minizh8
        TDEFL_LEVEL1_HASH_SIZE_MASK* = (4095).Enum_minizh8
        TDEFL_LZ_HASH_SHIFT* = ((TDEFL_LZ_HASH_BITS.int+2)/3).Enum_minizh8
        TDEFL_LZ_HASH_SIZE* = (1 shl TDEFL_LZ_HASH_BITS).Enum_minizh8
    
    
    
    # From CMakeLists
    cDefine("MINIZ_API_VERSION","2")
    cDefine("MINIZ_MINOR_VERSION", "1")
    cDefine("MINIZ_PATCH_VERSION", "0")
    cDefine("MINIZ_VERSION", "2.1.0")
    
    
    #{.passC: "flags".}
    #{.passL: "flags".}
    
    cCompile(srcDir/"miniz.c")
    
    cPlugin:
      import strutils
      
      proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
        sym.name = sym.name.strip(chars = {'_'})
    
    cImport(srcDir/"miniz.h", recurse = true)
    
    Run

I have to override Enum_minizh8 because, there is an 
[issues](https://github.com/nimterop/nimterop/issues/131) in the type 
conversion.

But now I get the following error which I don't understand:
    
    
    /usr/lib/nim/core/macros.nim(586, 12) Error: redefinition of 
'Enum_minizh8'; previous declaration here: 
/home/jose/src/nimlang/miniz/miniz_wraper.nim(20, 14)

Why does it complains about redefinition if I am using cOverride?

If I remove line 20: ` defineEnum(Enum_minizh8)`, I get:
    
    
    /home/jose/src/nimlang/miniz/miniz_wraper.nim(22, 40) Error: undeclared 
field: 'Enum_minizh8' for type system.int [declared in 
/usr/lib/nim/system.nim(26, 3)]

Reply via email to