391 392 jobject jC = env->NewDirectByteBuffer(&cursor, sizeof(CXCursor)); 393 jobject jP = env->NewDirectByteBuffer(&parent, sizeof(CXCursor)); 394 return (CXChildVisitResult) env->CallStaticIntMethod(clsCursor, 395 visitorID, 396 pCtx->visitor, 397 jC, jP, 398 pCtx->data); 399 } 400 401 JNIEXPORT jint JNICALL Java_jdk_internal_clang_Cursor_visitChildren 402 (JNIEnv *env, jobject cursor, jobject visitor, jobject data) { 403 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 404 struct visitor_data ctx; 405 env->GetJavaVM(&(ctx.jvm)); 406 ctx.visitor = visitor; 407 ctx.data = data; 408 return clang_visitChildren(*ptr, visitorFunc, &ctx); 409 } 410 411 JNIEXPORT jboolean JNICALL Java_jdk_internal_clang_Cursor_equalCursor 412 (JNIEnv *env, jobject cursor, jobject other) { 413 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 414 CXCursor *ptrOther = (CXCursor*) J2P(env, other); 415 return clang_equalCursors(*ptr, *ptrOther); 416 } 417 418 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Cursor_type 419 (JNIEnv *env, jobject cursor) { 420 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 421 CXType type = clang_getCursorType(*ptr); 422 jobject buffer = env->NewDirectByteBuffer(&type, sizeof(CXType)); 423 return env->NewObject(clsType, ctorType, buffer); 424 } 425 426 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Cursor_getEnumDeclIntegerType 427 (JNIEnv *env, jobject cursor) { 428 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 429 CXType type = clang_getEnumDeclIntegerType(*ptr); 430 jobject buffer = env->NewDirectByteBuffer(&type, sizeof(CXType)); 431 return env->NewObject(clsType, ctorType, buffer); 432 } 433 434 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Cursor_getDefinition 435 (JNIEnv *env, jobject cursor) { 436 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 437 CXCursor def = clang_getCursorDefinition(*ptr); 500 501 JNIEXPORT jint JNICALL Java_jdk_internal_clang_Cursor_getBitFieldWidth 502 (JNIEnv *env, jobject _self) { 503 CXCursor *ptr = (CXCursor*) J2P(env, _self); 504 return clang_getFieldDeclBitWidth(*ptr); 505 } 506 507 JNIEXPORT jlong JNICALL Java_jdk_internal_clang_Cursor_getTranslationUnit0 508 (JNIEnv *env, jobject _self) { 509 CXCursor *ptr = (CXCursor*) J2P(env, _self); 510 return (jlong) clang_Cursor_getTranslationUnit(*ptr); 511 } 512 513 JNIEXPORT jstring JNICALL Java_jdk_internal_clang_Cursor_getMangling 514 (JNIEnv *env, jobject _self) { 515 CXCursor *ptr = (CXCursor*) J2P(env, _self); 516 CXString mangled = clang_Cursor_getMangling(*ptr); 517 return CX2JString(env, mangled); 518 } 519 520 /************************************* 521 * Type <-> CXType related functions 522 *************************************/ 523 524 JNIEXPORT jboolean JNICALL Java_jdk_internal_clang_Type_isVariadic 525 (JNIEnv *env, jobject type) { 526 CXType *ptr = (CXType*) J2P(env, type); 527 return clang_isFunctionTypeVariadic(*ptr); 528 } 529 530 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Type_resultType 531 (JNIEnv *env, jobject type) { 532 CXType *ptr = (CXType*) J2P(env, type); 533 CXType result = clang_getResultType(*ptr); 534 jobject buffer = env->NewDirectByteBuffer(&result, sizeof(CXType)); 535 return env->NewObject(clsType, ctorType, buffer); 536 } 537 538 JNIEXPORT jint JNICALL Java_jdk_internal_clang_Type_numberOfArgs 539 (JNIEnv *env, jobject type) { 596 (JNIEnv *env, jobject type) { 597 CXType *ptr = (CXType*) J2P(env, type); 598 return ptr->kind; 599 } 600 601 JNIEXPORT jlong JNICALL Java_jdk_internal_clang_Type_size 602 (JNIEnv *env, jobject type) { 603 CXType *ptr = (CXType*) J2P(env, type); 604 return clang_Type_getSizeOf(*ptr); 605 } 606 607 JNIEXPORT jlong JNICALL Java_jdk_internal_clang_Type_getOffsetOf 608 (JNIEnv *env, jobject type, jstring field_name) { 609 CXType *ptr = (CXType*) J2P(env, type); 610 const char *name = env->GetStringUTFChars(field_name, NULL); 611 long long offset = clang_Type_getOffsetOf(*ptr, name); 612 env->ReleaseStringUTFChars(field_name, name); 613 return offset; 614 } 615 616 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Type_getDeclarationCursor 617 (JNIEnv *env, jobject type) { 618 CXType *ptr = (CXType*) J2P(env, type); 619 CXCursor result = clang_getTypeDeclaration(*ptr); 620 jobject buffer = env->NewDirectByteBuffer(&result, sizeof(CXCursor)); 621 return env->NewObject(clsCursor, ctorCursor, buffer); 622 } 623 624 /************************************* 625 * Location related functions 626 *************************************/ 627 628 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_SourceLocation_getFileLocation 629 (JNIEnv *env, jobject loc) { 630 CXSourceLocation *ptr = (CXSourceLocation*) J2P(env, loc); 631 struct LocationFactory f; 632 return f.get(env, ptr, clang_getFileLocation); 633 } 634 635 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_SourceLocation_getExpansionLocation | 391 392 jobject jC = env->NewDirectByteBuffer(&cursor, sizeof(CXCursor)); 393 jobject jP = env->NewDirectByteBuffer(&parent, sizeof(CXCursor)); 394 return (CXChildVisitResult) env->CallStaticIntMethod(clsCursor, 395 visitorID, 396 pCtx->visitor, 397 jC, jP, 398 pCtx->data); 399 } 400 401 JNIEXPORT jint JNICALL Java_jdk_internal_clang_Cursor_visitChildren 402 (JNIEnv *env, jobject cursor, jobject visitor, jobject data) { 403 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 404 struct visitor_data ctx; 405 env->GetJavaVM(&(ctx.jvm)); 406 ctx.visitor = visitor; 407 ctx.data = data; 408 return clang_visitChildren(*ptr, visitorFunc, &ctx); 409 } 410 411 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Cursor_type 412 (JNIEnv *env, jobject cursor) { 413 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 414 CXType type = clang_getCursorType(*ptr); 415 jobject buffer = env->NewDirectByteBuffer(&type, sizeof(CXType)); 416 return env->NewObject(clsType, ctorType, buffer); 417 } 418 419 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Cursor_getEnumDeclIntegerType 420 (JNIEnv *env, jobject cursor) { 421 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 422 CXType type = clang_getEnumDeclIntegerType(*ptr); 423 jobject buffer = env->NewDirectByteBuffer(&type, sizeof(CXType)); 424 return env->NewObject(clsType, ctorType, buffer); 425 } 426 427 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Cursor_getDefinition 428 (JNIEnv *env, jobject cursor) { 429 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 430 CXCursor def = clang_getCursorDefinition(*ptr); 493 494 JNIEXPORT jint JNICALL Java_jdk_internal_clang_Cursor_getBitFieldWidth 495 (JNIEnv *env, jobject _self) { 496 CXCursor *ptr = (CXCursor*) J2P(env, _self); 497 return clang_getFieldDeclBitWidth(*ptr); 498 } 499 500 JNIEXPORT jlong JNICALL Java_jdk_internal_clang_Cursor_getTranslationUnit0 501 (JNIEnv *env, jobject _self) { 502 CXCursor *ptr = (CXCursor*) J2P(env, _self); 503 return (jlong) clang_Cursor_getTranslationUnit(*ptr); 504 } 505 506 JNIEXPORT jstring JNICALL Java_jdk_internal_clang_Cursor_getMangling 507 (JNIEnv *env, jobject _self) { 508 CXCursor *ptr = (CXCursor*) J2P(env, _self); 509 CXString mangled = clang_Cursor_getMangling(*ptr); 510 return CX2JString(env, mangled); 511 } 512 513 JNIEXPORT jboolean JNICALL Java_jdk_internal_clang_Cursor_equalCursor 514 (JNIEnv *env, jobject cursor, jobject other) { 515 CXCursor *ptr = (CXCursor*) J2P(env, cursor); 516 CXCursor *ptrOther = (CXCursor*) J2P(env, other); 517 return clang_equalCursors(*ptr, *ptrOther); 518 } 519 520 /************************************* 521 * Type <-> CXType related functions 522 *************************************/ 523 524 JNIEXPORT jboolean JNICALL Java_jdk_internal_clang_Type_isVariadic 525 (JNIEnv *env, jobject type) { 526 CXType *ptr = (CXType*) J2P(env, type); 527 return clang_isFunctionTypeVariadic(*ptr); 528 } 529 530 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Type_resultType 531 (JNIEnv *env, jobject type) { 532 CXType *ptr = (CXType*) J2P(env, type); 533 CXType result = clang_getResultType(*ptr); 534 jobject buffer = env->NewDirectByteBuffer(&result, sizeof(CXType)); 535 return env->NewObject(clsType, ctorType, buffer); 536 } 537 538 JNIEXPORT jint JNICALL Java_jdk_internal_clang_Type_numberOfArgs 539 (JNIEnv *env, jobject type) { 596 (JNIEnv *env, jobject type) { 597 CXType *ptr = (CXType*) J2P(env, type); 598 return ptr->kind; 599 } 600 601 JNIEXPORT jlong JNICALL Java_jdk_internal_clang_Type_size 602 (JNIEnv *env, jobject type) { 603 CXType *ptr = (CXType*) J2P(env, type); 604 return clang_Type_getSizeOf(*ptr); 605 } 606 607 JNIEXPORT jlong JNICALL Java_jdk_internal_clang_Type_getOffsetOf 608 (JNIEnv *env, jobject type, jstring field_name) { 609 CXType *ptr = (CXType*) J2P(env, type); 610 const char *name = env->GetStringUTFChars(field_name, NULL); 611 long long offset = clang_Type_getOffsetOf(*ptr, name); 612 env->ReleaseStringUTFChars(field_name, name); 613 return offset; 614 } 615 616 JNIEXPORT jboolean JNICALL Java_jdk_internal_clang_Type_equalType 617 (JNIEnv *env, jobject type, jobject other) { 618 CXType *ptr = (CXType*) J2P(env, type); 619 CXType *ptrOther = (CXType*) J2P(env, other); 620 return clang_equalTypes(*ptr, *ptrOther); 621 } 622 623 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_Type_getDeclarationCursor 624 (JNIEnv *env, jobject type) { 625 CXType *ptr = (CXType*) J2P(env, type); 626 CXCursor result = clang_getTypeDeclaration(*ptr); 627 jobject buffer = env->NewDirectByteBuffer(&result, sizeof(CXCursor)); 628 return env->NewObject(clsCursor, ctorCursor, buffer); 629 } 630 631 /************************************* 632 * Location related functions 633 *************************************/ 634 635 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_SourceLocation_getFileLocation 636 (JNIEnv *env, jobject loc) { 637 CXSourceLocation *ptr = (CXSourceLocation*) J2P(env, loc); 638 struct LocationFactory f; 639 return f.get(env, ptr, clang_getFileLocation); 640 } 641 642 JNIEXPORT jobject JNICALL Java_jdk_internal_clang_SourceLocation_getExpansionLocation |