ZF_NAMESPACE_GLOBAL_BEGIN

// ============================================================
// ZFListenerData
void ZFListenerData::objectInfoT(ZF_IN_OUT zfstring &ret) const
{
    ret += ZFTOKEN_ZFObjectInfoLeft;
    zfstringAppend(ret, zfText("ZFListenerData(%p)"), this);
    const zfchar *eventName = ZFObserverEventGetName(this->eventId);
    if(eventName != zfnull)
    {
        ret += zfText(", event: ");
        ret += eventName;
    }
    if(this->sender != zfnull)
    {
        ret += zfText(", sender: ");
        ZFobjectInfoT(ret, this->sender);
    }
    if(this->param0 != zfnull)
    {
        ret += zfText(", param0: ");
        ZFobjectInfoT(ret, this->param0);
    }
    if(this->param1 != zfnull)
    {
        ret += zfText(", param1: ");
        ZFobjectInfoT(ret, this->param1);
    }
    ret += ZFTOKEN_ZFObjectInfoRight;
}
void _ZFP_zfCoreLog(ZF_IN const zfcharA *callerFile,
                    ZF_IN const zfcharA *callerFunction,
                    ZF_IN zfindex callerLine,
                    ZF_IN zfbool isAutoEndl,
                    ZF_IN const zfcharA *format,
                    ...)
{
    if(_ZFP_ZFCoreLogOutputCallback == zfnull)
    {
        return ;
    }

    zfstringA s;

    va_list vaList;
    va_start(vaList, format);
    if(callerFile != zfnull)
    {
        ZF_CALLER_INFO_DETAIL_REF(s, callerFile, callerFunction, callerLine);
        s += ' ';
    }
    zfstringAppendV(s, format, vaList);
    if(isAutoEndl)
    {
        zfstringAppend(s, zfTextA("\n"));
    }
    va_end(vaList);

    _ZFP_ZFCoreLogOutputCallback(zfsCoreZ2A(s.cString()));
}
void ZFUIPointToString(ZF_IN_OUT zfstring &ret, ZF_IN ZFUIPoint const &value)
{
    zfstringAppend(ret, zfText("(%d, %d)"), value.x, value.y);
}