PageRenderTime 20ms CodeModel.GetById 2ms app.highlight 13ms RepoModel.GetById 1ms app.codeStats 1ms

/src/FreeImage/Source/OpenEXR/IlmImf/ImfStringVectorAttribute.cpp

https://bitbucket.org/cabalistic/ogredeps/
C++ | 94 lines | 38 code | 19 blank | 37 comment | 2 complexity | 6919a4b2b4c846e5cafcb7e3bf473e63 MD5 | raw file
 1///////////////////////////////////////////////////////////////////////////
 2//
 3// Copyright (c) 2007, Weta Digital Ltd
 4// 
 5// All rights reserved.
 6// 
 7// Redistribution and use in source and binary forms, with or without
 8// modification, are permitted provided that the following conditions are
 9// met:
10// *       Redistributions of source code must retain the above copyright
11// notice, this list of conditions and the following disclaimer.
12// *       Redistributions in binary form must reproduce the above
13// copyright notice, this list of conditions and the following disclaimer
14// in the documentation and/or other materials provided with the
15// distribution.
16// *       Neither the name of Weta Digital nor the names of
17// its contributors may be used to endorse or promote products derived
18// from this software without specific prior written permission. 
19// 
20// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31//
32///////////////////////////////////////////////////////////////////////////
33
34
35
36//-----------------------------------------------------------------------------
37//
38//	class StringAttribute
39//
40//-----------------------------------------------------------------------------
41
42#include <ImfStringVectorAttribute.h>
43
44
45namespace Imf {
46
47
48template <>
49const char *
50StringVectorAttribute::staticTypeName ()
51{
52    return "stringvector";
53}
54
55
56template <>
57void
58StringVectorAttribute::writeValueTo (OStream &os, int version) const
59{
60    int size = _value.size();
61
62    for (int i = 0; i < size; i++)
63    {
64        int strSize = _value[i].size();
65        Xdr::write <StreamIO> (os, strSize);
66	Xdr::write <StreamIO> (os, &_value[i][0], strSize);
67    }
68}
69
70
71template <>
72void
73StringVectorAttribute::readValueFrom (IStream &is, int size, int version)
74{
75    int read = 0;
76
77    while (read < size)
78    {   
79       int strSize;
80       Xdr::read <StreamIO> (is, strSize);
81       read += Xdr::size<int>();       
82
83       std::string str;
84       str.resize (strSize);
85  
86       Xdr::read<StreamIO> (is, &str[0], strSize);
87       read += strSize;
88
89       _value.push_back (str);
90    }
91}
92
93
94} // namespace Imf