6 #ifndef CNOID_UTIL_MULTI_SEQ_H_INCLUDED
7 #define CNOID_UTIL_MULTI_SEQ_H_INCLUDED
11 #include <boost/multi_array.hpp>
15 template <
typename ElementType,
typename Allocator = std::allocator<ElementType> >
19 typedef boost::shared_ptr< MultiSeq<ElementType, Allocator> >
Ptr;
20 typedef typename boost::multi_array<ElementType, 2, Allocator>
Container;
22 typedef typename Container::template array_view<1>::type
View;
41 virtual void setDimension(
int newNumFrames,
int newNumParts,
bool clearNewElements =
false) {
47 if(newNumFrames > reservedNumFrames){
48 container.resize(boost::extents[newNumFrames][newNumParts]);
50 container.resize(boost::extents[reservedNumFrames][newNumParts]);
56 int i = (prevNumFrames == 0) ? 0 : prevNumParts;
57 while(i < newNumParts){
61 if(prevNumFrames > 0 && (
numFrames_ > prevNumFrames)){
62 for(
int i=0; i < prevNumParts; ++i){
64 const ElementType& last = frames[prevNumFrames - 1];
65 std::fill(frames.begin() + prevNumFrames, frames.end(), last);
83 virtual void setNumParts(
int newNumParts,
bool clearNewElements =
false) {
95 virtual void setNumFrames(
int newNumFrames,
bool clearNewElements =
false) {
160 template <
typename ArrayType>
inline void appendFrame(
const ArrayType& v) {
163 for(
int i=0; i < m; ++i){