/*
 * hunt-proton: AMQP Protocol library for D programming language.
 *
 * Copyright (C) 2018-2019 HuntLabs
 *
 * Website: https://www.huntlabs.net/
 *
 * Licensed under the Apache-2.0 License.
 *
 */

module hunt.proton.codec.TypeEncoding;
import hunt.proton.codec.AMQPType;


interface ITypeEncoding
{
    void writeConstructor();

    int getConstructorSize();
    bool isFixedSizeVal();
    bool encodesJavaPrimitive();
    int getValueSize(Object val);
    void writeValue(Object val);
    int opCmp(ITypeEncoding o);
}

interface TypeEncoding(V) : ITypeEncoding
{
    AMQPType!(V) getType();
    bool encodesSuperset(TypeEncoding!(V) encoder);
}