本文整理汇总了C++中CCodeChain::Boot方法的典型用法代码示例。如果您正苦于以下问题:C++ CCodeChain::Boot方法的具体用法?C++ CCodeChain::Boot怎么用?C++ CCodeChain::Boot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCodeChain
的用法示例。
在下文中一共展示了CCodeChain::Boot方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AlchemyMain
int AlchemyMain (CXMLElement *pCmdLine)
// AlchemyMain
//
// Main entry-point after kernel initialization
{
ALERROR error;
bool bLogo = !pCmdLine->GetAttributeBool(NO_LOGO_SWITCH);
if (bLogo)
{
printf("CCShell v1.0\n");
printf("Copyright (c) 2010 by George Moromisato. All Rights Reserved.\n\n");
}
// Initialize CodeChain environment
CCodeChain CC;
if (error = CC.Boot())
{
PrintError(ERR_UNABLE_TO_INIT_CODECHAIN);
return 1;
}
// Load some functions
if (error = RegisterShellPrimitives(CC))
{
PrintError(ERR_UNABLE_TO_REGISTER_PRIMITIVES);
return 1;
}
// Prepare context
SExecuteCtx Ctx;
Ctx.bQuit = false;
// Interpreter loop
while (!Ctx.bQuit)
{
// Prompt
printf(": ");
// Read a line
CString sInput;
char *pDest = sInput.GetWritePointer(65536);
if (fgets(pDest, 65536, stdin) == NULL)
{
PrintError(ERR_INVALID_INPUT);
continue;
}
sInput.Truncate(strlen(sInput.GetASCIIZPointer()));
// Parse the line
ICCItem *pCode = CC.Link(sInput, 0, NULL);
if (pCode->IsError())
{
printf("codechain: %s\n", pCode->Print(&CC).GetASCIIZPointer());
pCode->Discard(&CC);
continue;
}
// Execute
ICCItem *pResult = CC.TopLevel(pCode, &Ctx);
// Output
if (pResult->IsError())
printf("codechain: %s\n", pResult->Print(&CC).GetASCIIZPointer());
else
printf("%s\n", pResult->Print(&CC).GetASCIIZPointer());
// Done
pCode->Discard(&CC);
pResult->Discard(&CC);
}
return 0;
}