1793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/////////////////////////////////////////////////////////////////////////// 2793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 3793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// Copyright (c) 2007, Weta Digital Ltd 4793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 5793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// All rights reserved. 6793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 7793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// Redistribution and use in source and binary forms, with or without 8793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// modification, are permitted provided that the following conditions are 9793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// met: 10793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// * Redistributions of source code must retain the above copyright 11793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// notice, this list of conditions and the following disclaimer. 12793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// * Redistributions in binary form must reproduce the above 13793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// copyright notice, this list of conditions and the following disclaimer 14793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// in the documentation and/or other materials provided with the 15793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// distribution. 16793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// * Neither the name of Weta Digital nor the names of 17793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// its contributors may be used to endorse or promote products derived 18793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// from this software without specific prior written permission. 19793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 20793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 32793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/////////////////////////////////////////////////////////////////////////// 33793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 34793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 35793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 36793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler//----------------------------------------------------------------------------- 37793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 38793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// class StringAttribute 39793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler// 40793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler//----------------------------------------------------------------------------- 41793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 42793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <ImfStringVectorAttribute.h> 43793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 44793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 45793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslernamespace Imf { 46793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 47793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 48793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslertemplate <> 49793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerconst char * 50793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerStringVectorAttribute::staticTypeName () 51793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 52793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return "stringvector"; 53793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 54793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 55793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 56793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslertemplate <> 57793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslervoid 58793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerStringVectorAttribute::writeValueTo (OStream &os, int) const 59793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 60793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int size = _value.size(); 61793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 62793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for (int i = 0; i < size; i++) 63793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 64793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int strSize = _value[i].size(); 65793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Xdr::write <StreamIO> (os, strSize); 66793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Xdr::write <StreamIO> (os, &_value[i][0], strSize); 67793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 68793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 69793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 70793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 71793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslertemplate <> 72793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslervoid 73793ee12c6df9cad3806238d32528c49a3ff9331dNoah PreslerStringVectorAttribute::readValueFrom (IStream &is, int size, int) 74793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 75793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int read = 0; 76793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 77793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler while (read < size) 78793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 79793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int strSize; 80793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Xdr::read <StreamIO> (is, strSize); 81793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler read += Xdr::size<int>(); 82793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 83793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler std::string str; 84793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler str.resize (strSize); 85793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 86793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Xdr::read<StreamIO> (is, &str[0], strSize); 87793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler read += strSize; 88793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 89793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler _value.push_back (str); 90793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 91793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 92793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 93793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 94793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} // namespace Imf 95