except.cpp

来自「Shorthand是一个强大的脚本语言」· C++ 代码 · 共 115 行

CPP
115
字号
///////////////////////////////////////////////////////////////////////////////
// $Header: /shorthand/src/except.cpp 5     8/28/02 6:27a Arm $
//-----------------------------------------------------------------------------
// Project: ShortHand interpreter
// Author: Andrei Remenchuk <andrei@remenchuk.com>
//-----------------------------------------------------------------------------
// except.cpp: ShortHand exceptions
///////////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#include "except.h"
#include "utils.h"
#include "sherr.h"

ShhException::ShhException()
{
    m_message = NULL;
    m_code = 0;
}


ShhException::ShhException(const char* format, ...)
{
    va_list args; va_start(args, format);
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = 0;
}

ShhException::ShhException(int code, const char* format, ...)
{
    va_list args; va_start(args, format);
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = code;
}

ShhException::ShhException(const char* format, va_list args)
{
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = 0;
}

const char* ShhException::href() const
{
    if (m_hyperlink.is_empty())
    {
        shh_error_href(m_code, m_hyperlink);
    }
    return m_hyperlink;
}

ShhObjectException::ShhObjectException()
{
}


ShhObjectException::ShhObjectException(const char* format, ...)
{
    va_list args; va_start(args, format);
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = 0;
}

ShhObjectException::ShhObjectException(int code, const char* format, ...)
{
    va_list args; va_start(args, format);
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = code;
}


ShhObjectException::ShhObjectException(const char* format, va_list args)
{
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = 0;
}

ShhFunctionException::ShhFunctionException(int code, const char* format, ...)
{
    va_list args; va_start(args, format);
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = code;
}

ShhFunctionException::ShhFunctionException(int code, const char* format, va_list args)
{
    int w = vawidth(format, &args);
    m_message = (char*) malloc(w+1);
    vsprintf(m_message, format, args);
    m_code = code;
}




ShhException::~ShhException()
{
    if (m_message != NULL) free(m_message);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?