Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef INCLUDE_DART_API_H_ | 5 #ifndef INCLUDE_DART_API_H_ |
| 6 #define INCLUDE_DART_API_H_ | 6 #define INCLUDE_DART_API_H_ |
| 7 | 7 |
| 8 /** \mainpage Dart Embedding API Reference | 8 /** \mainpage Dart Embedding API Reference |
| 9 * | 9 * |
| 10 * Dart is a class-based programming language for creating structured | 10 * Dart is a class-based programming language for creating structured |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 169 * Dart_EnterScope) and go away when the current scope exits. Unless | 169 * Dart_EnterScope) and go away when the current scope exits. Unless |
| 170 * otherwise indicated, callers should assume that all functions in | 170 * otherwise indicated, callers should assume that all functions in |
| 171 * the Dart embedding api return local handles. | 171 * the Dart embedding api return local handles. |
| 172 * | 172 * |
| 173 * Persistent handles are allocated within the current isolate. They | 173 * Persistent handles are allocated within the current isolate. They |
| 174 * can be used to store objects across scopes. Persistent handles have | 174 * can be used to store objects across scopes. Persistent handles have |
| 175 * the lifetime of the current isolate unless they are explicitly | 175 * the lifetime of the current isolate unless they are explicitly |
| 176 * deallocated (see Dart_DeletePersistentHandle). | 176 * deallocated (see Dart_DeletePersistentHandle). |
| 177 */ | 177 */ |
| 178 typedef struct _Dart_Handle* Dart_Handle; | 178 typedef struct _Dart_Handle* Dart_Handle; |
| 179 typedef struct _Dart_PersistentHandle* Dart_PersistentHandle; | |
| 180 typedef struct _Dart_WeakPersistentHandle* Dart_WeakPersistentHandle; | |
| 179 | 181 |
| 180 typedef void (*Dart_WeakPersistentHandleFinalizer)(Dart_Handle handle, | 182 typedef void (*Dart_WeakPersistentHandleFinalizer)( |
| 181 void* peer); | 183 Dart_WeakPersistentHandle handle, |
| 184 void* peer); | |
| 182 typedef void (*Dart_PeerFinalizer)(void* peer); | 185 typedef void (*Dart_PeerFinalizer)(void* peer); |
| 183 | 186 |
| 184 /** | 187 /** |
| 185 * Is this an error handle? | 188 * Is this an error handle? |
| 186 * | 189 * |
| 187 * Requires there to be a current isolate. | 190 * Requires there to be a current isolate. |
| 188 */ | 191 */ |
| 189 DART_EXPORT bool Dart_IsError(Dart_Handle handle); | 192 DART_EXPORT bool Dart_IsError(Dart_Handle handle); |
| 190 | 193 |
| 191 /** | 194 /** |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 353 * | 356 * |
| 354 * This is equivalent to using the triple-equals (===) operator. | 357 * This is equivalent to using the triple-equals (===) operator. |
| 355 * | 358 * |
| 356 * \param obj1 An object to be compared. | 359 * \param obj1 An object to be compared. |
| 357 * \param obj2 An object to be compared. | 360 * \param obj2 An object to be compared. |
| 358 * | 361 * |
| 359 * \return True if the objects are identically equal. False otherwise. | 362 * \return True if the objects are identically equal. False otherwise. |
| 360 */ | 363 */ |
| 361 DART_EXPORT bool Dart_IdentityEquals(Dart_Handle obj1, Dart_Handle obj2); | 364 DART_EXPORT bool Dart_IdentityEquals(Dart_Handle obj1, Dart_Handle obj2); |
| 362 | 365 |
| 366 DART_EXPORT Dart_Handle Dart_NewHandleFromPersistent(Dart_PersistentHandle objec t); | |
| 367 DART_EXPORT Dart_Handle Dart_NewHandleFromWeakPersistent(Dart_WeakPersistentHand le object); | |
| 368 | |
| 363 /** | 369 /** |
| 364 * Allocates a persistent handle for an object. | 370 * Allocates a persistent handle for an object. |
| 365 * | 371 * |
| 366 * This handle has the lifetime of the current isolate unless it is | 372 * This handle has the lifetime of the current isolate unless it is |
| 367 * explicitly deallocated by calling Dart_DeletePersistentHandle. | 373 * explicitly deallocated by calling Dart_DeletePersistentHandle. |
| 368 * | 374 * |
| 369 * Requires there to be a current isolate. | 375 * Requires there to be a current isolate. |
| 370 */ | 376 */ |
| 371 DART_EXPORT Dart_Handle Dart_NewPersistentHandle(Dart_Handle object); | 377 DART_EXPORT Dart_PersistentHandle Dart_NewPersistentHandle(Dart_Handle object); |
| 372 | 378 |
| 373 /** | 379 /** |
| 374 * Deallocates a persistent handle. | 380 * Deallocates a persistent handle. |
| 375 * | 381 * |
| 376 * Requires there to be a current isolate. | 382 * Requires there to be a current isolate. |
| 377 */ | 383 */ |
| 378 DART_EXPORT void Dart_DeletePersistentHandle(Dart_Handle object); | 384 DART_EXPORT void Dart_DeletePersistentHandle(Dart_PersistentHandle object); |
| 379 | 385 |
| 380 /** | 386 /** |
| 381 * Allocates a weak persistent handle for an object. | 387 * Allocates a weak persistent handle for an object. |
| 382 * | 388 * |
| 383 * This handle has the lifetime of the current isolate unless it is | 389 * This handle has the lifetime of the current isolate unless it is |
| 384 * explicitly deallocated by calling Dart_DeletePersistentHandle. | 390 * explicitly deallocated by calling Dart_DeletePersistentHandle. |
| 385 * | 391 * |
| 386 * Requires there to be a current isolate. | 392 * Requires there to be a current isolate. |
| 387 * | 393 * |
| 388 * \param object An object. | 394 * \param object An object. |
| 389 * \param peer A pointer to a native object or NULL. This value is | 395 * \param peer A pointer to a native object or NULL. This value is |
| 390 * provided to callback when it is invoked. | 396 * provided to callback when it is invoked. |
| 391 * \param callback A function pointer that will be invoked sometime | 397 * \param callback A function pointer that will be invoked sometime |
| 392 * after the object is garbage collected. | 398 * after the object is garbage collected. |
| 393 * | 399 * |
| 394 * \return Success if the weak persistent handle was | 400 * \return Success if the weak persistent handle was |
| 395 * created. Otherwise, returns an error. | 401 * created. Otherwise, returns an error. |
| 396 */ | 402 */ |
| 397 DART_EXPORT Dart_Handle Dart_NewWeakPersistentHandle( | 403 DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle( |
| 398 Dart_Handle object, | 404 Dart_Handle object, |
| 399 void* peer, | 405 void* peer, |
| 400 Dart_WeakPersistentHandleFinalizer callback); | 406 Dart_WeakPersistentHandleFinalizer callback); |
| 401 | 407 |
| 408 DART_EXPORT void Dart_DeleteWeakPersistentHandle(Dart_WeakPersistentHandle objec t); | |
| 409 | |
| 402 /** | 410 /** |
| 403 * Is this object a weak persistent handle? | 411 * Is this object a weak persistent handle? |
| 404 * | 412 * |
| 405 * Requires there to be a current isolate. | 413 * Requires there to be a current isolate. |
| 406 */ | 414 */ |
| 407 DART_EXPORT bool Dart_IsWeakPersistentHandle(Dart_Handle object); | 415 DART_EXPORT bool Dart_IsWeakPersistentHandle(Dart_WeakPersistentHandle object); |
| 408 | 416 |
| 409 /** | 417 /** |
| 410 * Allocates a prologue weak persistent handle for an object. | 418 * Allocates a prologue weak persistent handle for an object. |
| 411 * | 419 * |
| 412 * Prologue weak persistent handles are similar to weak persistent | 420 * Prologue weak persistent handles are similar to weak persistent |
| 413 * handles but exhibit different behavior during garbage collections | 421 * handles but exhibit different behavior during garbage collections |
| 414 * that invoke the prologue and epilogue callbacks. While weak | 422 * that invoke the prologue and epilogue callbacks. While weak |
| 415 * persistent handles always weakly reference their referents, | 423 * persistent handles always weakly reference their referents, |
| 416 * prologue weak persistent handles weakly reference their referents | 424 * prologue weak persistent handles weakly reference their referents |
| 417 * only during a garbage collection that invokes the prologue and | 425 * only during a garbage collection that invokes the prologue and |
| 418 * epilogue callbacks. During all other garbage collections, prologue | 426 * epilogue callbacks. During all other garbage collections, prologue |
| 419 * weak persistent handles strongly reference their referents. | 427 * weak persistent handles strongly reference their referents. |
| 420 * | 428 * |
| 421 * This handle has the lifetime of the current isolate unless it is | 429 * This handle has the lifetime of the current isolate unless it is |
| 422 * explicitly deallocated by calling Dart_DeletePersistentHandle. | 430 * explicitly deallocated by calling Dart_DeletePersistentHandle. |
| 423 * | 431 * |
| 424 * Requires there to be a current isolate. | 432 * Requires there to be a current isolate. |
| 425 * | 433 * |
| 426 * \param object An object. | 434 * \param object An object. |
| 427 * \param peer A pointer to a native object or NULL. This value is | 435 * \param peer A pointer to a native object or NULL. This value is |
| 428 * provided to callback when it is invoked. | 436 * provided to callback when it is invoked. |
| 429 * \param callback A function pointer that will be invoked sometime | 437 * \param callback A function pointer that will be invoked sometime |
| 430 * after the object is garbage collected. | 438 * after the object is garbage collected. |
| 431 * | 439 * |
| 432 * \return Success if the prologue weak persistent handle was created. | 440 * \return Success if the prologue weak persistent handle was created. |
| 433 * Otherwise, returns an error. | 441 * Otherwise, returns an error. |
| 434 */ | 442 */ |
| 435 DART_EXPORT Dart_Handle Dart_NewPrologueWeakPersistentHandle( | 443 DART_EXPORT Dart_WeakPersistentHandle Dart_NewPrologueWeakPersistentHandle( |
| 436 Dart_Handle object, | 444 Dart_Handle object, |
| 437 void* peer, | 445 void* peer, |
| 438 Dart_WeakPersistentHandleFinalizer callback); | 446 Dart_WeakPersistentHandleFinalizer callback); |
| 439 | 447 |
| 440 /** | 448 /** |
| 441 * Is this object a prologue weak persistent handle? | 449 * Is this object a prologue weak persistent handle? |
| 442 * | 450 * |
| 443 * Requires there to be a current isolate. | 451 * Requires there to be a current isolate. |
| 444 */ | 452 */ |
| 445 DART_EXPORT bool Dart_IsPrologueWeakPersistentHandle(Dart_Handle object); | 453 DART_EXPORT bool Dart_IsPrologueWeakPersistentHandle(Dart_WeakPersistentHandle o bject); |
| 446 | 454 |
| 447 /** | 455 /** |
| 448 * Constructs a set of weak references from the Cartesian product of | 456 * Constructs a set of weak references from the Cartesian product of |
| 449 * the objects in the key set and the objects in values set. | 457 * the objects in the key set and the objects in values set. |
| 450 * | 458 * |
| 451 * \param keys A set of object references. These references will be | 459 * \param keys A set of object references. These references will be |
| 452 * considered weak by the garbage collector. | 460 * considered weak by the garbage collector. |
| 453 * \param num_keys the number of objects in the keys set. | 461 * \param num_keys the number of objects in the keys set. |
| 454 * \param values A set of object references. These references will be | 462 * \param values A set of object references. These references will be |
| 455 * considered weak by garbage collector unless any object reference | 463 * considered weak by garbage collector unless any object reference |
| 456 * in 'keys' is found to be strong. | 464 * in 'keys' is found to be strong. |
| 457 * \param num_values the size of the values set | 465 * \param num_values the size of the values set |
| 458 * | 466 * |
| 459 * \return Success if the weak reference set could be created. | 467 * \return Success if the weak reference set could be created. |
| 460 * Otherwise, returns an error handle. | 468 * Otherwise, returns an error handle. |
| 461 */ | 469 */ |
| 462 DART_EXPORT Dart_Handle Dart_NewWeakReferenceSet(Dart_Handle* keys, | 470 DART_EXPORT Dart_Handle Dart_NewWeakReferenceSet( |
| 463 intptr_t num_keys, | 471 Dart_WeakPersistentHandle* keys, |
| 464 Dart_Handle* values, | 472 intptr_t num_keys, |
| 465 intptr_t num_values); | 473 Dart_WeakPersistentHandle* values, |
| 474 intptr_t num_values); | |
| 466 | 475 |
| 467 // --- Garbage Collection Callbacks --- | 476 // --- Garbage Collection Callbacks --- |
| 468 | 477 |
| 469 /** | 478 /** |
| 470 * Callbacks signal the beginning and end of a garbage collection. | 479 * Callbacks signal the beginning and end of a garbage collection. |
| 471 * | 480 * |
| 472 * These signals are intended to be used by the embedder to manage the | 481 * These signals are intended to be used by the embedder to manage the |
| 473 * lifetime of native objects with a managed object peer. | 482 * lifetime of native objects with a managed object peer. |
| 474 */ | 483 */ |
| 475 | 484 |
| (...skipping 1271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1747 * \param type The type of the TypedData object. | 1756 * \param type The type of the TypedData object. |
| 1748 * \param length The length of the TypedData object (length in type units). | 1757 * \param length The length of the TypedData object (length in type units). |
| 1749 * | 1758 * |
| 1750 * \return The TypedData object if no error occurs. Otherwise returns | 1759 * \return The TypedData object if no error occurs. Otherwise returns |
| 1751 * an error handle. | 1760 * an error handle. |
| 1752 */ | 1761 */ |
| 1753 DART_EXPORT Dart_Handle Dart_NewTypedData(Dart_TypedData_Type type, | 1762 DART_EXPORT Dart_Handle Dart_NewTypedData(Dart_TypedData_Type type, |
| 1754 intptr_t length); | 1763 intptr_t length); |
| 1755 | 1764 |
| 1756 /** | 1765 /** |
| 1757 * Returns a TypedData object which references an external data array. | 1766 * Returns a TypedData object which references an external data array. |
|
Anton Muhin
2013/05/23 17:18:04
nit: document needs an update
| |
| 1758 * | 1767 * |
| 1759 * \param type The type of the data array. | 1768 * \param type The type of the data array. |
| 1760 * \param value A data array. This array must not move. | 1769 * \param value A data array. This array must not move. |
| 1761 * \param length The length of the data array (length in type units). | 1770 * \param length The length of the data array (length in type units). |
| 1762 * \param peer An external pointer to associate with this array. | 1771 * \param peer An external pointer to associate with this array. |
| 1763 * | 1772 * |
| 1764 * \return The TypedData object if no error occurs. Otherwise returns | 1773 * \return The TypedData object if no error occurs. Otherwise returns |
| 1765 * an error handle. The TypedData object is returned in a | 1774 * an error handle. The TypedData object is returned in a |
| 1766 * WeakPersistentHandle which needs to be deleted in the specified callback | 1775 * WeakPersistentHandle which needs to be deleted in the specified callback |
| 1767 * using Dart_DeletePersistentHandle. | 1776 * using Dart_DeletePersistentHandle. |
| 1768 */ | 1777 */ |
| 1769 DART_EXPORT Dart_Handle Dart_NewExternalTypedData( | 1778 DART_EXPORT Dart_Handle Dart_NewExternalTypedData(Dart_TypedData_Type type, |
| 1770 Dart_TypedData_Type type, | 1779 void* data, |
| 1771 void* data, | 1780 intptr_t length); |
| 1772 intptr_t length, | |
| 1773 void* peer, | |
| 1774 Dart_WeakPersistentHandleFinalizer callback); | |
| 1775 | 1781 |
| 1776 /** | 1782 /** |
| 1777 * Retrieves the peer pointer associated with an external TypedData object. | 1783 * Retrieves the peer pointer associated with an external TypedData object. |
| 1778 */ | 1784 */ |
| 1779 DART_EXPORT Dart_Handle Dart_ExternalTypedDataGetPeer(Dart_Handle object, | 1785 DART_EXPORT Dart_Handle Dart_ExternalTypedDataGetPeer(Dart_Handle object, |
| 1780 void** peer); | 1786 void** peer); |
| 1781 | 1787 |
| 1782 /** | 1788 /** |
| 1783 * Acquires access to the internal data address of a TypedData object. | 1789 * Acquires access to the internal data address of a TypedData object. |
| 1784 * | 1790 * |
| (...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2635 * | 2641 * |
| 2636 * \param object An object. | 2642 * \param object An object. |
| 2637 * \param peer A value to store in the peer field. | 2643 * \param peer A value to store in the peer field. |
| 2638 * | 2644 * |
| 2639 * \return Returns an error if 'object' is a subtype of Null, num, or | 2645 * \return Returns an error if 'object' is a subtype of Null, num, or |
| 2640 * bool. | 2646 * bool. |
| 2641 */ | 2647 */ |
| 2642 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); | 2648 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); |
| 2643 | 2649 |
| 2644 #endif // INCLUDE_DART_API_H_ | 2650 #endif // INCLUDE_DART_API_H_ |
| OLD | NEW |