#include "il2cpp-config.h" #include "icalls/System/System.Diagnostics/PerformanceCounterCategory.h" #include "PerformanceCounterUtils.h" #include "utils/StringUtils.h" #include "vm/Array.h" #include "vm/String.h" #include "vm/Exception.h" #include "vm-utils/VmStringUtils.h" namespace il2cpp { namespace icalls { namespace System { namespace System { namespace Diagnostics { bool PerformanceCounterCategory::CategoryDelete(Il2CppString* name) { NOT_SUPPORTED_IL2CPP(PerformanceCounterCategory::Create, "The IL2CPP scripting backend does not support the removal of custom performance counter categories."); return false; } Il2CppString* PerformanceCounterCategory::CategoryHelpInternal(Il2CppString* category, Il2CppString* machine) { if (!utils::VmStringUtils::CaseInsensitiveEquals(machine, ".")) return NULL; const CategoryDesc* cdesc = find_category(category); if (!cdesc) return NULL; return vm::String::New(cdesc->help); } bool PerformanceCounterCategory::CounterCategoryExists(Il2CppString* counter, Il2CppString* category, Il2CppString* machine) { if (!utils::VmStringUtils::CaseInsensitiveEquals(machine, ".")) return false; const CategoryDesc* cdesc = find_category(category); if (!cdesc) return false; /* counter is allowed to be null */ if (!counter) return true; if (get_counter_in_category(cdesc, counter)) return true; return false; } bool PerformanceCounterCategory::Create(Il2CppString* categoryName, Il2CppString* categoryHelp, PerformanceCounterCategoryType categoryType, Il2CppArray* items) { NOT_SUPPORTED_IL2CPP(PerformanceCounterCategory::Create, "The IL2CPP scripting backend does not support the creation of custom performance counter categories."); return false; } int32_t PerformanceCounterCategory::InstanceExistsInternal(Il2CppString* instance, Il2CppString* category, Il2CppString* machine) { return 0; } Il2CppArray* PerformanceCounterCategory::GetCategoryNames(Il2CppString* machine) { if (!utils::VmStringUtils::CaseInsensitiveEquals(machine, ".")) return vm::Array::New(il2cpp_defaults.string_class, 0); Il2CppArray* res = vm::Array::New(il2cpp_defaults.string_class, NUM_CATEGORIES); for (int i = 0; i < NUM_CATEGORIES; ++i) { const CategoryDesc *cdesc = &predef_categories[i]; il2cpp_array_setref(res, i, vm::String::New(cdesc->name)); } return res; } Il2CppArray* PerformanceCounterCategory::GetCounterNames(Il2CppString* category, Il2CppString* machine) { if (!utils::VmStringUtils::CaseInsensitiveEquals(machine, ".")) return vm::Array::New(il2cpp_defaults.string_class, 0); const CategoryDesc* cdesc = find_category(category); if (cdesc) { Il2CppArray* res = vm::Array::New(il2cpp_defaults.string_class, cdesc[1].first_counter - cdesc->first_counter); for (int i = cdesc->first_counter; i < cdesc[1].first_counter; ++i) { const CounterDesc *desc = &predef_counters[i]; il2cpp_array_setref(res, i - cdesc->first_counter, vm::String::New(desc->name)); } return res; } return vm::Array::New(il2cpp_defaults.string_class, 0); } Il2CppArray* PerformanceCounterCategory::GetInstanceNames(Il2CppString* category, Il2CppString* machine) { return vm::Array::New(il2cpp_defaults.string_class, 0); } } /* namespace Diagnostics */ } /* namespace System */ } /* namespace System */ } /* namespace icalls */ } /* namespace il2cpp */