//taken from fceux on 27-oct-2008 //subsequently modified for desmume /* Copyright (C) 2008-2009 DeSmuME team This file is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the this software. If not, see . */ #ifndef _STRINGUTIL_H_ #define _STRINGUTIL_H_ #include #include //#include //#include //#include //#include //#include "../types.h" //#include "emufile.h" //definitions for str_strip() flags //static const int STRIP_SP = 0x01; // space //static const int STRIP_TAB = 0x02; // tab //static const int STRIP_CR = 0x04; // carriage return //static const int STRIP_LF = 0x08; // line feed //int str_ucase(char *str); //int str_lcase(char *str); //int str_ltrim(char *str, int flags); //int str_rtrim(char *str, int flags); //int str_strip(char *str, int flags); //int chr_replace(char *str, char search, char replace); //int str_replace(char *str, char *search, char *replace); //std::string strsub(const std::string &str, int pos, int len); //std::string strmid(const std::string &str, int pos, int len); //std::string strleft(const std::string &str, int len); //std::string strright(const std::string &str, int len); //std::string toupper(const std::string &str); //int HexStringToBytesLength(const std::string &str); //int Base64StringToBytesLength(const std::string &str); //std::string u32ToHexString(uint32_t val); //std::string BytesToString(const void *data, int len); //bool StringToBytes(const std::string &str, void *data, int len); std::vector tokenize_str(const std::string &str,const std::string &delims); //void splitpath(const char *path, char *drv, char *dir, char *name, char *ext); //uint16_t FastStrToU16(char *s, bool &valid); //char *U16ToDecStr(uint16_t a); //char *U32ToDecStr(uint32_t a); //char *U32ToDecStr(char *buf, uint32_t a); //char *U8ToDecStr(uint8_t a); //char *U8ToHexStr(uint8_t a); //char *U16ToHexStr(uint16_t a); //std::string stditoa(int n); //std::string readNullTerminatedAscii(std::istream *is); // extracts a decimal uint from an istream /*template T templateIntegerDecFromIstream(EMUFILE *is) { unsigned int ret = 0; bool pre = true; for (;;) { int c = is->fgetc(); if (c == -1) return ret; int d = c - '0'; if (d < 0 || d > 9) { if (!pre) break; } else { pre = false; ret *= 10; ret += d; } } is->unget(); return ret; }*/ //inline uint32_t u32DecFromIstream(EMUFILE *is) { return templateIntegerDecFromIstream(is); } //inline uint64_t u64DecFromIstream(EMUFILE *is) { return templateIntegerDecFromIstream(is); } //puts an optionally 0-padded decimal integer of type T into the ostream (0-padding is quicker) /*template void putdec(EMUFILE *os, T dec) { char temp[DIGITS]; int ctr = 0; for(int i = 0; i < DIGITS; ++i) { int quot = dec / 10; int rem = dec % 10; temp[DIGITS - 1 - i] = '0' + rem; if (!PAD && rem) ctr = i; dec = quot; } if (!PAD) os->fwrite(temp + DIGITS - ctr - 1, ctr + 1); else os->fwrite(temp, DIGITS); }*/ //std::string mass_replace(const std::string &source, const std::string &victim, const std::string &replacement); //std::wstring mbstowcs(std::string str); //std::string wcstombs(std::wstring str); // TODO - dont we already have another function that can do this //std::string getExtension(const char *input); #endif