remove UDSEntry from the public KIO API?
nf2
nf2 at scheinwelt.at
Sat Jul 21 18:00:04 BST 2007
nf2 wrote:
> Thiago Macieira wrote:
>> nf2 wrote:
>>
>>> class KIO_EXPORT UDSEntry
>>> {
>>> public:
>>> virtual QString stringValue( uint field );
>>>
>>> virtual long long numberValue( uint field, long long defaultValue = 0
>>> );
>>>
>>> // Convenience methods.
>>> // Let's not add one method per field, only methods that have some
>>> more logic
>>> // than just calling stringValue(field) or numberValue(field).
>>>
>>> /// @return true if this entry is a directory (or a link to a
>>> directory) virtual bool isDir();
>>> /// @return true if this entry is a link
>>> virtual bool isLink();
>>>
>>> virtual void set(UDSFieldTypes t, QString string);
>>>
>>> virtual void set(UDSFieldTypes t, long long l);
>>>
>>> private:
>>> UDSEntryPrivate* const d;
>>>
>>> };
>>>
>>
>> That's a good idea, but no virtuals please. There's no need to do
>> that. The private should be QSharedDataPointer<UDSEntryPrivate> d;
>>
>> If the new class mimics QHash, most code won't notice the changes.
>> (insert, erase, remove, operator[]). I don't know if there's code
>> using iterators over UDSEntry.
>>
>> And the UDS types should be an enum inside UDSEntry, probably called
>> "KnownTypes" or "KnownFields".
>>
> Ok, i'll try to create a patch. Should i move the code to udsentry.h /
> udsentry.cpp?
>
> Regarding the operator[] i'm not sure - i would prefer a method which
> returns an array of ints (a QList<uint> getListOfFieldIds())
> because there might be QList<QString> getListOfFieldNames() in the
> future...
>
> I reckon i also need those (for serializing UDSEntries over the KIO
> slave protocol):
>
> KIO_EXPORT QDataStream & operator<< ( QDataStream & s, const UDSEntry
> & a );
> KIO_EXPORT QDataStream & operator>> ( QDataStream & s, UDSEntry & a );
>
> Norbert
>
>
what i forgot to say:
i want the UDSField class to be hidden from the public API. Thus there
can't be operator[].
Searching kdelibs i found out that UDSField is only used implicitly anyway:
UDSEntry entry;
...
entry.insert( KIO::UDS_USER, QString::fromLatin1( "root" ) );
...
More information about the kde-core-devel
mailing list