AUI Framework  master
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
AReflect.h
    1/*
    2 * AUI Framework - Declarative UI toolkit for modern C++20
    3 * Copyright (C) 2020-2025 Alex2772 and Contributors
    4 *
    5 * SPDX-License-Identifier: MPL-2.0
    6 *
    7 * This Source Code Form is subject to the terms of the Mozilla Public
    8 * License, v. 2.0. If a copy of the MPL was not distributed with this
    9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
   10 */
   11
   12#pragma once
   13
   14#include <AUI/Common/AString.h>
   15
   16#ifdef __GNUG__
   17#include <cstdlib>
   18#include <memory>
   19#include <cxxabi.h>
   20#endif
   21
   22namespace AReflect {
   23
   28    template<typename T>
   29    AString name(T* v) {
   30        if (!v) return "nullptr";
   31#ifdef _MSC_VER
   32        return typeid(*v).name();
   33#else
   34        int status;
   35        auto mangledName = typeid(*v).name();
   36        auto ptr = abi::__cxa_demangle(mangledName, nullptr, nullptr, &status);
   37        AString result = ptr;
   38        free(ptr);
   39        return result;
   40#endif
   41    }
   42}
Represents a Unicode character string.
Definition AString.h:38
AString name(T *v)
Runtime reflection based on typeid.
Definition AReflect.h:29