void VJSLanguageSyntaxTesterDefinitionResults::_GetResult( VJSParms_callStaticFunction &ioParams, IJSLanguageSyntaxTesterDefinitionResults *inResults ) { if (inResults) { sLONG index; if (ioParams.GetLongParam( 1, &index )) { IDefinition definition = inResults->GetResult( index ); VJSObject result(ioParams.GetContextRef()); VJSValue jsval(ioParams.GetContextRef()); result.MakeEmpty(); jsval.SetString( definition.GetName() ); result.SetProperty(L"name", jsval, JS4D::PropertyAttributeNone); jsval.SetString( definition.GetFilePath() ); result.SetProperty(L"file", jsval, JS4D::PropertyAttributeNone); jsval.SetNumber( definition.GetLineNumber() + 1 ); result.SetProperty(L"line", jsval, JS4D::PropertyAttributeNone); ioParams.ReturnValue(result); } } }
void VJSObject::SetProperty( const XBOX::VString& inPropertyName, const XBOX::VValueSingle* inValue, JS4D::PropertyAttributes inAttributes, JS4D::ExceptionRef *outException) const { VJSValue jsval(fContext); if (inValue == NULL || inValue->IsNull()) jsval.SetNull(); else jsval.SetVValue(*inValue); SetProperty(inPropertyName, jsval, inAttributes, outException); }
int to_eight(int val) { int count; count = jsval(val, 8); printf("八进制 :"); while (count >= 0) printf("%d", a[count--]); printf("\n"); }
int to_two(int val) { int count; count = jsval(val, 2); printf("二进制 :"); while (count >= 0) { printf("%d", a[count--]); if ((count+1)%4 == 0) printf(" "); } printf("\n"); }
void VJSGlobalClass::do_dateToIso(VJSParms_callStaticFunction& ioParms, VJSGlobalObject*) { VString s; VJSValue jsval(ioParms.GetContextRef()); if (ioParms.CountParams() > 0) { VTime dd; jsval = ioParms.GetParamValue(1); jsval.GetTime(dd); dd.GetJSONString(s); } ioParms.ReturnString(s); }
int main() { int count; srand(time(NULL)); if (!mycreate()) { printf("create err\n"); return 0; } myread(); count = jsval(); myoutput(count); return 1; }
int to_sixteen(int val) { int count; count = jsval(val, 16); printf("十六进制:"); while (count >= 0) { if (a[count] > 9) { a[count] = (char)(a[count] + 55); printf("%c", a[count--]); } else printf("%d", a[count--]); } printf("\n"); }
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(); } }
void VJSObject::SetProperty( const XBOX::VString& inPropertyName, const XBOX::VString& inValue, JS4D::PropertyAttributes inAttributes, JS4D::ExceptionRef *outException) const { VJSValue jsval(fContext); jsval.SetString(inValue); SetProperty(inPropertyName, jsval, inAttributes, outException); }
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(); } if (NULL != owner) owner->Release(); file->Release(); } } symTable->Release(); } } languageSyntax->Release(); } }