module osc.typetagstring;
import osc.oscstring;

///
alias TypeTagString = OscString!(',');

///
ref T add(T:TypeTagString)(ref T oscString, char t){
    if(oscString.isEmpty){
        import std.conv;
        oscString = TypeTagString(t.to!string);
    }else{
        import std.algorithm;
        oscString = TypeTagString(oscString.content ~ t);
    }
    return oscString;
}

unittest{
    TypeTagString s;
    s.add('i')
     .add('i')
     .add('s')
     .add('f')
     .add('f');
    assert(s.size == 8);
}

unittest{
    TypeTagString s;
    s.add('i');
    assert(s.size == 4);
}

/++
+/
enum TypeTag {
    Int    = 'i', 
    Float  = 'f', 
    String = 's', 
    Blob   = 'b', 
}//enum TypeTag

unittest{
    static assert(isOscString!(TypeTagString));
}