module dqml.qurl;

import dqml.dothersideinterface;
import std.string;

class QUrl
{
    this(string url, ParsingMode parsingMode = ParsingMode.TolerantMode)
    {
        this.vptr = dos_qurl_create(url.toStringz(), parsingMode);
    }

    ~this()
    {
        dos_qurl_delete(this.vptr);
    }

    enum ParsingMode : int
    {
        TolerantMode = 0,
        StrictMode,
        DecodedMode
    }

    public void* voidPointer()
    {
        return this.vptr;
    }

    override string toString()
    {
        char* array = dos_qurl_to_string(vptr);
        string result = fromStringz(array).dup;
        dos_chararray_delete(array);
        return result;
    }

    private void* vptr;
}