示例#1
0
StreamBase& operator <<(StreamBase& left, ValueReference<T_ID>& ref)
{
    if(left.serialise())
    {
        left << makeValueReference(ref.value.toStdString());
    }
    else
    {
        std::string str;
        left << makeValueReference(str);
        T_ID id(str);
        if(id.isNull)
        {
            left.setError();
            left.addErrorMsg("operator for retroshare id value: id is null\n");
        }
        ref.value = id;
    }
    return left;
}
void setToStream(StreamBase& stream, std::set<T>& set)
{
    if(stream.serialise())
    {
        for(typename std::set<T>::iterator sit = set.begin(); sit != set.end(); sit++)
        {
            T item = *sit;
            stream << makeValueReference(item);
        }
    }
    else
    {
        while(stream.hasMore())
        {
            T item;
            stream << makeValueReference(item);
            set.insert(item);
        }
    }
}