1 /* Cycript - Optimizing JavaScript Compiler/Runtime
 
   2  * Copyright (C) 2009-2014  Jay Freeman (saurik)
 
   5 /* GNU Affero General Public License, Version 3 {{{ */
 
   7  * This program is free software: you can redistribute it and/or modify
 
   8  * it under the terms of the GNU Affero General Public License as published by
 
   9  * the Free Software Foundation, either version 3 of the License, or
 
  10  * (at your option) any later version.
 
  12  * This program is distributed in the hope that it will be useful,
 
  13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  15  * GNU Affero General Public License for more details.
 
  17  * You should have received a copy of the GNU Affero General Public License
 
  18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
  22 #ifndef CYCRIPT_STRING_HPP
 
  23 #define CYCRIPT_STRING_HPP
 
  25 #include "cycript.hpp"
 
  26 #include "Pooling.hpp"
 
  40     CYUTF8String(const char *data) :
 
  46     CYUTF8String(const char *data, size_t size) :
 
  52     bool operator ==(const char *value) const {
 
  53         size_t length(strlen(data));
 
  54         return length == size && memcmp(value, data, length) == 0;
 
  58 static inline std::ostream &operator <<(std::ostream &lhs, CYUTF8String &rhs) {
 
  59     lhs.write(rhs.data, rhs.size);
 
  63 struct CYUTF16String {
 
  67     CYUTF16String(const uint16_t *data, size_t size) :
 
  74 size_t CYGetIndex(const CYUTF8String &value);
 
  75 bool CYIsKey(CYUTF8String value);
 
  76 bool CYGetOffset(const char *value, ssize_t &index);
 
  78 CYUTF8String CYPoolUTF8String(CYPool &pool, CYUTF16String utf16);
 
  79 CYUTF16String CYPoolUTF16String(CYPool &pool, CYUTF8String utf8);
 
  81 #endif/*CYCRIPT_STRING_HPP*/