コード例 #1
0
void OverlapIndexSubtermTreePrint(FILE* out, SubtermTree_p root)
{
   SubtermOcc_p data;

   if(root)
   {
      OverlapIndexSubtermTreePrint(out, root->lson);
      data = root->key;
      fprintf(out, "Node: %p data=%p\n", root, data);
      fprintf(out, "Key: %ld = ", data->term->entry_no);
      if(data->pl.pos.clauses)
      {
         ClauseTPos_p clause_tpos = data->pl.pos.clauses->key;
         Clause_p clause = clause_tpos->clause;
         if(clause->literals)
         {
             TermPrint(out, data->term, clause->literals->bank->sig, DEREF_ALWAYS);
         }
         fprintf(out, "\n");
         OverlapIndexClauseTreePrint(out, data->pl.pos.clauses);
      }
      else
      {
         fprintf(out, "\nlson=%p, rson=%p\n\n", root->lson, root->rson);
      }
      OverlapIndexSubtermTreePrint(out, root->rson);
   }
}
コード例 #2
0
ファイル: init.c プロジェクト: mingpen/OpenNT
BOOL LibMain(
    HANDLE hModule,
    DWORD dwReason,
    LPVOID lpRes)
{
    switch (dwReason)
    {
        case ( DLL_THREAD_ATTACH ) :
        {
            //
            //  Threads can only enter the comdlg32 dll from the
            //  Get{Open,Save}FileName apis, so the TLS lpCurDir alloc is
            //  done inside the InitFileDlg routine in fileopen.c
            //
            return (TRUE);
            break;
        }
        case ( DLL_THREAD_DETACH ) :
        {
            LPTSTR lpCurDir;
            LPDWORD lpCurThread;
            LPDWORD lpExtError;

            if (lpCurDir = (LPTSTR)TlsGetValue(g_tlsiCurDir))
            {
                LocalFree(lpCurDir);
                TlsSetValue(g_tlsiCurDir, NULL);
            }

            if (lpCurThread = (LPDWORD)TlsGetValue(g_tlsiCurThread))
            {
                LocalFree(lpCurThread);
                TlsSetValue(g_tlsiCurThread, NULL);
            }

            if (lpExtError = (LPDWORD)TlsGetValue(g_tlsiExtError))
            {
                LocalFree(lpExtError);
                TlsSetValue(g_tlsiExtError, NULL);
            }

            return (TRUE);
        }
        case ( DLL_PROCESS_ATTACH ) :
        {
            g_hinst = (HANDLE)hModule;

            if (!FInitColor(g_hinst) || !FInitFile(g_hinst))
            {
                goto CantInit;
            }

            DisableThreadLibraryCalls(hModule);

            //
            //  msgHELP is sent whenever a help button is pressed in one of
            //  the common dialogs (provided an owner was declared and the
            //  call to RegisterWindowMessage doesn't fail.
            //
            msgHELPA = RegisterWindowMessageA((LPSTR)szCommdlgHelpA);
            msgHELPW = RegisterWindowMessageW((LPWSTR)szCommdlgHelpW);

            //
            //  Need a semaphore locally for managing array of disk info.
            //
            InitializeCriticalSection(&g_csLocal);

            //
            //  Need a semaphore for control access to CreateThread.
            //
            InitializeCriticalSection(&g_csNetThread);

            //
            //  Need a semaphore for access to extended error info.
            //
            InitializeCriticalSection(&g_csExtError);

            //
            //  Allocate a tls index for curdir so we can make it per-thread.
            //
            if ((g_tlsiCurDir = TlsAlloc()) == 0xFFFFFFFF)
            {
                StoreExtendedError(CDERR_INITIALIZATION);
                goto CantInit;
            }

            //
            //  Allocate a tls index for curthread so we can give each a
            //  number.
            //
            if ((g_tlsiCurThread = TlsAlloc()) == 0xFFFFFFFF)
            {
                StoreExtendedError(CDERR_INITIALIZATION);
                goto CantInit;
            }

            //
            //  Allocate a tls index for extended error.
            //
            if ((g_tlsiExtError = TlsAlloc()) == 0xFFFFFFFF)
            {
                StoreExtendedError(CDERR_INITIALIZATION);
                goto CantInit;
            }

            dwNumDisks = 0;

            //
            //  NetEnumBuf allocated in ListNetDrivesHandler.
            //
            cbNetEnumBuf = WNETENUM_BUFFSIZE;

            hMPR = NULL;

            hLNDEvent = NULL;

            return (TRUE);
            break;
        }
        case ( DLL_PROCESS_DETACH ) :
        {
            //
            //  We only want to do our clean up work if we are being called
            //  with freelibrary, not if the process is ending.
            //
            if (lpRes == NULL)
            {
                TermFile();
                TermPrint();
                TermColor();
                TermFont();

                TlsFree(g_tlsiCurDir);
                TlsFree(g_tlsiCurThread);
                TlsFree(g_tlsiExtError);

                DeleteCriticalSection(&g_csLocal);
                DeleteCriticalSection(&g_csNetThread);
                DeleteCriticalSection(&g_csExtError);
            }

            return (TRUE);
            break;
        }
    }

CantInit:
    return (FALSE);
    lpRes;
}
コード例 #3
0
ファイル: flat.c プロジェクト: apache/incubator-corinthia
int main(int argc, const char **argv)
{
    const char *grammarFilename = NULL;
    const char *inputFilename = NULL;
    char *grammarStr = NULL;
    char *inputStr = NULL;
    int useBuiltinGrammar = 0;
    int showGrammar = 0;
    int exprAsTree = 0;
    Grammar *builtGrammar = NULL;
    Term *inputTerm = NULL;

    for (int i = 1; i < argc; i++) {
        if (!strcmp(argv[i],"-b") || !strcmp(argv[i],"--builtin"))
            useBuiltinGrammar = 1;
        else if (!strcmp(argv[i],"-g") || !strcmp(argv[i],"--grammar"))
            showGrammar = 1;
        else if (!strcmp(argv[i],"-e") || !strcmp(argv[i],"--exprtree"))
            exprAsTree = 1;
        else if (!strcmp(argv[i],"-h") || !strcmp(argv[i],"--help"))
            usage();
        else if ((strlen(argv[i]) > 1) && argv[i][0] == '-')
            usage();
        else if ((grammarFilename == NULL) && !useBuiltinGrammar)
            grammarFilename = argv[i];
        else if ((inputFilename == NULL) && !showGrammar)
            inputFilename = argv[i];
        else
            usage();
    }

    Grammar *flatGrammar = GrammarNewBuiltin();

    inputStr = maybeReadFile(inputFilename);
    grammarStr = maybeReadFile(grammarFilename);

    if (grammarStr != NULL) {
        builtGrammar = grammarFromStr(flatGrammar,grammarFilename,grammarStr);
        if (builtGrammar == NULL) {
            fprintf(stderr,"Cannot build grammar\n");
            exit(1);
        }
    }

    Grammar *useGrammar = NULL;

    if (useBuiltinGrammar)
        useGrammar = flatGrammar;
    else if (builtGrammar != NULL)
        useGrammar = builtGrammar;
    else
        usage();

    if (inputStr != NULL) {
        const char *firstRuleName = GrammarFirstRuleName(useGrammar);
        inputTerm = parse(useGrammar,firstRuleName,inputStr,0,strlen(inputStr));
        if (inputTerm == NULL) {
            fprintf(stderr,"%s: Parse failed\n",inputFilename);
            exit(1);
        }
    }

    if (showGrammar) {
        GrammarPrint(useGrammar,exprAsTree);
    }
    else if (inputTerm != NULL) {
        TermPrint(inputTerm,inputStr,"");
    }
    else {
        usage();
    }

    free(grammarStr);
    free(inputStr);
    GrammarFree(flatGrammar);
    if (builtGrammar != NULL)
        GrammarFree(builtGrammar);
    return 0;
}