Thanks you for your replies.

> So I think there is no solution for you. Can you tell us what you want to 
> archive?

Yes, I've made a little XOR encrypter/decrypter for strings, seqs and arrays. 
It works perfectly but I was wondering if it was possible to do it using only 
one function instead of four.
    
    
    # 
----------------------------------------------------------------------------------------------------------------------
    proc encrypterRaw*[T](data: var openarray[T], key: string) =
        let dataCount = data.len() * sizeof(T)
        let keyLen    = key.len()
        let dataPtr   = getPtr(data)
        
        if keyLen == 0:
            return
        
        var xorState: uint32 = 1
        
        for i in 0 ..< dataCount:
            xorState = xorState xor (xorState shl 13)
            xorState = xorState xor (xorState shr 17)
            xorState = xorState xor (xorState shl 5)
            
            writePtr(dataPtr, readPtr(dataPtr, uint8, i) xor uint8(key[i mod 
keyLen]) xor uint8(xorState), uint8, i)
    
    
    # 
----------------------------------------------------------------------------------------------------------------------
    proc encrypter*(str, key: string): string =
        result = str
        
        encrypterRaw(result, key)
    
    
    # 
----------------------------------------------------------------------------------------------------------------------
    proc encrypter*[T](data: seq[T], key: string): seq[T] =
        result = data
        
        encrypterRaw(result, key)
    
    
    # 
----------------------------------------------------------------------------------------------------------------------
    proc encrypter*[I, T](data: array[I, T], key: string): array[I, T] =
        result = data
        
        encrypterRaw(result, key)
    
    
    Run

Anyway, it does not matter, I'll leave it as it is.

Thank you ; ) 

Reply via email to