WebCore/bindings/cpp/WebDOMString.cpp
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     1 /*
       
     2  * Copyright (C) Research In Motion Limited 2010. All rights reserved.
       
     3  * Copyright (C) 2009 Google Inc. All rights reserved.
       
     4  *
       
     5  * This library is free software; you can redistribute it and/or
       
     6  * modify it under the terms of the GNU Library General Public
       
     7  * License as published by the Free Software Foundation; either
       
     8  * version 2 of the License, or (at your option) any later version.
       
     9  *
       
    10  * This library is distributed in the hope that it will be useful,
       
    11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    13  * Library General Public License for more details.
       
    14  *
       
    15  * You should have received a copy of the GNU Library General Public License
       
    16  * along with this library; see the file COPYING.LIB.  If not, write to
       
    17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
       
    18  * Boston, MA 02110-1301, USA.
       
    19  */
       
    20 
       
    21 #include "config.h"
       
    22 #include "WebDOMString.h"
       
    23 
       
    24 #include "WebDOMCString.h"
       
    25 #include <wtf/text/AtomicString.h>
       
    26 #include <wtf/text/CString.h>
       
    27 #include <wtf/text/WTFString.h>
       
    28 
       
    29 class WebDOMStringPrivate : public WebCore::StringImpl {
       
    30 };
       
    31 
       
    32 void WebDOMString::reset()
       
    33 {
       
    34     if (m_private) {
       
    35         m_private->deref();
       
    36         m_private = 0;
       
    37     }
       
    38 }
       
    39 
       
    40 void WebDOMString::assign(const WebDOMString& other)
       
    41 {
       
    42     assign(const_cast<WebDOMStringPrivate*>(other.m_private));
       
    43 }
       
    44 
       
    45 void WebDOMString::assign(const WebUChar* data, size_t length)
       
    46 {
       
    47     assign(static_cast<WebDOMStringPrivate*>(
       
    48         WebCore::StringImpl::create(data, length).get()));
       
    49 }
       
    50 
       
    51 size_t WebDOMString::length() const
       
    52 {
       
    53     return m_private ? const_cast<WebDOMStringPrivate*>(m_private)->length() : 0;
       
    54 }
       
    55 
       
    56 const WebUChar* WebDOMString::data() const
       
    57 {
       
    58     return m_private ? const_cast<WebDOMStringPrivate*>(m_private)->characters() : 0;
       
    59 }
       
    60 
       
    61 WebDOMCString WebDOMString::utf8() const
       
    62 {
       
    63     return WebCore::String(m_private).utf8();
       
    64 }
       
    65 
       
    66 WebDOMString WebDOMString::fromUTF8(const char* data, size_t length)
       
    67 {
       
    68     return WebCore::String::fromUTF8(data, length);
       
    69 }
       
    70 
       
    71 WebDOMString WebDOMString::fromUTF8(const char* data)
       
    72 {
       
    73     return WebCore::String::fromUTF8(data);
       
    74 }
       
    75 
       
    76 WebDOMString::WebDOMString(const WebCore::String& s)
       
    77     : m_private(static_cast<WebDOMStringPrivate*>(s.impl()))
       
    78 {
       
    79     if (m_private)
       
    80         m_private->ref();
       
    81 }
       
    82 
       
    83 WebDOMString& WebDOMString::operator=(const WebCore::String& s)
       
    84 {
       
    85     assign(static_cast<WebDOMStringPrivate*>(s.impl()));
       
    86     return *this;
       
    87 }
       
    88 
       
    89 WebDOMString::operator WebCore::String() const
       
    90 {
       
    91     return m_private;
       
    92 }
       
    93 
       
    94 WebDOMString::WebDOMString(const WebCore::AtomicString& s)
       
    95     : m_private(0)
       
    96 {
       
    97     assign(s.string());
       
    98 }
       
    99 
       
   100 WebDOMString& WebDOMString::operator=(const WebCore::AtomicString& s)
       
   101 {
       
   102     assign(s.string());
       
   103     return *this;
       
   104 }
       
   105 
       
   106 WebDOMString::operator WebCore::AtomicString() const
       
   107 {
       
   108     return WebCore::AtomicString(static_cast<WebCore::StringImpl *>(m_private));
       
   109 }
       
   110 
       
   111 bool WebDOMString::equals(const char* string) const
       
   112 {
       
   113     return WebCore::equal(m_private, string);
       
   114 }
       
   115 
       
   116 void WebDOMString::assign(WebDOMStringPrivate* p)
       
   117 {
       
   118     // Take care to handle the case where m_private == p
       
   119     if (p)
       
   120         p->ref();
       
   121     if (m_private)
       
   122         m_private->deref();
       
   123     m_private = p;
       
   124 }