Example #1
0
void Event::List::sort()
{
	std::stable_sort(_events.begin(), _events.end(), [](std::unique_ptr<Event> const & a, std::unique_ptr<Event> const & b) {
		return Event::comp(a.get(), b.get());
	});
	updateIdList();
}
Example #2
0
void Event::List::removeAt(int index)
{
	updateIdList();

	_events.erase(_events.begin() + index);
	_ids.erase(_ids.begin() + index);
}
Example #3
0
 /**
  * @brief イベントに割り振る ID を取得する
  * @param next
  * @return
  */
 int _getNextId( int next ){
     updateIdList();
     int max = -1;
     for( int i = 0; i < _ids.size(); i++ ){
         max = ::max( max, _ids[i] );
     }
     return max + 1 + next;
 }
Example #4
0
        /**
         * @brief イベントを追加する
         * @param item 追加するオブジェクト
         * @param internal_id 追加するオブジェクトに割り振るイベント ID
         */
        void _addCor( const VSQ_NS::Event &item, int internalId ){
            updateIdList();
            Event *add = new Event();
            *add = item;
            add->id = internalId;

            _events.push_back( add );
            _ids.push_back( internalId );
        }
Example #5
0
int Event::List::_getNextId(int next)
{
	updateIdList();
	int max = -1;
	auto max_element = std::max_element(_ids.begin(), _ids.end());
	if (max_element != _ids.end()) {
		max = *max_element;
	}
	return max + 1 + next;
}
Example #6
0
void Event::List::_addCor(Event const& item, int internalId)
{
	updateIdList();
	auto add = std::unique_ptr<Event>(new Event);
	*add = item;
	add->id = internalId;

	_events.push_back(std::move(add));
	_ids.push_back(internalId);
}
Example #7
0
        /**
         * @brief イベントを削除する
         * @param index 削除するイベントのインデックス(最初のインデックスは0)
         */
        void removeAt( int index ){
            updateIdList();

            {
                std::vector<VSQ_NS::Event *>::iterator i = _events.begin();
                std::advance( i, index );
                Event *item = *i;
                delete item;
                _events.erase( i );
            }

            {
                std::vector<int>::iterator i = _ids.begin();
                std::advance( i, index );
                _ids.erase( i );
            }
        }
Example #8
0
 /**
  * @brief リスト内のイベントを順に返す反復子を取得する
  * @return 反復子
  */
 ListIterator iterator(){
     updateIdList();
     return ListIterator( this );
 }
Example #9
0
 /**
  * @brief イベントを並べ替える
  */
 void sort(){
     qsort( _events.data(), _events.size(), sizeof( VSQ_NS::Event * ), Event::comp );
     updateIdList();
 }
Example #10
0
Event::ListIterator
Event::List::iterator()
{
	updateIdList();
	return ListIterator(this);
}