Тема: Less Toolkit
Показать сообщение отдельно
Старый 13.04.2009, 07:01   #25 (Ссылка на пост)
Lester
Гаденыш
 
Аватар для Lester
Пол:
 
Активность Longevity
3/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 код:
/**********************************************************************************************/
templatetypename T >
class 
LTEXPORT Array
{
public:
//////////////////////////////////////////////////////////////////////////

    //////////////////////////////////////////////////////////////////////////
    // Define functions types

        
typedef                 bool(*ArrayIfFunction)( const T& );
        
typedef                 bool(*ArraySortFunction)( const T&, const T& );

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

    //////////////////////////////////////////////////////////////////////////
    // Constructors

                                
Array( ArrayKind kind ARRAY_SIMPLE );
                                Array( 
ArraySortFunction func );
                                Array( 
size_t count );
                                Array( 
size_t countT value, ... );
                                Array( 
size_t countTvalue );
                                Array( const 
std::vector<T>& value );
                                Array( const Array<
T>& value );

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

    //////////////////////////////////////////////////////////////////////////
    // Add/Remove

        
void                    Add( const Titemsize_t count );
        
void                    Add( const Array<T>& value );

        
void                    Clearvoid );

        
void                    Insertsize_t index, const Titemsize_t count );
        
void                    Insertsize_t index, const Array<T>& value );

        
void                    Prepend( const Titemsize_t count );
        
void                    Prepend( const Array<T>& value );

        
void                    Remove( const Titem );
        
void                    Remove( const Array<T>& value );
        
void                    RemoveAtsize_t indexsize_t count );
        
void                    RemoveFirstsize_t count );
        
void                    RemoveIfArrayIfFunction func );
        
void                    RemoveLastsize_t count );
        
void                    RemoveRangesize_t startsize_t end size_t( -) );

        
void                    Resizesize_t size );

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

    //////////////////////////////////////////////////////////////////////////
    // Items Access

        
const Array<T>&         Copysize_t startsize_t end size_t( -) ) const;
        const Array<
T>&         CopyIfArrayIfFunction func ) const;

        
size_t                  Countvoid ) const;
        
size_t                  CountIfArrayIfFunction func ) const;

        
T&                      Itemsize_t index );
        
T&                      Firstvoid );
        
T&                      Lastvoid );

        const 
T&                Itemsize_t index ) const;
        const 
T&                Firstvoid ) const;
        const 
T&                Lastvoid ) const;

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

    //////////////////////////////////////////////////////////////////////////
    // Search

        
long                    Index( const Titem ) const;
        const Array<
size_t>&    FindAll( const Titem );
        
long                    FindFirst( const Titem );
        
long                    FindLast( const Titem );

        
long                    Index( const Array<T>& values ) const;
        const Array<
size_t>&    FindAll( const Array<T>& values );
        
long                    FindFirst( const Array<T>& values );
        
long                    FindLast( const Array<T>& values );

        
long                    FindNextvoid );

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

    //////////////////////////////////////////////////////////////////////////
    // Sort

        
void                    MakeSortedbool sorted truebool desc false );
        
void                    MakeSortedArrayKind kind );
        
void                    MakeSortedArraySortFunction func );

        
void                    Sortbool desc false );
        
void                    Sortsize_t startsize_t end size_t( -), bool desc false );
        
void                    SortArraySortFunction func );

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

    //////////////////////////////////////////////////////////////////////////
    // Mutators

        
void                    Fill( const Tvaluesize_t start 0size_t end size_t( -) );
        
void                    FillIf( const TvalueArrayIfFunction func );
        
void                    Replace( const Tfrom, const Tto );
        
void                    Replace( const Array<T>& from, const Array<T>& to );
        
void                    ReplaceIf( const Tfrom, const TtoArrayIfFunction func  );
        
void                    Reversesize_t start 0size_t end size_t( -) );
        
void                    Rotatelong count );
        
void                    Swapsize_t asize_t b );
        
void                    Swapsize_t start1size_t countsize_t start2 );
        
void                    Swap( Array<T>& value );
        
void                    Intersect( Array<T>& value );
        
void                    Uniquevoid );

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

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

        
bool                    Contain( const Array<T>& value ) const;

        
bool                    Equal( const Array<T>& value ) const;
        
bool                    Equal
                                      const Array<
T>&        value
                                      
size_t                start1
                                      
size_t                count
                                      
size_t                start2 ) const;

        const 
T&                Maxvoid ) const;
        const 
T&                MaxArraySortFunction func ) const;

        const 
T&                Minvoid );
        const 
T&                MinArraySortFunction func ) const;

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

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

        
void                    FromArraysize_t countTvalue );
        
void                    FromFile( const Stringpath );
        
void                    FromString( const Stringvalue );
        
void                    FromVector( const std::vector<T>& value );
        
void                    FromXML( const Stringvalue );

        
T*                      ToArrayvoid ) const;
        
void                    ToFile( const Stringpath );
        const 
String&           ToStringvoid ) const;
        const 
std::vector<T>&   ToVectorvoid ) const;
        const 
String&           ToXMLvoid ) const;


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

    //////////////////////////////////////////////////////////////////////////
    // Operators

        
Array<T>                operator+( const Tvalue );
        Array<
T>                operator+( const Array<T>& value );
        Array<
T>&               operator+=( const Tvalue );
        Array<
T>&               operator+=( const Array<T>& value );
        Array<
T>&               operator=( const Array<T>& value );
        
bool                    operator==( const Array<T>& value ) const;
        
bool                    operator!=( const Array<T>& value ) const;
        
T&                      operator[]( size_t index );
        const 
T&                operator[]( size_t index ) const;
}; 
пришлось частично обрезать - ограничение на длину сообщения, вообще учел все замечания zwitter'а и Marchelo, любой массив можно сделать отсортированным, новые элементы будут вставлятся так, что сохранить порядок, ес-но поиск и родственные операции( замена и т.п. ) работают с бинарным алгоритмом, вот архив:

ARRAY.ZIP

в остальном библиотека ощутимо выросла - больше 2Мб кода, не считая тестов, сейчас пишу плагин для поддержки wx, fktk уже на 80% готов, кстати отказался от идеи писать все абсолютно с нуля - за основу взят обрезанный вариант fltk, из которого выдраны все ненужные классы, благо ничего быстрее, удобнее и компактнее( статически слинкованный диалог на fltk весит около 100кб ) под все популярные ОС не найти, а мне немного надо - обработка основных событий и отрисовка примитивов + текста, ес-но плагин для использовния fltk "as is" также останется
__________________
- Слава Україні! - закричали они, вместо приветствия.
- Что это за фашизм?! - возмутился журналист Гундырев. - Откуда у них столько ненависти к русским?
Lester вне форума  
Ответить с цитированием
Сказали Спасибо пользователю Lester за этот пост:
zwitter (13.04.2009)