This file is indexed.

/usr/include/choreonoid-1.1/cnoid/src/PoseSeqPlugin/PoseSeqItem.h is in libcnoid-dev 1.1.0+dfsg-6.1+b4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
   @file
   @author Shin'ichiro NAKAOKA
*/

#ifndef CNOID_CHOREOGRAPHY_BODY_POSE_SEQ_ITEM_H_INCLUDED
#define CNOID_CHOREOGRAPHY_BODY_POSE_SEQ_ITEM_H_INCLUDED

#include "PoseSeq.h"
#include "PoseSeqInterpolator.h"
#include <cnoid/Item>
#include <cnoid/BodyMotionItem>
#include <set>
#include "exportdecl.h"

namespace cnoid {

    class TimeBar;
    class BodyItem;
    class BodyMotionGenerationBar;

    class CNOID_EXPORT PoseSeqItem : public cnoid::Item
    {
      public:
        static void initializeClass(ExtensionManager* ext);        
        
        PoseSeqItem();
        PoseSeqItem(const PoseSeqItem& org);
        ~PoseSeqItem();
            
        virtual void setName(const std::string& name);

        inline PoseSeqPtr poseSeq() {
            return seq;
        }

        inline PoseSeqInterpolatorPtr interpolator(){
            return interpolator_;
        }

        inline BodyMotionItem* bodyMotionItem(){
            return bodyMotionItem_.get();
        }

        virtual bool updateInterpolation();
        virtual bool updateTrajectory(bool putMessages = false);

        void beginEditing();
        bool endEditing(bool actuallyModified = true);
        void clearEditHistory();
            
        bool undo();
        bool redo();

        /**
           temporary treatment.
        */
        bool updateKeyPosesWithBalancedTrajectories(std::ostream& os);

      protected:

        virtual ItemPtr doDuplicate() const;
        virtual void doPutProperties(PutPropertyFunction& putProperty);
        virtual bool store(Archive& archive);
        virtual bool restore(const Archive& archive);

        BodyItem* ownerBodyItem;
        PoseSeqPtr seq;
        PoseSeqInterpolatorPtr interpolator_;
        BodyMotionItemPtr bodyMotionItem_;
        boost::signals::connection sigInterpolationParametersChangedConnection;

        ConnectionSet editConnections;

        struct EditHistory {
            /*
              Unify these containers into one which contains elements
              in the operated orders and restore them in the same order
              when undo or redo is carried out.
            */
            PoseSeqPtr removed;
            PoseSeqPtr added;
            EditHistory(){
                removed = new PoseSeq();
                added = new PoseSeq();
            }
            bool empty(){
                return removed->empty() && added->empty();
            }
            void clear(){
                if(!empty()){
                    removed = new PoseSeq();
                    added = new PoseSeq();
                }
            }
        };

        struct PoseIterComp {
            bool operator()(const PoseSeq::iterator it1, const PoseSeq::iterator it2) const {
                return &(*it1) < &(*it2);
            }
        };
        std::set<PoseSeq::iterator, PoseIterComp> inserted;
        std::set<PoseSeq::iterator, PoseIterComp> modified;
            
        double modifyingPoseTime;
        double modifyingPoseTTime;
        PoseUnitPtr modifyingPoseUnitOrg;
        PoseSeq::iterator modifyingPoseIter;

        std::deque<EditHistory> editHistories;
        EditHistory newHistory;
        int currentHistory;

        BodyMotionGenerationBar* generationBar;
        TimeBar* timeBar;

        bool isSelectedPoseMoving;

        void init();
        void convert(BodyPtr orgBody);
        bool convertSub(BodyPtr orgBody, const YamlMapping& convInfo);
        void updateInterpolationParameters();
        void onInserted(PoseSeq::iterator p, bool isMoving);
        void onRemoving(PoseSeq::iterator p, bool isMoving);
        void onModifying(PoseSeq::iterator p);
        void onModified(PoseSeq::iterator p);
        PoseSeq::iterator removeSameElement(PoseSeq::iterator current, PoseSeq::iterator p);
        void onPositionChanged();
    };

    typedef boost::intrusive_ptr<PoseSeqItem> PoseSeqItemPtr;
}

#endif