BambooIsland: C:/Users/easterbunny/Desktop/Echtzeitgraphik-LU/trunk/src/tinystr.cpp Source File

BambooIsland Abgabe 2

- Main Page
- Related Pages
- Classes
- Files

- File List

# C:/Users/easterbunny/Desktop/Echtzeitgraphik-LU/trunk/src/tinystr.cpp

    00001 /*
    00002 www.sourceforge.net/projects/tinyxml
    00003 Original file by Yves Berquin.
    00004
    00005 This software is provided 'as-is', without any express or implied
    00006 warranty. In no event will the authors be held liable for any
    00007 damages arising from the use of this software.
    00008
    00009 Permission is granted to anyone to use this software for any
    00010 purpose, including commercial applications, and to alter it and
    00011 redistribute it freely, subject to the following restrictions:
    00012
    00013 1. The origin of this software must not be misrepresented; you must
    00014 not claim that you wrote the original software. If you use this
    00015 software in a product, an acknowledgment in the product documentation
    00016 would be appreciated but is not required.
    00017
    00018 2. Altered source versions must be plainly marked as such, and
    00019 must not be misrepresented as being the original software.
    00020
    00021 3. This notice may not be removed or altered from any source
    00022 distribution.
    00023 */
    00024
    00025 /*
    00026  * THIS FILE WAS ALTERED BY Tyge Løvset, 7. April 2005.
    00027  */
    00028
    00029
    00030 #ifndef TIXML_USE_STL
    00031
    00032 #include "tinystr.h"
    00033
    00034 // Error value for find primitive
    00035 const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1);
    00036
    00037
    00038 // Null rep.
    00039 TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } };
    00040
    00041
    00042 void TiXmlString::reserve (size_type cap)
    00043 {
    00044         if (cap > capacity())
    00045         {
    00046                 TiXmlString tmp;
    00047                 tmp.init(length(), cap);
    00048                 memcpy(tmp.start(), data(), length());
    00049                 swap(tmp);
    00050         }
    00051 }
    00052
    00053
    00054 TiXmlString& TiXmlString::assign(const char* str, size_type len)
    00055 {
    00056         size_type cap = capacity();
    00057         if (len > cap || cap > 3*(len + 8))
    00058         {
    00059                 TiXmlString tmp;
    00060                 tmp.init(len);
    00061                 memcpy(tmp.start(), str, len);
    00062                 swap(tmp);
    00063         }
    00064         else
    00065         {
    00066                 memmove(start(), str, len);
    00067                 set_size(len);
    00068         }
    00069         return *this;
    00070 }
    00071
    00072
    00073 TiXmlString& TiXmlString::append(const char* str, size_type len)
    00074 {
    00075         size_type newsize = length() + len;
    00076         if (newsize > capacity())
    00077         {
    00078                 reserve (newsize + capacity());
    00079         }
    00080         memmove(finish(), str, len);
    00081         set_size(newsize);
    00082         return *this;
    00083 }
    00084
    00085
    00086 TiXmlString operator + (const TiXmlString & a, const TiXmlString & b)
    00087 {
    00088         TiXmlString tmp;
    00089         tmp.reserve(a.length() + b.length());
    00090         tmp += a;
    00091         tmp += b;
    00092         return tmp;
    00093 }
    00094
    00095 TiXmlString operator + (const TiXmlString & a, const char* b)
    00096 {
    00097         TiXmlString tmp;
    00098         TiXmlString::size_type b_len = static_cast<TiXmlString::size_type>( strlen(b) );
    00099         tmp.reserve(a.length() + b_len);
    00100         tmp += a;
    00101         tmp.append(b, b_len);
    00102         return tmp;
    00103 }
    00104
    00105 TiXmlString operator + (const char* a, const TiXmlString & b)
    00106 {
    00107         TiXmlString tmp;
    00108         TiXmlString::size_type a_len = static_cast<TiXmlString::size_type>( strlen(a) );
    00109         tmp.reserve(a_len + b.length());
    00110         tmp.append(a, a_len);
    00111         tmp += b;
    00112         return tmp;
    00113 }
    00114
    00115
    00116 #endif  // TIXML_USE_STL

All Classes Functions Variables Enumerations Enumerator