text: /* ----------------------------------------------------------------- */
  /*           The Toolkit for Building Voice Interaction Systems      */
  /*           "MMDAgent" developed by MMDAgent Project Team           */
  /*           http://www.mmdagent.jp/                                 */
  /* ----------------------------------------------------------------- */
  /*                                                                   */
  /*  Copyright (c) 2009-2012  Nagoya Institute of Technology          */
  /*                           Department of Computer Science          */
  /*                                                                   */
  /* All rights reserved.                                              */
  /*                                                                   */
  /* Redistribution and use in source and binary forms, with or        */
  /* without modification, are permitted provided that the following   */
  /* conditions are met:                                               */
  /*                                                                   */
  /* - Redistributions of source code must retain the above copyright  */
  /*   notice, this list of conditions and the following disclaimer.   */
  /* - Redistributions in binary form must reproduce the above         */
  /*   copyright notice, this list of conditions and the following     */
  /*   disclaimer in the documentation and/or other materials provided */
  /*   with the distribution.                                          */
  /* - Neither the name of the MMDAgent project team nor the names of  */
  /*   its contributors may be used to endorse or promote products     */
  /*   derived from this software without specific prior written       */
  /*   permission.                                                     */
  /*                                                                   */
  /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND            */
  /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,       */
  /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF          */
  /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE          */
  /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
  /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,          */
  /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED   */
  /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     */
  /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
  /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,   */
  /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY    */
  /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE           */
  /* POSSIBILITY OF SUCH DAMAGE.                                       */
  /* ----------------------------------------------------------------- */
  
  /* definitions */
  
  #define MOTIONSTOCKER_NCACHE 10 /* number of cache VMD files */
  
  /* VMDList: VMD list */
  typedef struct _VMDList {
     VMD vmd;
     char *name;
     int use;
     struct _VMDList *prev;
     struct _VMDList *next;
  } VMDList;
  
  /* MotionStocker: cache list for VMD files */
  class MotionStocker
  {
  private:
  
     VMDList *m_head;
     VMDList *m_tail;
  
     /* initialize: initialize MotionStocker */
     void initialize();
  
     /* clear: free MotionStocker */
     void clear();
  
  public:
  
     /* MotionStocker: constructor */
     MotionStocker();
  
     /* ~MotionStocker: destructor */
     ~MotionStocker();
  
     /* loadFromFile: load VMD from file or return cached one */
     VMD *loadFromFile(const char *file);
  
     /* loadFromData: load VMD from data memories */
     VMD *loadFromData(const unsigned char *rawData, unsigned int rawSize);
  
     /* unload: unload VMD */
     void unload(VMD *vmd);
  };
  