Тема: Less Toolkit
Показать сообщение отдельно
Старый 27.01.2009, 01:32   #19 (Ссылка на пост)
Lester
Гаденыш
 
Аватар для Lester
Пол:
 
Активность Longevity
2/20 16/20
Today Сообщения
0/5 sssss4648
Благодарил(а): 2,442
Благодарили 5,834 раз в 2,093 постах
Галерея: 0
Вес репутации: 78 Lester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторыLester скоро в модераторы
Интерфейс для хранения структурированных данных:

PHP код:
/**********************************************************************************************/
interface LTAPI I_Container
{
public:
//////////////////////////////////////////////////////////////////////////

virtual                            ~I_Containervoid )                            {}

public:
//////////////////////////////////////////////////////////////////////////

        //////////////////////////////////////////////////////////////////////////
        // Structure/Navigation

virtual void                    SetPath( const Stringpath ) = 0;
virtual String                    GetPathvoid ) const = 0;
 
virtual    ArrayString                GetGroupsvoid ) = 0;
virtual    ArrayString                GetEntriesvoid ) = 0;

virtual String                    GetFirstGroupvoid ) = 0;
virtual String                    GetNextGroupvoid ) = 0;
virtual String                    GetFirstEntryvoid ) = 0;
virtual String                    GetNextEntryvoid ) = 0;

virtual size_t                    GetNumberOfEntriesbool recursive false ) const = 0;
virtual size_t                    GetNumberOfGroupsbool recursive false ) const = 0;

virtual bool                    Delete( const Stringpath ) = 0;
virtual bool                    DeleteAllvoid ) = 0;

virtual bool                    Exist( const Stringpath ) const = 0;

virtual bool                    Rename( const StringoldName, const StringnewName ) = 0;

        
//////////////////////////////////////////////////////////////////////////
        // Read/Write single value

virtual bool                    Read( const Stringkeylongvaluelong defVal ) const = 0;
virtual long                    Read( const Stringkeylong defVal ) const = 0;

virtual bool                    Read( const Stringkeyboolvaluebool defVal ) const = 0;
virtual bool                    Read( const Stringkeybool defVal ) const = 0;

virtual bool                    Read( const Stringkeydoublevaluedouble defVal ) const = 0;
virtual double                    Read( const Stringkeydouble defVal ) const = 0;

virtual bool                    Read( const StringkeyStringvalueString defVal L"" ) const = 0;
virtual String                    Read( const Stringkey ) const = 0;

virtual bool                    Read( const Stringkeyvoid*& valuesize_tsize ) const = 0;
virtual bool                    Read( const StringkeyBitmapvalue ) const = 0;

virtual bool                    Write( const Stringkeylong value ) = 0;
virtual bool                    Write( const Stringkeydouble value ) = 0;
virtual bool                    Write( const Stringkeybool value ) = 0;
virtual bool                    Write( const Stringkey, const Stringvalue ) = 0;
virtual bool                    Write( const Stringkeyvoidvaluesize_t size ) = 0;
virtual bool                    Write( const Stringkey, const Bitmapvalue ) = 0;

virtual bool                    CreateIfAbsent( const Stringkeylong value ) = 0;
virtual bool                    CreateIfAbsent( const Stringkeydouble value ) = 0;
virtual bool                    CreateIfAbsent( const Stringkeybool value ) = 0;
virtual bool                    CreateIfAbsent( const Stringkey, const Stringvalue ) = 0;
virtual bool                    CreateIfAbsent( const Stringkeyvoidvaluesize_t size ) = 0;
virtual bool                    CreateIfAbsent( const Stringkey, const Bitmapvalue ) = 0;

        
//////////////////////////////////////////////////////////////////////////
        // Read/Write arrays

virtual bool                    Read( const StringkeyArrayLongvalue ) const = 0;
virtual bool                    Read( const StringkeyArrayBoolvalue ) const = 0;
virtual bool                    Read( const StringkeyArrayDoublevalue ) const = 0;
virtual bool                    Read( const StringkeyArrayStringvalue ) const = 0;
virtual bool                    Read( const StringkeyArrayBitmapvalue ) const = 0;

virtual bool                    Write( const Stringkey, const ArrayLongvalue ) = 0;
virtual bool                    Write( const Stringkey, const ArrayDoublevalue ) = 0;
virtual bool                    Write( const Stringkey, const ArrayBoolvalue ) = 0;
virtual bool                    Write( const Stringkey, const ArrayStringvalue ) = 0;
virtual bool                    Write( const Stringkey, const ArrayBitmapvalue ) = 0;

        
//////////////////////////////////////////////////////////////////////////
        // Other

virtual    void                    Flushvoid ) = 0;

public:
//////////////////////////////////////////////////////////////////////////

        //////////////////////////////////////////////////////////////////////////
        // Import/Export

virtual    String                    SaveToStringvoid ) = 0;
virtual    void                    SaveToBufvoid*& valuesize_tsize ) = 0;
virtual    void                    SaveToFile( const Stringpath ) = 0;

virtual    void                    LoadFromString( const Stringvalue ) = 0;
virtual    void                    LoadFromBufvoidvaluesize_t size ) = 0;
virtual    void                    LoadFromFile( const Stringpath ) = 0;

public:
//////////////////////////////////////////////////////////////////////////

        //////////////////////////////////////////////////////////////////////////
        // Options

virtual void                    SetCreateOnReadIfAbsentbool value ) = 0;
virtual    bool                    GetCreateOnReadIfAbsentvoid ) = 0;
}; 
Есть две реализации( которые наследуются от I_ContainerImpl, что позволяет значительно сократить код в них ): TextContainer и XMLContainer, первая хранит все в INI-формате , вторая в XML.

пример кода:
PHP код:
ArrayString list( 3"A""B""C" );

TextContainer container;
container.Write"/Arrays/List", list );
container.Write"/Simple/Long"1024 );
String export container.SaveToString();

list.
Clear();
 
TextContainer container2export );
container2.Read"/Arrays/List", list ); 
__________________
- Слава Україні! - закричали они, вместо приветствия.
- Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским?

Последний раз редактировалось Lester, 27.01.2009 в 08:55.
Lester вне форума  
Ответить с цитированием