コード例 #1
0
ファイル: highlighter.cpp プロジェクト: redcapital/noter
WorkerThread::~WorkerThread()
{
	if (result != nullptr) {
		pmh_free_elements(result);
	}
	free(content);
}
コード例 #2
0
void *thread_run(void *arg)
{
    threadinfo *ti = (threadinfo *)arg;
    int i;
    for (i = 0; i < ti->iterations; i++)
    {
        int sleep_ms = (int)get_time() % 100;
        fprintf(stderr, "%s (iteration %i/%i, sleep %i ms after)\n",
                ti->name, i+1, ti->iterations, sleep_ms);
        
        pmh_element **result;
        pmh_markdown_to_elements(ti->md_content, pmh_EXT_NONE, &result);
        pmh_sort_elements_by_pos(result);
        
        char *this_results = elements_to_str(result);
        if (ti->results_str == NULL)
            ti->results_str = this_results;
        else
        {
            if (strcmp(this_results, ti->results_str) != 0)
            {
                fprintf(stderr, "ERROR! Thread %s results differ:\n\n"
                                "1st iteration results:\n%s\n"
                                "this iteration (#%i) results:\n%s\n",
                                ti->name, ti->results_str, i+1, this_results);
            }
            free(this_results);
        }
        
        pmh_free_elements(result);
        
        usleep(sleep_ms);
    }
    return NULL;
}
コード例 #3
0
void HGMarkdownHighlighter::threadFinished()
{
    if (parsePending) {
        this->parse();
        return;
    }

    if (cached_elements != NULL)
        pmh_free_elements(cached_elements);
    cached_elements = workerThread->result;
    workerThread->result = NULL;

    this->highlight();
}
コード例 #4
0
ファイル: highlighter.cpp プロジェクト: redcapital/noter
void MarkdownHighlighter::threadFinished()
{
	if (parsePending) {
		this->parse();
		return;
	}

	if (cached_elements != nullptr) {
		pmh_free_elements(cached_elements);
	}
	cached_elements = workerThread->result;
	workerThread->result = nullptr;

	this->highlight();
}
コード例 #5
0
ファイル: vutils.cpp プロジェクト: liunianbanbo/vnote
QVector<VElementRegion> VUtils::fetchImageRegionsUsingParser(const QString &p_content)
{
    Q_ASSERT(!p_content.isEmpty());
    QVector<VElementRegion> regs;

    QByteArray ba = p_content.toUtf8();
    const char *data = (const char *)ba.data();
    int len = ba.size();

    pmh_element **result = NULL;
    char *content = new char[len + 1];
    memcpy(content, data, len);
    content[len] = '\0';

    pmh_markdown_to_elements(content, pmh_EXT_NONE, &result);

    if (!result) {
        return regs;
    }

    pmh_element *elem = result[pmh_IMAGE];
    while (elem != NULL) {
        if (elem->end <= elem->pos) {
            elem = elem->next;
            continue;
        }

        regs.push_back(VElementRegion(elem->pos, elem->end));

        elem = elem->next;
    }

    pmh_free_elements(result);

    return regs;
}
コード例 #6
0
WorkerThread::~WorkerThread()
{
    if (result != NULL)
        pmh_free_elements(result);
    free(content);
}
コード例 #7
0
ファイル: highlighter.cpp プロジェクト: redcapital/noter
MarkdownHighlighter::~MarkdownHighlighter()
{
	if (cached_elements != nullptr) {
		pmh_free_elements(cached_elements);
	}
}