More string switching.

This commit is contained in:
Ben Vanik 2014-08-16 16:46:20 -07:00
parent 7c5fa88661
commit ead74f2cdb
10 changed files with 35 additions and 40 deletions

View File

@ -32,16 +32,19 @@ using namespace xe::kernel;
using namespace xe::kernel::fs;
using namespace xe::ui;
Emulator::Emulator(const xechar_t* command_line) :
main_window_(0),
memory_(0),
processor_(0),
audio_system_(0), graphics_system_(0), input_system_(0),
export_resolver_(0), file_system_(0),
kernel_state_(0), xam_(0), xboxkrnl_(0) {
XEIGNORE(xestrcpy(command_line_, XECOUNT(command_line_), command_line));
}
Emulator::Emulator(const std::wstring& command_line)
: command_line_(command_line),
main_window_(0),
memory_(0),
processor_(0),
audio_system_(0),
graphics_system_(0),
input_system_(0),
export_resolver_(0),
file_system_(0),
kernel_state_(0),
xam_(0),
xboxkrnl_(0) {}
Emulator::~Emulator() {
// Note that we delete things in the reverse order they were initialized.

View File

@ -35,10 +35,10 @@ namespace xe {
class Emulator {
public:
Emulator(const xechar_t* command_line);
Emulator(const std::wstring& command_line);
~Emulator();
const xechar_t* command_line() const { return command_line_; }
const std::wstring& command_line() const { return command_line_; }
ui::Window* main_window() const { return main_window_; }
void set_main_window(ui::Window* window);
@ -69,7 +69,7 @@ class Emulator {
X_STATUS CompleteLaunch(const std::wstring& path,
const std::string& module_path);
xechar_t command_line_[poly::max_path];
std::wstring command_line_;
ui::Window* main_window_;

View File

@ -95,7 +95,7 @@ ID3D10Blob* D3D11GeometryShader::Compile(const char* shader_source) {
if (FLAGS_dump_shaders.size()) {
base_path = FLAGS_dump_shaders.c_str();
}
uint64_t hash = xe_hash64(shader_source, xestrlena(shader_source)); // ?
uint64_t hash = xe_hash64(shader_source, strlen(shader_source)); // ?
char file_name[poly::max_path];
xesnprintfa(file_name, XECOUNT(file_name),
"%s/gen_%.16llX.gs",

View File

@ -203,7 +203,7 @@ bool D3D11ProfilerDisplay::SetupShaders() {
ID3DBlob* vs_code_blob = nullptr;
ID3DBlob* vs_errors = nullptr;
hr = D3DCompile(
shader_code, xestrlena(shader_code),
shader_code, strlen(shader_code),
"D3D11ProfilerDisplay.vs",
nullptr,
nullptr,
@ -229,7 +229,7 @@ bool D3D11ProfilerDisplay::SetupShaders() {
ID3DBlob* ps_code_blob = nullptr;
ID3DBlob* ps_errors = nullptr;
hr = D3DCompile(
shader_code, xestrlena(shader_code),
shader_code, strlen(shader_code),
"D3D11ProfilerDisplay.ps",
nullptr,
nullptr,

View File

@ -46,7 +46,7 @@ ID3D10Blob* D3D11ShaderCompile(XE_GPU_SHADER_TYPE type,
if (FLAGS_dump_shaders.size()) {
base_path = FLAGS_dump_shaders.c_str();
}
size_t hash = xe_hash64(disasm_source, xestrlena(disasm_source)); // ?
size_t hash = xe_hash64(disasm_source, strlen(disasm_source)); // ?
char file_name[poly::max_path];
xesnprintfa(file_name, XECOUNT(file_name),
"%s/gen_%.16llX.%s",

View File

@ -87,10 +87,9 @@ X_STATUS DiscImageEntry::QueryDirectory(
auto end = (uint8_t*)out_info + length;
auto entry = *gdfx_entry_iterator_;
auto entry_name = entry->name.c_str();
size_t entry_name_length = xestrlena(entry_name);
auto entry_name = entry->name;
if (((uint8_t*)&out_info->file_name[0]) + entry_name_length > end) {
if (((uint8_t*)&out_info->file_name[0]) + entry_name.size() > end) {
gdfx_entry_iterator_ = gdfx_entry_->children.end();
return X_STATUS_UNSUCCESSFUL;
}
@ -104,8 +103,8 @@ X_STATUS DiscImageEntry::QueryDirectory(
out_info->end_of_file = entry->size;
out_info->allocation_size = 2048;
out_info->attributes = (X_FILE_ATTRIBUTES)entry->attributes;
out_info->file_name_length = (uint32_t)entry_name_length;
memcpy(out_info->file_name, entry_name, entry_name_length);
out_info->file_name_length = static_cast<uint32_t>(entry_name.size());
memcpy(out_info->file_name, entry_name.c_str(), entry_name.size());
return X_STATUS_SUCCESS;
}

View File

@ -66,10 +66,9 @@ X_STATUS STFSContainerEntry::QueryDirectory(
auto end = (uint8_t*)out_info + length;
auto entry = *stfs_entry_iterator_;
auto entry_name = entry->name.c_str();
size_t entry_name_length = xestrlena(entry_name);
auto entry_name = entry->name;
if (((uint8_t*)&out_info->file_name[0]) + entry_name_length > end) {
if (((uint8_t*)&out_info->file_name[0]) + entry_name.size() > end) {
stfs_entry_iterator_ = stfs_entry_->children.end();
return X_STATUS_UNSUCCESSFUL;
}
@ -82,8 +81,8 @@ X_STATUS STFSContainerEntry::QueryDirectory(
out_info->end_of_file = entry->size;
out_info->allocation_size = 4096;
out_info->attributes = entry->attributes;
out_info->file_name_length = (uint32_t)entry_name_length;
memcpy(out_info->file_name, entry_name, entry_name_length);
out_info->file_name_length = static_cast<uint32_t>(entry_name.size());
memcpy(out_info->file_name, entry_name.c_str(), entry_name.size());
return X_STATUS_SUCCESS;
}

View File

@ -153,7 +153,7 @@ SHIM_CALL RtlInitAnsiString_shim(
if (source_ptr != 0) {
const char* source = (char*)SHIM_MEM_ADDR(source_ptr);
uint16_t length = (uint16_t)xestrlena(source);
uint16_t length = (uint16_t)strlen(source);
SHIM_SET_MEM_16(destination_ptr + 0, length);
SHIM_SET_MEM_16(destination_ptr + 2, length + 1);
} else {
@ -211,8 +211,10 @@ SHIM_CALL RtlInitUnicodeString_shim(
// _In_opt_ PCWSTR SourceString
if (source.size()) {
SHIM_SET_MEM_16(destination_ptr + 0, source.size() * 2);
SHIM_SET_MEM_16(destination_ptr + 2, (source.size() + 1) * 2);
SHIM_SET_MEM_16(destination_ptr + 0,
static_cast<uint16_t>(source.size() * 2));
SHIM_SET_MEM_16(destination_ptr + 2,
static_cast<uint16_t>((source.size() + 1) * 2));
SHIM_SET_MEM_32(destination_ptr + 4, source_ptr);
} else {
SHIM_SET_MEM_16(destination_ptr + 0, 0);

View File

@ -18,16 +18,12 @@
#if !XE_LIKE_WIN32
int strncpy_s(char* dest, size_t destLength, const char* source, size_t count);
#define strcpy_s(dest, destLength, source) !(strcpy(dest, source) == dest + (destLength*0))
#define strcat_s(dest, destLength, source) !(strcat(dest, source) == dest + (destLength*0))
#define _snprintf_s(dest, destLength, x, format, ...) snprintf(dest, destLength, format, ##__VA_ARGS__)
#endif // !WIN32
#define xestrcpyw(dest, destLength, source) (wcscpy_s(dest, destLength, source) == 0)
#define xesnprintfw(buffer, bufferCount, format, ...) _snwprintf_s(buffer, bufferCount, (bufferCount) ? (bufferCount - 1) : 0, format, ##__VA_ARGS__)
#define xestrlena strlen
#define xestrcpya(dest, destLength, source) (strcpy_s(dest, destLength, source) == 0)
#define xestrncpya(dest, destLength, source, count) (strncpy_s(dest, destLength, source, count) == 0)
#define xesnprintfa(buffer, bufferCount, format, ...) _snprintf_s(buffer, bufferCount, bufferCount, format, ##__VA_ARGS__)
#define xevsnprintfa(buffer, bufferCount, format, args) vsnprintf(buffer, bufferCount, format, args)
@ -36,18 +32,14 @@ int strncpy_s(char* dest, size_t destLength, const char* source, size_t count);
typedef wchar_t xechar_t;
// xestrcpy fs + module
// xestrncpya one use in xbox.h
// xesnprintf many uses - only remove some?
#define xestrcpy xestrcpyw
#define xesnprintf xesnprintfw
#else
typedef char xechar_t;
#define XE_CHAR 1
#define xestrcpy xestrcpya
#define xesnprintf xesnprintfa
#endif // WIN32

View File

@ -272,8 +272,8 @@ public:
if (buffer == NULL || length == 0) {
return NULL;
}
auto copy = (char*)xe_calloc(length+1);
xestrncpya(copy, length+1, buffer, length);
auto copy = (char*)xe_calloc(length + 1);
std::strncpy(copy, buffer, length);
return copy;
}
};