windows-nt/Source/XPSP1/NT/com/rpc/midl/front/pass3.cxx
2020-09-26 16:20:57 +08:00

97 lines
2.5 KiB
C++

/*****************************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1999 **/
/*****************************************************************************/
/*****************************************************************************
File : pass3.cxx
Title : pass3 controller
History :
24-Sep-1993 GregJen Created
*****************************************************************************/
#if 0
Notes
-----
This file provides the interface for the semantic analysis pass. It also
initializes the pass3 controller object.
#endif // 0
#pragma warning ( disable : 4514 )
/****************************************************************************
includes
****************************************************************************/
#include "nulldefs.h"
extern "C" {
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
extern int yyacfparse();
}
#include "allnodes.hxx"
#include "control.hxx"
#include "cmdana.hxx"
#include "filehndl.hxx"
#include "idict.hxx"
#include "semantic.hxx"
/****************************************************************************
local definitions
****************************************************************************/
/****************************************************************************
extern procedures
****************************************************************************/
/****************************************************************************
extern data
****************************************************************************/
extern class ccontrol * pCompiler;
extern node_source * pSourceNode;
extern CMD_ARG * pCommand;
/****************************************************************************
local data
****************************************************************************/
/****************************************************************************/
_pass3::_pass3()
{
pCompiler->SetPassNumber( SEMANTIC_PASS );
}
STATUS_T
_pass3::Go()
{
MEM_ITER MemIter( pSourceNode );
node_file * pFNode;
// turn off line number additions
FileIndex = 0;
/**
** for each idl file, check semantics of all interfaces.
**/
while ( ( pFNode = (node_file *) MemIter.GetNext() ) != 0 )
{
SEM_ANALYSIS_CTXT FileSemAnalysis(pSourceNode);
pFNode->SemanticAnalysis( &FileSemAnalysis );
}
// terminate compilation if we found errors
return (pCompiler->GetErrorCount()) ? ERRORS_PASS1_NO_PASS2 : STATUS_OK;
}