"Fossies" - the Fresh Open Source Software Archive

Member "highlight-3.57-x64/src/core/Diluculum/LuaUserData.cpp" (12 May 2020, 4086 Bytes) of package /windows/www/highlight-3.57-x64.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /******************************************************************************\
    2 * LuaUserData.cpp                                                              *
    3 * A C++ equivalent of a Lua userdata.                                          *
    4 *                                                                              *
    5 *                                                                              *
    6 * Copyright (C) 2005-2013 by Leandro Motta Barros.                             *
    7 *                                                                              *
    8 * Permission is hereby granted, free of charge, to any person obtaining a copy *
    9 * of this software and associated documentation files (the "Software"), to     *
   10 * deal in the Software without restriction, including without limitation the   *
   11 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  *
   12 * sell copies of the Software, and to permit persons to whom the Software is   *
   13 * furnished to do so, subject to the following conditions:                     *
   14 *                                                                              *
   15 * The above copyright notice and this permission notice shall be included in   *
   16 * all copies or substantial portions of the Software.                          *
   17 *                                                                              *
   18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR   *
   19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,     *
   20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE *
   21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER       *
   22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING      *
   23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS *
   24 * IN THE SOFTWARE.                                                             *
   25 \******************************************************************************/
   26 
   27 #include <Diluculum/LuaUserData.hpp>
   28 #include <cstring>
   29 
   30 
   31 namespace Diluculum
   32 {
   33    // - LuaUserData::LuaUserData -----------------------------------------------
   34    LuaUserData::LuaUserData (size_t size)
   35       : size_(size), data_ (new char[size_])
   36    { }
   37 
   38 
   39    LuaUserData::LuaUserData (const LuaUserData& other)
   40       : size_(other.getSize()), data_ (new char[size_])
   41    {
   42       memcpy (data_.get(), other.getData(), getSize());
   43    }
   44 
   45 
   46 
   47    // - LuaUserData::operator= -------------------------------------------------
   48    const LuaUserData& LuaUserData::operator= (const LuaUserData& rhs)
   49    {
   50       size_ = rhs.getSize();
   51       data_.reset (new char[getSize()]);
   52       memcpy (getData(), rhs.getData(), getSize());
   53       return *this;
   54    }
   55 
   56 
   57 
   58    // - LuaUserData::operator> -------------------------------------------------
   59    bool LuaUserData::operator> (const LuaUserData& rhs) const
   60    {
   61       if (getSize() > rhs.getSize())
   62          return true;
   63       else if (getSize() < rhs.getSize())
   64          return false;
   65       else // getSize() == rhs.getSize()
   66          return memcmp (getData(), rhs.getData(), getSize()) > 0;
   67    }
   68 
   69 
   70 
   71    // - LuaUserData::operator< -------------------------------------------------
   72    bool LuaUserData::operator< (const LuaUserData& rhs) const
   73    {
   74       if (getSize() < rhs.getSize())
   75          return true;
   76       else if (getSize() > rhs.getSize())
   77          return false;
   78       else // getSize() == rhs.getSize()
   79          return memcmp (getData(), rhs.getData(), getSize()) < 0;
   80    }
   81 
   82 
   83 
   84    // - LuaUserData::operator== ------------------------------------------------
   85    bool LuaUserData::operator== (const LuaUserData& rhs) const
   86    {
   87       return getSize() == rhs.getSize()
   88          && memcmp (getData(), rhs.getData(), getSize()) == 0;
   89    }
   90 
   91 
   92 
   93    // - LuaUserData::operator!= ------------------------------------------------
   94    bool LuaUserData::operator!= (const LuaUserData& rhs) const
   95    {
   96       return getSize() != rhs.getSize()
   97          || memcmp (getData(), rhs.getData(), getSize()) != 0;
   98    }
   99 
  100 } // namespace Diluculum