// // Copyright 2020 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // system_utils_apple.cpp: Implementation of OS-specific functions for Apple platforms #include "system_utils.h" #include #include #include #include #include #include #include #include namespace angle { std::string GetExecutablePath() { std::string result; uint32_t size = 0; _NSGetExecutablePath(nullptr, &size); std::vector buffer; buffer.resize(size + 1); _NSGetExecutablePath(buffer.data(), &size); buffer[size] = '\0'; if (!strrchr(buffer.data(), '/')) { return ""; } return buffer.data(); } std::string GetExecutableDirectory() { std::string executablePath = GetExecutablePath(); size_t lastPathSepLoc = executablePath.find_last_of("/"); return (lastPathSepLoc != std::string::npos) ? executablePath.substr(0, lastPathSepLoc) : ""; } double GetCurrentSystemTime() { mach_timebase_info_data_t timebaseInfo; mach_timebase_info(&timebaseInfo); double secondCoeff = timebaseInfo.numer * 1e-9 / timebaseInfo.denom; return secondCoeff * mach_absolute_time(); } } // namespace angle