Что такое функция «IsA ()» в C? - PullRequest
0 голосов
/ 27 мая 2020

В чистом коде C в разных проектах, которые i nvolve Postgresql серверное программирование , с которым я сейчас работаю, я постоянно сталкиваюсь с функцией IsA (), которая возвращает логическое значение и проверяет принадлежат ли 2 экземпляра структуры одной структуре. Я полагаю.

Один из них:

https://github.com/guotao0628/pipelinedb/blob/master/src/backend/executor/nodeBitmapAnd.c#L123

    for (i = 0; i < nplans; i++)
    {
        PlanState  *subnode = bitmapplans[i];
        TIDBitmap  *subresult;

        subresult = (TIDBitmap *) MultiExecProcNode(subnode);

        if (!subresult || !IsA(subresult, TIDBitmap))               /*what's IsA(...) ? */
            elog(ERROR, "unrecognized result from subplan");

        if (result == NULL)
            result = subresult; /* first subplan */

Мне нужно перенести часть этого кода C на другой строго типизированный язык. Следовательно, мне нужно знать, как «isA ()» реализовано под капотом. Но нигде не нашел. Предположительно он определен в какой-то библиотеке.

Где я могу найти его определение?

1 Ответ

2 голосов
/ 27 мая 2020

IsA - это макрос, который определен в этом заголовочном файле в Postgresql исходном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...