本文整理汇总了C++中xbox::VJSParms_callStaticFunction::GetContextRef方法的典型用法代码示例。如果您正苦于以下问题:C++ VJSParms_callStaticFunction::GetContextRef方法的具体用法?C++ VJSParms_callStaticFunction::GetContextRef怎么用?C++ VJSParms_callStaticFunction::GetContextRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xbox::VJSParms_callStaticFunction
的用法示例。
在下文中一共展示了VJSParms_callStaticFunction::GetContextRef方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _GetSyntaxColoring
void VJSLanguageSyntaxTester::_GetSyntaxColoring( XBOX::VJSParms_callStaticFunction &ioParams, void * )
{
// We expect two parameters -- the extension for the type of information we have (js, html, etc) and
// a line of text to be colored. We will perform the coloring, and return back to the user a list
// of objects that contain the style information.
if (ioParams.CountParams() < 2) return;
VString extension, data;
if (!ioParams.GetStringParam( 1, extension )) return;
if (!ioParams.GetStringParam( 2, data )) return;
CLanguageSyntaxComponent *languageSyntax = (CLanguageSyntaxComponent *)VComponentManager::RetainComponent( (CType)CLanguageSyntaxComponent::Component_Type );
if (!languageSyntax) return;
ISyntaxInterface *syntaxEngine = languageSyntax->GetSyntaxByExtension( extension );
if (syntaxEngine) {
// Now that we've got the syntax engine, we can ask it for the coloring information
std::vector< size_t > offsets;
std::vector< size_t > lengths;
std::vector< sLONG > styles;
syntaxEngine->GetColoringForTesting( data, offsets, lengths, styles );
// Loop over the returned results, turning them into a vector of VJSValue objects
std::vector< VJSValue > results;
std::vector< JSColorResult * > releaseList;
for (size_t i = 0; i < offsets.size(); i++) {
JSColorResult *result = new JSColorResult( offsets[ i ], lengths[ i ], styles[ i ] );
releaseList.push_back( result );
results.push_back( VJSLanguageSyntaxTesterColorResults::CreateInstance( ioParams.GetContextRef(), result ) );
}
// Return an array of our results
VJSArray arr( ioParams.GetContextRef() );
arr.PushValues( results );
ioParams.ReturnValue( arr );
for (std::vector< JSColorResult * >::iterator iter = releaseList.begin(); iter != releaseList.end(); ++iter) {
(*iter)->Release();
}
}
languageSyntax->Release();
}
示例2: _Tokenize
void VJSLanguageSyntaxTester::_Tokenize( XBOX::VJSParms_callStaticFunction &ioParams, void * )
{
// We are expecting 2 JavaScript parameters:
// - source code to tokenize
// - extension of the fake file
VString sourceCode, extension;
if (ioParams.CountParams() == 2)
{
if (!ioParams.GetStringParam( 1, sourceCode )) return;
if (!ioParams.GetStringParam( 2, extension )) return;
}
else
return;
CLanguageSyntaxComponent *languageSyntax = (CLanguageSyntaxComponent *)VComponentManager::RetainComponent( (CType)CLanguageSyntaxComponent::Component_Type );
if (languageSyntax)
{
ISyntaxInterface *syntaxEngine = languageSyntax->GetSyntaxByExtension( extension );
if (syntaxEngine)
{
VectorOfVString tokens;
syntaxEngine->GetTokensForTesting(sourceCode, tokens);
VJSArray result( ioParams.GetContextRef() );
VJSValue jsval(ioParams.GetContextRef());
for (VectorOfVString::const_iterator it = tokens.begin(); it != tokens.end(); ++it)
{
jsval.SetString(*it);
result.PushValue(jsval);
}
ioParams.ReturnValue(result);
}
languageSyntax->Release();
}
}
示例3: _saveMeta
void VJSImage::_saveMeta(XBOX::VJSParms_callStaticFunction& ioParms, VJSPictureContainer* inPict)
{
VPicture* pic = inPict->GetPict();
if (pic != nil)
{
bool okmeta = false;
VString jsonString;
if (ioParms.IsObjectParam(1))
{
VJSObject metadata(ioParms.GetContextRef());
ioParms.GetParamObject(1, metadata);
okmeta = true;
VJSJSON json(ioParms.GetContextRef());
json.Stringify(metadata, jsonString);
}
else
{
if (inPict->MetaInfoInited())
{
okmeta = true;
VJSValue metadata(ioParms.GetContextRef(), inPict->GetMetaInfo());
VJSJSON json(ioParms.GetContextRef());
json.Stringify(metadata, jsonString);
}
}
if (okmeta)
{
VValueBag* bag = new VValueBag();
bag->FromJSONString(jsonString);
inPict->SetMetaBag(bag);
QuickReleaseRefCountable(bag);
}
//inPict->SetModif();
}
}
示例4: _GotoDefinition
void VJSLanguageSyntaxTester::_GotoDefinition( XBOX::VJSParms_callStaticFunction &ioParams, void * )
{
VString filePathStr, symTablePathStr, selectionStr;
sLONG line = 0;
if (ioParams.CountParams() == 4)
{
if (!ioParams.GetStringParam( 1, symTablePathStr )) return;
if (!ioParams.GetStringParam( 2, filePathStr )) return;
if (!ioParams.GetLongParam( 3, &line )) return;
if (!ioParams.GetStringParam( 4, selectionStr )) return;
}
else
return;
VFilePath symbolTablePath( symTablePathStr, FPS_POSIX);
VFilePath filePath( filePathStr, FPS_POSIX);
if ( ! symbolTablePath.IsValid() || ! filePath.IsValid() )
return;
if ( line < 1 )
return;
CLanguageSyntaxComponent *languageSyntax = (CLanguageSyntaxComponent *)VComponentManager::RetainComponent( (CType)CLanguageSyntaxComponent::Component_Type );
if (languageSyntax)
{
// First, load up the symbol table as an actual table instead of just a path string
ISymbolTable *symTable = NULL;
if (!symTablePathStr.IsEmpty())
{
symTable = languageSyntax->CreateSymbolTable();
if (symTable)
{
VFile file(symbolTablePath);
if (symTable->OpenSymbolDatabase( file ))
{
// Now that we have all of the parameters grabbed, we can figure out which language syntax engine
// we want to load up (based on the test file), and ask it to give us completions. We can then take
// those completions and turn them into an array of values to pass back to the caller.
VString extension;
filePath.GetExtension( extension );
ISyntaxInterface *syntaxEngine = languageSyntax->GetSyntaxByExtension( extension );
if (syntaxEngine)
{
// Now that we've got the syntax engine, we can ask it for the completions we need
std::vector< IDefinition > definitions;
syntaxEngine->GetDefinitionsForTesting( selectionStr, symTable, filePath.GetPath(), line, definitions );
JSDefinitionResult *results = new JSDefinitionResult( definitions );
ioParams.ReturnValue( VJSLanguageSyntaxTesterDefinitionResults::CreateInstance( ioParams.GetContextRef(), results ) );
results->Release();
}
}
symTable->Release();
}
}
languageSyntax->Release();
}
}
示例5: _GetSymbol
void VJSLanguageSyntaxTester::_GetSymbol( XBOX::VJSParms_callStaticFunction &ioParams, void * )
{
// We are expecting 4 JavaScript parameters:
// - path to the symbol table
// - symbol name
// - symbol definition file
// - symbol definition line number
VString symTablePathStr, symbolName, symbolDefPath;
sLONG symbolDefLineNumber;
if (ioParams.CountParams() == 4) {
if (!ioParams.GetStringParam( 1, symTablePathStr )) return;
if (!ioParams.GetStringParam( 2, symbolName )) return;
if (!ioParams.GetStringParam( 3, symbolDefPath )) return;
if (!ioParams.GetLongParam( 4, &symbolDefLineNumber )) return;
}
else
return;
VFilePath symbolTablePath( symTablePathStr, FPS_POSIX);
VFilePath symbolDefFilePath( symbolDefPath, FPS_POSIX);
if ( ! symbolTablePath.IsValid() || ! symbolDefFilePath.IsValid() )
return;
CLanguageSyntaxComponent *languageSyntax = (CLanguageSyntaxComponent *)VComponentManager::RetainComponent( (CType)CLanguageSyntaxComponent::Component_Type );
if (languageSyntax)
{
// First, load up the symbol table as an actual table instead of just a path string
ISymbolTable *symTable = NULL;
if (!symTablePathStr.IsEmpty())
{
symTable = languageSyntax->CreateSymbolTable();
if (symTable)
{
VFile file(symbolTablePath);
if (symTable->OpenSymbolDatabase( file ))
{
// Get symbol file
std::vector< Symbols::IFile * > files = symTable->GetFilesByPathAndBaseFolder( symbolDefFilePath, eSymbolFileBaseFolderProject );
if ( ! files.empty() )
{
Symbols::IFile *file = files.front();
file->Retain();
for (std::vector< Symbols::IFile * >::iterator iter = files.begin(); iter != files.end(); ++iter)
(*iter)->Release();
// Gets symbol corresponding to given parameters
Symbols::ISymbol* owner = symTable->GetSymbolOwnerByLine(file, symbolDefLineNumber);
Symbols::ISymbol* sym = NULL;
if (NULL != owner && owner->GetName() == symbolName)
{
sym = owner;
sym->Retain();
}
if (NULL == sym)
{
std::vector< Symbols::ISymbol * > syms = symTable->GetSymbolsByName(owner, symbolName,file);
for (std::vector< Symbols::ISymbol * >::iterator iter = syms.begin(); iter != syms.end(); ++iter)
{
if ( ( (*iter)->GetLineNumber() + 1 ) == symbolDefLineNumber )
{
sym = *iter;
(*iter)->Retain();
}
(*iter)->Release();
}
}
if (NULL != sym)
{
VJSObject result(ioParams.GetContextRef());
VJSValue jsval(ioParams.GetContextRef());
VString signature;
symTable->GetSymbolSignature( sym, signature );
result.MakeEmpty();
jsval.SetString( sym->GetName() );
result.SetProperty(L"name", jsval, JS4D::PropertyAttributeNone);
jsval.SetString( sym->GetTypeName() );
result.SetProperty(L"type", jsval, JS4D::PropertyAttributeNone);
jsval.SetNumber( sym->GetLineNumber() + 1 );
result.SetProperty(L"line", jsval, JS4D::PropertyAttributeNone);
jsval.SetString( signature );
result.SetProperty(L"signature", jsval, JS4D::PropertyAttributeNone);
jsval.SetString( sym->GetKindString() );
result.SetProperty(L"kind", jsval, JS4D::PropertyAttributeNone);
ioParams.ReturnValue(result);
sym->Release();
//.........这里部分代码省略.........
示例6: _GetCompletions
void VJSLanguageSyntaxTester::_GetCompletions( XBOX::VJSParms_callStaticFunction &ioParams, void * )
{
// We are expecting 5 parameters for JavaScript. One for the path to the symbol table, one for the path to the test file (which
// must already be a part of the symbol table), one for the line number within the file, one for the string that
// we are going to be completing at that point and one for the completion mode. If we get only three parameters, then it's a CSS completion test, which is
// fine -- we just modify the parameters we pass into GetSuggestionsForTesting.
VString symTablePathStr, testFilePathStr, completionString, completionModeStr;
sLONG completionLocation;
if (ioParams.CountParams() == 5) {
if (!ioParams.GetStringParam( 1, symTablePathStr )) return;
if (!ioParams.GetStringParam( 2, completionString )) return;
if (!ioParams.GetStringParam( 3, testFilePathStr )) return;
if (!ioParams.GetLongParam( 4, &completionLocation )) return;
if (!ioParams.GetStringParam( 5, completionModeStr )) return;
} else if (ioParams.CountParams() == 3) {
bool curlyBraces;
if (!ioParams.GetStringParam( 1, completionString )) return;
if (!ioParams.GetBoolParam( 2, &curlyBraces )) return;
if (!ioParams.GetStringParam( 3, testFilePathStr )) return;
// We fudge the completion location information when working with CSS files so that it
// denotes whether we're inside of curly braces or not.
completionLocation = curlyBraces ? 1 : 0;
} else {
return;
}
VFilePath symbolTablePath( symTablePathStr, FPS_POSIX);
VFilePath testFilePath( testFilePathStr, FPS_POSIX);
if ( ! symbolTablePath.IsValid() || ! testFilePath.IsValid() )
return;
EJSCompletionTestingMode completionMode;
if (completionModeStr == "text")
completionMode = eText;
else if (completionModeStr == "displayText")
completionMode = eDisplayText;
else
return;
CLanguageSyntaxComponent *languageSyntax = (CLanguageSyntaxComponent *)VComponentManager::RetainComponent( (CType)CLanguageSyntaxComponent::Component_Type );
if (languageSyntax)
{
// First, load up the symbol table as an actual table instead of just a path string
ISymbolTable *symTable = NULL;
if (!symTablePathStr.IsEmpty())
{
symTable = languageSyntax->CreateSymbolTable();
if ( symTable )
{
VFile file(symbolTablePath);
if (symTable->OpenSymbolDatabase( file ))
{
// Now that we have all of the parameters grabbed, we can figure out which language syntax engine
// we want to load up (based on the test file), and ask it to give us completions. We can then take
// those completions and turn them into an array of values to pass back to the caller.
VString extension;
testFilePath.GetExtension( extension );
ISyntaxInterface *syntaxEngine = languageSyntax->GetSyntaxByExtension( extension );
if (syntaxEngine)
{
// Now that we've got the syntax engine, we can ask it for the completions we need
std::vector< VString > suggestions;
syntaxEngine->GetSuggestionsForTesting( completionString, symTable, testFilePath.GetPath() , completionLocation, completionMode, suggestions );
JSResult *results = new JSResult( suggestions );
ioParams.ReturnValue( VJSLanguageSyntaxTesterResults::CreateInstance( ioParams.GetContextRef(), results ) );
results->Release();
}
}
symTable->Release();
}
}
languageSyntax->Release();
}
}