OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
3 * for details. All rights reserved. Use of this source code is governed by a | 3 * for details. All rights reserved. Use of this source code is governed by a |
4 * BSD-style license that can be found in the LICENSE file. | 4 * BSD-style license that can be found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 #ifndef INCLUDE_DART_API_H_ | 7 #ifndef INCLUDE_DART_API_H_ |
8 #define INCLUDE_DART_API_H_ | 8 #define INCLUDE_DART_API_H_ |
9 | 9 |
10 /** \mainpage Dart Embedding API Reference | 10 /** \mainpage Dart Embedding API Reference |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 #else | 58 #else |
59 #define DART_EXPORT DART_EXTERN_C | 59 #define DART_EXPORT DART_EXTERN_C |
60 #endif | 60 #endif |
61 #else | 61 #else |
62 #error Tool chain not supported. | 62 #error Tool chain not supported. |
63 #endif | 63 #endif |
64 #endif | 64 #endif |
65 | 65 |
66 #include <assert.h> | 66 #include <assert.h> |
67 | 67 |
68 /* --- Handles --- */ | 68 /* |
| 69 * ======= |
| 70 * Handles |
| 71 * ======= |
| 72 */ |
69 | 73 |
70 /** | 74 /** |
71 * An object reference managed by the Dart VM garbage collector. | 75 * An object reference managed by the Dart VM garbage collector. |
72 * | 76 * |
73 * Because the garbage collector may move objects, it is unsafe to | 77 * Because the garbage collector may move objects, it is unsafe to |
74 * refer to objects directly. Instead, we refer to objects through | 78 * refer to objects directly. Instead, we refer to objects through |
75 * handles, which are known to the garbage collector and updated | 79 * handles, which are known to the garbage collector and updated |
76 * automatically when the object is moved. Handles should be passed | 80 * automatically when the object is moved. Handles should be passed |
77 * by value (except in cases like out-parameters) and should never be | 81 * by value (except in cases like out-parameters) and should never be |
78 * allocated on the heap. | 82 * allocated on the heap. |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 * | 480 * |
477 * \return Success if the weak reference set could be created. | 481 * \return Success if the weak reference set could be created. |
478 * Otherwise, returns an error handle. | 482 * Otherwise, returns an error handle. |
479 */ | 483 */ |
480 DART_EXPORT Dart_Handle Dart_NewWeakReferenceSet( | 484 DART_EXPORT Dart_Handle Dart_NewWeakReferenceSet( |
481 Dart_WeakPersistentHandle* keys, | 485 Dart_WeakPersistentHandle* keys, |
482 intptr_t num_keys, | 486 intptr_t num_keys, |
483 Dart_WeakPersistentHandle* values, | 487 Dart_WeakPersistentHandle* values, |
484 intptr_t num_values); | 488 intptr_t num_values); |
485 | 489 |
486 /* --- Garbage Collection Callbacks --- */ | 490 |
| 491 /* |
| 492 * ============================ |
| 493 * Garbage Collection Callbacks |
| 494 * ============================ |
| 495 */ |
487 | 496 |
488 /** | 497 /** |
489 * Callbacks signal the beginning and end of a garbage collection. | 498 * Callbacks signal the beginning and end of a garbage collection. |
490 * | 499 * |
491 * These signals are intended to be used by the embedder to manage the | 500 * These signals are intended to be used by the embedder to manage the |
492 * lifetime of native objects with a managed object peer. | 501 * lifetime of native objects with a managed object peer. |
493 */ | 502 */ |
494 | 503 |
495 /** | 504 /** |
496 * A callback invoked at the beginning of a garbage collection. | 505 * A callback invoked at the beginning of a garbage collection. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 * \param callback A function pointer to an epilogue callback | 555 * \param callback A function pointer to an epilogue callback |
547 * function. This function must have been added as an epilogue | 556 * function. This function must have been added as an epilogue |
548 * callback. | 557 * callback. |
549 * | 558 * |
550 * \return Success if the callback was removed. Otherwise, returns an | 559 * \return Success if the callback was removed. Otherwise, returns an |
551 * error handle. | 560 * error handle. |
552 */ | 561 */ |
553 DART_EXPORT Dart_Handle Dart_RemoveGcEpilogueCallback( | 562 DART_EXPORT Dart_Handle Dart_RemoveGcEpilogueCallback( |
554 Dart_GcEpilogueCallback callback); | 563 Dart_GcEpilogueCallback callback); |
555 | 564 |
556 /* --- Initialization and Globals --- */ | 565 |
| 566 /* |
| 567 * ========================== |
| 568 * Initialization and Globals |
| 569 * ========================== |
| 570 */ |
557 | 571 |
558 /** | 572 /** |
559 * Gets the version string for the Dart VM. | 573 * Gets the version string for the Dart VM. |
560 * | 574 * |
561 * The version of the Dart VM can be accessed without initializing the VM. | 575 * The version of the Dart VM can be accessed without initializing the VM. |
562 * | 576 * |
563 * \return The version string for the embedded Dart VM. | 577 * \return The version string for the embedded Dart VM. |
564 */ | 578 */ |
565 DART_EXPORT const char* Dart_VersionString(); | 579 DART_EXPORT const char* Dart_VersionString(); |
566 | 580 |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
737 * | 751 * |
738 * \return True if VM flags set successfully. | 752 * \return True if VM flags set successfully. |
739 */ | 753 */ |
740 DART_EXPORT bool Dart_SetVMFlags(int argc, const char** argv); | 754 DART_EXPORT bool Dart_SetVMFlags(int argc, const char** argv); |
741 | 755 |
742 /** | 756 /** |
743 * Returns true if the named VM flag is set. | 757 * Returns true if the named VM flag is set. |
744 */ | 758 */ |
745 DART_EXPORT bool Dart_IsVMFlagSet(const char* flag_name); | 759 DART_EXPORT bool Dart_IsVMFlagSet(const char* flag_name); |
746 | 760 |
747 /* --- Isolates --- */ | 761 |
| 762 /* |
| 763 * ======== |
| 764 * Isolates |
| 765 * ======== |
| 766 */ |
748 | 767 |
749 /** | 768 /** |
750 * Creates a new isolate. The new isolate becomes the current isolate. | 769 * Creates a new isolate. The new isolate becomes the current isolate. |
751 * | 770 * |
752 * A snapshot can be used to restore the VM quickly to a saved state | 771 * A snapshot can be used to restore the VM quickly to a saved state |
753 * and is useful for fast startup. If snapshot data is provided, the | 772 * and is useful for fast startup. If snapshot data is provided, the |
754 * isolate will be started using that snapshot data. | 773 * isolate will be started using that snapshot data. |
755 * | 774 * |
756 * Requires there to be no current isolate. | 775 * Requires there to be no current isolate. |
757 * | 776 * |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
858 * \param buffer Returns a pointer to a buffer containing | 877 * \param buffer Returns a pointer to a buffer containing |
859 * the snapshot. This buffer is scope allocated and is only valid | 878 * the snapshot. This buffer is scope allocated and is only valid |
860 * until the next call to Dart_ExitScope. | 879 * until the next call to Dart_ExitScope. |
861 * \param size Returns the size of the buffer. | 880 * \param size Returns the size of the buffer. |
862 * | 881 * |
863 * \return A valid handle if no error occurs during the operation. | 882 * \return A valid handle if no error occurs during the operation. |
864 */ | 883 */ |
865 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer, | 884 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer, |
866 intptr_t* size); | 885 intptr_t* size); |
867 | 886 |
868 | |
869 /** | 887 /** |
870 * Schedules an interrupt for the specified isolate. | 888 * Schedules an interrupt for the specified isolate. |
871 * | 889 * |
872 * Note that the interrupt does not occur immediately. In fact, if | 890 * Note that the interrupt does not occur immediately. In fact, if |
873 * 'isolate' does not execute any further Dart code, then the | 891 * 'isolate' does not execute any further Dart code, then the |
874 * interrupt will not occur at all. If and when the isolate is | 892 * interrupt will not occur at all. If and when the isolate is |
875 * interrupted, the isolate interrupt callback will be invoked with | 893 * interrupted, the isolate interrupt callback will be invoked with |
876 * 'isolate' as the current isolate (see | 894 * 'isolate' as the current isolate (see |
877 * Dart_IsolateInterruptCallback). | 895 * Dart_IsolateInterruptCallback). |
878 * | 896 * |
879 * \param isolate The isolate to be interrupted. | 897 * \param isolate The isolate to be interrupted. |
880 */ | 898 */ |
881 DART_EXPORT void Dart_InterruptIsolate(Dart_Isolate isolate); | 899 DART_EXPORT void Dart_InterruptIsolate(Dart_Isolate isolate); |
882 | 900 |
883 | |
884 /** | 901 /** |
885 * Make isolate runnable. | 902 * Make isolate runnable. |
886 * | 903 * |
887 * When isolates are spawned this function is used to indicate that | 904 * When isolates are spawned this function is used to indicate that |
888 * the creation and initialization (including script loading) of the | 905 * the creation and initialization (including script loading) of the |
889 * isolate is complete and the isolate can start. | 906 * isolate is complete and the isolate can start. |
890 * This function does not expect there to be a current isolate. | 907 * This function does not expect there to be a current isolate. |
891 * | 908 * |
892 * \param isolate The isolate to be made runnable. | 909 * \param isolate The isolate to be made runnable. |
893 */ | 910 */ |
894 DART_EXPORT bool Dart_IsolateMakeRunnable(Dart_Isolate isolate); | 911 DART_EXPORT bool Dart_IsolateMakeRunnable(Dart_Isolate isolate); |
895 | 912 |
896 | 913 |
897 /* --- Messages and Ports --- */ | 914 /* |
| 915 * ================== |
| 916 * Messages and Ports |
| 917 * ================== |
| 918 */ |
898 | 919 |
899 /** | 920 /** |
900 * A port is used to send or receive inter-isolate messages | 921 * A port is used to send or receive inter-isolate messages |
901 */ | 922 */ |
902 typedef int64_t Dart_Port; | 923 typedef int64_t Dart_Port; |
903 | 924 |
904 /** | 925 /** |
905 * ILLEGAL_PORT is a port number guaranteed never to be associated with a valid | 926 * ILLEGAL_PORT is a port number guaranteed never to be associated with a valid |
906 * port. | 927 * port. |
907 */ | 928 */ |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 */ | 1010 */ |
990 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id); | 1011 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id); |
991 | 1012 |
992 /** | 1013 /** |
993 * Gets the ReceivePort for the provided port id, creating it if necessary. | 1014 * Gets the ReceivePort for the provided port id, creating it if necessary. |
994 * | 1015 * |
995 * Note that there is at most one ReceivePort for a given port id. | 1016 * Note that there is at most one ReceivePort for a given port id. |
996 */ | 1017 */ |
997 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id); | 1018 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id); |
998 | 1019 |
999 /* --- Scopes ---- */ | 1020 |
| 1021 /* |
| 1022 * ====== |
| 1023 * Scopes |
| 1024 * ====== |
| 1025 */ |
1000 | 1026 |
1001 /** | 1027 /** |
1002 * Enters a new scope. | 1028 * Enters a new scope. |
1003 * | 1029 * |
1004 * All new local handles will be created in this scope. Additionally, | 1030 * All new local handles will be created in this scope. Additionally, |
1005 * some functions may return "scope allocated" memory which is only | 1031 * some functions may return "scope allocated" memory which is only |
1006 * valid within this scope. | 1032 * valid within this scope. |
1007 * | 1033 * |
1008 * Requires there to be a current isolate. | 1034 * Requires there to be a current isolate. |
1009 */ | 1035 */ |
(...skipping 25 matching lines...) Expand all Loading... |
1035 * All the memory allocated this way will be reclaimed either on the | 1061 * All the memory allocated this way will be reclaimed either on the |
1036 * next call to Dart_ExitScope or when the native port handler exits. | 1062 * next call to Dart_ExitScope or when the native port handler exits. |
1037 * | 1063 * |
1038 * \param size Size of the memory to allocate. | 1064 * \param size Size of the memory to allocate. |
1039 * | 1065 * |
1040 * \return A pointer to the allocated memory. NULL if allocation | 1066 * \return A pointer to the allocated memory. NULL if allocation |
1041 * failed. Failure might due to is no current VM zone. | 1067 * failed. Failure might due to is no current VM zone. |
1042 */ | 1068 */ |
1043 DART_EXPORT uint8_t* Dart_ScopeAllocate(intptr_t size); | 1069 DART_EXPORT uint8_t* Dart_ScopeAllocate(intptr_t size); |
1044 | 1070 |
1045 /* --- Objects ---- */ | 1071 |
| 1072 /* |
| 1073 * ======= |
| 1074 * Objects |
| 1075 * ======= |
| 1076 */ |
1046 | 1077 |
1047 /** | 1078 /** |
1048 * Returns the null object. | 1079 * Returns the null object. |
1049 * | 1080 * |
1050 * Requires there to be a current isolate. | 1081 * Requires there to be a current isolate. |
1051 * | 1082 * |
1052 * \return A handle to the null object. | 1083 * \return A handle to the null object. |
1053 */ | 1084 */ |
1054 DART_EXPORT Dart_Handle Dart_Null(); | 1085 DART_EXPORT Dart_Handle Dart_Null(); |
1055 | 1086 |
(...skipping 30 matching lines...) Expand all Loading... |
1086 * \param object An object. | 1117 * \param object An object. |
1087 * \param type A type. | 1118 * \param type A type. |
1088 * \param instanceof Return true if 'object' is an instance of type 'type'. | 1119 * \param instanceof Return true if 'object' is an instance of type 'type'. |
1089 * | 1120 * |
1090 * \return A valid handle if no error occurs during the operation. | 1121 * \return A valid handle if no error occurs during the operation. |
1091 */ | 1122 */ |
1092 DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object, | 1123 DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object, |
1093 Dart_Handle type, | 1124 Dart_Handle type, |
1094 bool* instanceof); | 1125 bool* instanceof); |
1095 | 1126 |
1096 /* --- Instances ---- | 1127 |
| 1128 /** |
| 1129 * Query object type. |
| 1130 * |
| 1131 * \param object Some Object. |
| 1132 * |
| 1133 * \return true if Object is of the specified type. |
| 1134 */ |
| 1135 DART_EXPORT bool Dart_IsInstance(Dart_Handle object); |
| 1136 DART_EXPORT bool Dart_IsNumber(Dart_Handle object); |
| 1137 DART_EXPORT bool Dart_IsInteger(Dart_Handle object); |
| 1138 DART_EXPORT bool Dart_IsDouble(Dart_Handle object); |
| 1139 DART_EXPORT bool Dart_IsBoolean(Dart_Handle object); |
| 1140 DART_EXPORT bool Dart_IsString(Dart_Handle object); |
| 1141 DART_EXPORT bool Dart_IsStringLatin1(Dart_Handle object); /* (ISO-8859-1) */ |
| 1142 DART_EXPORT bool Dart_IsExternalString(Dart_Handle object); |
| 1143 DART_EXPORT bool Dart_IsList(Dart_Handle object); |
| 1144 DART_EXPORT bool Dart_IsLibrary(Dart_Handle object); |
| 1145 DART_EXPORT bool Dart_IsClass(Dart_Handle handle); |
| 1146 DART_EXPORT bool Dart_IsAbstractClass(Dart_Handle handle); |
| 1147 DART_EXPORT bool Dart_IsFunction(Dart_Handle handle); |
| 1148 DART_EXPORT bool Dart_IsVariable(Dart_Handle handle); |
| 1149 DART_EXPORT bool Dart_IsTypeVariable(Dart_Handle handle); |
| 1150 DART_EXPORT bool Dart_IsClosure(Dart_Handle object); |
| 1151 |
| 1152 |
| 1153 /* |
| 1154 * ========= |
| 1155 * Instances |
| 1156 * ========= |
| 1157 */ |
| 1158 |
| 1159 /* |
1097 * For the purposes of the embedding api, not all objects returned are | 1160 * For the purposes of the embedding api, not all objects returned are |
1098 * Dart language objects. Within the api, we use the term 'Instance' | 1161 * Dart language objects. Within the api, we use the term 'Instance' |
1099 * to indicate handles which refer to true Dart language objects. | 1162 * to indicate handles which refer to true Dart language objects. |
1100 * | 1163 * |
1101 * TODO(turnidge): Reorganize the "Object" section above, pulling down | 1164 * TODO(turnidge): Reorganize the "Object" section above, pulling down |
1102 * any functions that more properly belong here. */ | 1165 * any functions that more properly belong here. */ |
1103 | 1166 |
1104 /** | 1167 /** |
1105 * Does this handle refer to some Dart language object? | |
1106 */ | |
1107 DART_EXPORT bool Dart_IsInstance(Dart_Handle object); | |
1108 | |
1109 /** | |
1110 * Gets the class for some Dart language object. | 1168 * Gets the class for some Dart language object. |
1111 * | 1169 * |
1112 * \param instance Some Dart object. | 1170 * \param instance Some Dart object. |
1113 * | 1171 * |
1114 * \return If no error occurs, the class is returned. Otherwise an | 1172 * \return If no error occurs, the class is returned. Otherwise an |
1115 * error handle is returned. | 1173 * error handle is returned. |
1116 */ | 1174 */ |
1117 DART_EXPORT Dart_Handle Dart_InstanceGetClass(Dart_Handle instance); | 1175 DART_EXPORT Dart_Handle Dart_InstanceGetClass(Dart_Handle instance); |
1118 | 1176 |
1119 /* --- Numbers ---- */ | |
1120 | 1177 |
1121 /** | 1178 /* |
1122 * Is this object a Number? | 1179 * ============================= |
| 1180 * Numbers, Integers and Doubles |
| 1181 * ============================= |
1123 */ | 1182 */ |
1124 DART_EXPORT bool Dart_IsNumber(Dart_Handle object); | |
1125 | |
1126 /* --- Integers ---- */ | |
1127 | |
1128 /** | |
1129 * Is this object an Integer? | |
1130 */ | |
1131 DART_EXPORT bool Dart_IsInteger(Dart_Handle object); | |
1132 | 1183 |
1133 /** | 1184 /** |
1134 * Does this Integer fit into a 64-bit signed integer? | 1185 * Does this Integer fit into a 64-bit signed integer? |
1135 * | 1186 * |
1136 * \param integer An integer. | 1187 * \param integer An integer. |
1137 * \param fits Returns true if the integer fits into a 64-bit signed integer. | 1188 * \param fits Returns true if the integer fits into a 64-bit signed integer. |
1138 * | 1189 * |
1139 * \return A valid handle if no error occurs during the operation. | 1190 * \return A valid handle if no error occurs during the operation. |
1140 */ | 1191 */ |
1141 DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, | 1192 DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1206 * \param integer An Integer. | 1257 * \param integer An Integer. |
1207 * \param value Returns the value of the Integer as a hexadecimal C | 1258 * \param value Returns the value of the Integer as a hexadecimal C |
1208 * string. This C string is scope allocated and is only valid until | 1259 * string. This C string is scope allocated and is only valid until |
1209 * the next call to Dart_ExitScope. | 1260 * the next call to Dart_ExitScope. |
1210 * | 1261 * |
1211 * \return A valid handle if no error occurs during the operation. | 1262 * \return A valid handle if no error occurs during the operation. |
1212 */ | 1263 */ |
1213 DART_EXPORT Dart_Handle Dart_IntegerToHexCString(Dart_Handle integer, | 1264 DART_EXPORT Dart_Handle Dart_IntegerToHexCString(Dart_Handle integer, |
1214 const char** value); | 1265 const char** value); |
1215 | 1266 |
1216 /* --- Booleans ---- */ | 1267 /** |
| 1268 * Returns a Double with the provided value. |
| 1269 * |
| 1270 * \param value A double. |
| 1271 * |
| 1272 * \return The Double object if no error occurs. Otherwise returns |
| 1273 * an error handle. |
| 1274 */ |
| 1275 DART_EXPORT Dart_Handle Dart_NewDouble(double value); |
| 1276 |
| 1277 /** |
| 1278 * Gets the value of a Double |
| 1279 * |
| 1280 * \param double_obj A Double |
| 1281 * \param value Returns the value of the Double. |
| 1282 * |
| 1283 * \return A valid handle if no error occurs during the operation. |
| 1284 */ |
| 1285 DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, double* value); |
| 1286 |
| 1287 |
| 1288 /* |
| 1289 * ======== |
| 1290 * Booleans |
| 1291 * ======== |
| 1292 */ |
1217 | 1293 |
1218 /** | 1294 /** |
1219 * Returns the True object. | 1295 * Returns the True object. |
1220 * | 1296 * |
1221 * Requires there to be a current isolate. | 1297 * Requires there to be a current isolate. |
1222 * | 1298 * |
1223 * \return A handle to the True object. | 1299 * \return A handle to the True object. |
1224 */ | 1300 */ |
1225 DART_EXPORT Dart_Handle Dart_True(); | 1301 DART_EXPORT Dart_Handle Dart_True(); |
1226 | 1302 |
1227 /** | 1303 /** |
1228 * Returns the False object. | 1304 * Returns the False object. |
1229 * | 1305 * |
1230 * Requires there to be a current isolate. | 1306 * Requires there to be a current isolate. |
1231 * | 1307 * |
1232 * \return A handle to the False object. | 1308 * \return A handle to the False object. |
1233 */ | 1309 */ |
1234 DART_EXPORT Dart_Handle Dart_False(); | 1310 DART_EXPORT Dart_Handle Dart_False(); |
1235 | 1311 |
1236 /** | 1312 /** |
1237 * Is this object a Boolean? | |
1238 */ | |
1239 DART_EXPORT bool Dart_IsBoolean(Dart_Handle object); | |
1240 | |
1241 /** | |
1242 * Returns a Boolean with the provided value. | 1313 * Returns a Boolean with the provided value. |
1243 * | 1314 * |
1244 * \param value true or false. | 1315 * \param value true or false. |
1245 * | 1316 * |
1246 * \return The Boolean object if no error occurs. Otherwise returns | 1317 * \return The Boolean object if no error occurs. Otherwise returns |
1247 * an error handle. | 1318 * an error handle. |
1248 */ | 1319 */ |
1249 DART_EXPORT Dart_Handle Dart_NewBoolean(bool value); | 1320 DART_EXPORT Dart_Handle Dart_NewBoolean(bool value); |
1250 | 1321 |
1251 /** | 1322 /** |
1252 * Gets the value of a Boolean | 1323 * Gets the value of a Boolean |
1253 * | 1324 * |
1254 * \param boolean_obj A Boolean | 1325 * \param boolean_obj A Boolean |
1255 * \param value Returns the value of the Boolean. | 1326 * \param value Returns the value of the Boolean. |
1256 * | 1327 * |
1257 * \return A valid handle if no error occurs during the operation. | 1328 * \return A valid handle if no error occurs during the operation. |
1258 */ | 1329 */ |
1259 DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle boolean_obj, bool* value); | 1330 DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle boolean_obj, bool* value); |
1260 | 1331 |
1261 /* --- Doubles --- */ | |
1262 | 1332 |
1263 /** | 1333 /* |
1264 * Is this object a Double? | 1334 * ======= |
| 1335 * Strings |
| 1336 * ======= |
1265 */ | 1337 */ |
1266 DART_EXPORT bool Dart_IsDouble(Dart_Handle object); | |
1267 | |
1268 /** | |
1269 * Returns a Double with the provided value. | |
1270 * | |
1271 * \param value A double. | |
1272 * | |
1273 * \return The Double object if no error occurs. Otherwise returns | |
1274 * an error handle. | |
1275 */ | |
1276 DART_EXPORT Dart_Handle Dart_NewDouble(double value); | |
1277 | |
1278 /** | |
1279 * Gets the value of a Double | |
1280 * | |
1281 * \param double_obj A Double | |
1282 * \param value Returns the value of the Double. | |
1283 * | |
1284 * \return A valid handle if no error occurs during the operation. | |
1285 */ | |
1286 DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, double* value); | |
1287 | |
1288 /* --- Strings --- */ | |
1289 | |
1290 /** | |
1291 * Is this object a String? | |
1292 */ | |
1293 DART_EXPORT bool Dart_IsString(Dart_Handle object); | |
1294 | |
1295 /** | |
1296 * Is this object a Latin-1 (ISO-8859-1) String? | |
1297 */ | |
1298 DART_EXPORT bool Dart_IsStringLatin1(Dart_Handle object); | |
1299 | 1338 |
1300 /** | 1339 /** |
1301 * Gets the length of a String. | 1340 * Gets the length of a String. |
1302 * | 1341 * |
1303 * \param str A String. | 1342 * \param str A String. |
1304 * \param length Returns the length of the String. | 1343 * \param length Returns the length of the String. |
1305 * | 1344 * |
1306 * \return A valid handle if no error occurs during the operation. | 1345 * \return A valid handle if no error occurs during the operation. |
1307 */ | 1346 */ |
1308 DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* length); | 1347 DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* length); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 * \param utf32_array An array of UTF-32 encoded characters. | 1391 * \param utf32_array An array of UTF-32 encoded characters. |
1353 * \param length The length of the codepoints array. | 1392 * \param length The length of the codepoints array. |
1354 * | 1393 * |
1355 * \return The String object if no error occurs. Otherwise returns | 1394 * \return The String object if no error occurs. Otherwise returns |
1356 * an error handle. | 1395 * an error handle. |
1357 */ | 1396 */ |
1358 DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const int32_t* utf32_array, | 1397 DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const int32_t* utf32_array, |
1359 intptr_t length); | 1398 intptr_t length); |
1360 | 1399 |
1361 /** | 1400 /** |
1362 * Is this object an external String? | |
1363 * | |
1364 * An external String is a String which references a fixed array of | |
1365 * codepoints which is external to the Dart heap. | |
1366 */ | |
1367 DART_EXPORT bool Dart_IsExternalString(Dart_Handle object); | |
1368 | |
1369 /** | |
1370 * Retrieves the peer pointer associated with an external String. | 1401 * Retrieves the peer pointer associated with an external String. |
1371 */ | 1402 */ |
1372 DART_EXPORT Dart_Handle Dart_ExternalStringGetPeer(Dart_Handle object, | 1403 DART_EXPORT Dart_Handle Dart_ExternalStringGetPeer(Dart_Handle object, |
1373 void** peer); | 1404 void** peer); |
1374 | 1405 |
1375 /** | 1406 /** |
1376 * Returns a String which references an external array of | 1407 * Returns a String which references an external array of |
1377 * Latin-1 (ISO-8859-1) encoded characters. | 1408 * Latin-1 (ISO-8859-1) encoded characters. |
1378 * | 1409 * |
1379 * \param latin1_array Array of Latin-1 encoded characters. This must not move. | 1410 * \param latin1_array Array of Latin-1 encoded characters. This must not move. |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1505 * result = Dart_MakeExternalString(str, data, size, NULL, NULL); | 1536 * result = Dart_MakeExternalString(str, data, size, NULL, NULL); |
1506 * | 1537 * |
1507 */ | 1538 */ |
1508 DART_EXPORT Dart_Handle Dart_MakeExternalString(Dart_Handle str, | 1539 DART_EXPORT Dart_Handle Dart_MakeExternalString(Dart_Handle str, |
1509 void* array, | 1540 void* array, |
1510 intptr_t length, | 1541 intptr_t length, |
1511 void* peer, | 1542 void* peer, |
1512 Dart_PeerFinalizer cback); | 1543 Dart_PeerFinalizer cback); |
1513 | 1544 |
1514 | 1545 |
1515 /* --- Lists --- */ | 1546 /* |
1516 | 1547 * ===== |
1517 /** | 1548 * Lists |
1518 * Is this object a List? | 1549 * ===== |
1519 */ | 1550 */ |
1520 DART_EXPORT bool Dart_IsList(Dart_Handle object); | |
1521 | 1551 |
1522 /** | 1552 /** |
1523 * Returns a List of the desired length. | 1553 * Returns a List of the desired length. |
1524 * | 1554 * |
1525 * \param length The length of the list. | 1555 * \param length The length of the list. |
1526 * | 1556 * |
1527 * \return The List object if no error occurs. Otherwise returns | 1557 * \return The List object if no error occurs. Otherwise returns |
1528 * an error handle. | 1558 * an error handle. |
1529 */ | 1559 */ |
1530 DART_EXPORT Dart_Handle Dart_NewList(intptr_t length); | 1560 DART_EXPORT Dart_Handle Dart_NewList(intptr_t length); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1583 intptr_t length); | 1613 intptr_t length); |
1584 | 1614 |
1585 /** | 1615 /** |
1586 * May generate an unhandled exception error. | 1616 * May generate an unhandled exception error. |
1587 */ | 1617 */ |
1588 DART_EXPORT Dart_Handle Dart_ListSetAsBytes(Dart_Handle list, | 1618 DART_EXPORT Dart_Handle Dart_ListSetAsBytes(Dart_Handle list, |
1589 intptr_t offset, | 1619 intptr_t offset, |
1590 uint8_t* native_array, | 1620 uint8_t* native_array, |
1591 intptr_t length); | 1621 intptr_t length); |
1592 | 1622 |
1593 /* --- Typed Data --- */ | 1623 |
| 1624 /* |
| 1625 * ========== |
| 1626 * Typed Data |
| 1627 * ========== |
| 1628 */ |
1594 | 1629 |
1595 typedef enum { | 1630 typedef enum { |
1596 Dart_TypedData_kByteData = 0, | 1631 Dart_TypedData_kByteData = 0, |
1597 Dart_TypedData_kInt8, | 1632 Dart_TypedData_kInt8, |
1598 Dart_TypedData_kUint8, | 1633 Dart_TypedData_kUint8, |
1599 Dart_TypedData_kUint8Clamped, | 1634 Dart_TypedData_kUint8Clamped, |
1600 Dart_TypedData_kInt16, | 1635 Dart_TypedData_kInt16, |
1601 Dart_TypedData_kUint16, | 1636 Dart_TypedData_kUint16, |
1602 Dart_TypedData_kInt32, | 1637 Dart_TypedData_kInt32, |
1603 Dart_TypedData_kUint32, | 1638 Dart_TypedData_kUint32, |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1682 * | 1717 * |
1683 * \param object The typed data object whose internal data address is to be | 1718 * \param object The typed data object whose internal data address is to be |
1684 * released. | 1719 * released. |
1685 * | 1720 * |
1686 * \return Success if the internal data address is released successfully. | 1721 * \return Success if the internal data address is released successfully. |
1687 * Otherwise, returns an error handle. | 1722 * Otherwise, returns an error handle. |
1688 */ | 1723 */ |
1689 DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object); | 1724 DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object); |
1690 | 1725 |
1691 | 1726 |
1692 /* --- Closures --- */ | 1727 /* |
1693 | 1728 * ============================================================ |
1694 /** | 1729 * Invoking Constructors, Methods, Closures and Field accessors |
1695 * Is this object a Closure? | 1730 * ============================================================ |
1696 */ | 1731 */ |
1697 DART_EXPORT bool Dart_IsClosure(Dart_Handle object); | |
1698 | |
1699 /** | |
1700 * Retrieves the function of a closure. | |
1701 * | |
1702 * \return A handle to the function of the closure, or an error handle if the | |
1703 * argument is not a closure. | |
1704 */ | |
1705 DART_EXPORT Dart_Handle Dart_ClosureFunction(Dart_Handle closure); | |
1706 | |
1707 /** | |
1708 * Invokes a Closure with the given arguments. | |
1709 * | |
1710 * May generate an unhandled exception error. | |
1711 * | |
1712 * \return If no error occurs during execution, then the result of | |
1713 * invoking the closure is returned. If an error occurs during | |
1714 * execution, then an error handle is returned. | |
1715 */ | |
1716 DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure, | |
1717 int number_of_arguments, | |
1718 Dart_Handle* arguments); | |
1719 | |
1720 /* --- Classes and Interfaces --- */ | |
1721 | |
1722 /** | |
1723 * Is this a class handle? | |
1724 */ | |
1725 DART_EXPORT bool Dart_IsClass(Dart_Handle handle); | |
1726 | |
1727 /** | |
1728 * Is this an abstract class handle? | |
1729 */ | |
1730 DART_EXPORT bool Dart_IsAbstractClass(Dart_Handle handle); | |
1731 | |
1732 /** | |
1733 * Returns the class name for the provided class or interface. | |
1734 */ | |
1735 DART_EXPORT Dart_Handle Dart_ClassName(Dart_Handle clazz); | |
1736 | |
1737 /** | |
1738 * Returns the library for the provided class or interface. | |
1739 */ | |
1740 DART_EXPORT Dart_Handle Dart_ClassGetLibrary(Dart_Handle clazz); | |
1741 | |
1742 /** | |
1743 * Returns the number of interfaces directly implemented by some class | |
1744 * or interface. | |
1745 * | |
1746 * TODO(turnidge): Finish documentation. | |
1747 */ | |
1748 DART_EXPORT Dart_Handle Dart_ClassGetInterfaceCount(Dart_Handle clazz, | |
1749 intptr_t* count); | |
1750 | |
1751 /** | |
1752 * Returns the interface at some index in the list of interfaces some | |
1753 * class or inteface. | |
1754 * | |
1755 * TODO(turnidge): Finish documentation. | |
1756 */ | |
1757 DART_EXPORT Dart_Handle Dart_ClassGetInterfaceAt(Dart_Handle clazz, | |
1758 intptr_t index); | |
1759 | |
1760 /** | |
1761 * Is this class defined by a typedef? | |
1762 * | |
1763 * Typedef definitions from the main program are represented as a | |
1764 * special kind of class handle. See Dart_ClassGetTypedefReferent. | |
1765 * | |
1766 * TODO(turnidge): Finish documentation. | |
1767 */ | |
1768 DART_EXPORT bool Dart_ClassIsTypedef(Dart_Handle clazz); | |
1769 | |
1770 /** | |
1771 * Returns a handle to the type to which a typedef refers. | |
1772 * | |
1773 * It is an error to call this function on a handle for which | |
1774 * Dart_ClassIsTypedef is not true. | |
1775 * | |
1776 * TODO(turnidge): Finish documentation. | |
1777 */ | |
1778 DART_EXPORT Dart_Handle Dart_ClassGetTypedefReferent(Dart_Handle clazz); | |
1779 | |
1780 /** | |
1781 * Does this class represent the type of a function? | |
1782 */ | |
1783 DART_EXPORT bool Dart_ClassIsFunctionType(Dart_Handle clazz); | |
1784 | |
1785 /** | |
1786 * Returns a function handle representing the signature associated | |
1787 * with a function type. | |
1788 * | |
1789 * The return value is a function handle (See Dart_IsFunction, etc.). | |
1790 * | |
1791 * TODO(turnidge): Finish documentation. | |
1792 */ | |
1793 DART_EXPORT Dart_Handle Dart_ClassGetFunctionTypeSignature(Dart_Handle clazz); | |
1794 | |
1795 /* --- Function and Variable Declarations --- */ | |
1796 | |
1797 /** | |
1798 * Returns a list of the names of all functions or methods declared in | |
1799 * a library or class. | |
1800 * | |
1801 * \param target A library or class. | |
1802 * | |
1803 * \return If no error occurs, a list of strings is returned. | |
1804 * Otherwise an error handle is returned. | |
1805 */ | |
1806 DART_EXPORT Dart_Handle Dart_GetFunctionNames(Dart_Handle target); | |
1807 | |
1808 /** | |
1809 * Looks up a function or method declaration by name from a library or | |
1810 * class. | |
1811 * | |
1812 * \param target The library or class containing the function. | |
1813 * \param function_name The name of the function. | |
1814 * | |
1815 * \return If an error is encountered, returns an error handle. | |
1816 * Otherwise returns a function handle if the function is found of | |
1817 * Dart_Null() if the function is not found. | |
1818 */ | |
1819 DART_EXPORT Dart_Handle Dart_LookupFunction(Dart_Handle target, | |
1820 Dart_Handle function_name); | |
1821 | |
1822 /** | |
1823 * Is this a function or method declaration handle? | |
1824 */ | |
1825 DART_EXPORT bool Dart_IsFunction(Dart_Handle handle); | |
1826 | |
1827 /** | |
1828 * Returns the name for the provided function or method. | |
1829 * | |
1830 * \return A valid string handle if no error occurs during the | |
1831 * operation. | |
1832 */ | |
1833 DART_EXPORT Dart_Handle Dart_FunctionName(Dart_Handle function); | |
1834 | |
1835 /** | |
1836 * Returns a handle to the owner of a function. | |
1837 * | |
1838 * The owner of an instance method or a static method is its defining | |
1839 * class. The owner of a top-level function is its defining | |
1840 * library. The owner of the function of a non-implicit closure is the | |
1841 * function of the method or closure that defines the non-implicit | |
1842 * closure. | |
1843 * | |
1844 * \return A valid handle to the owner of the function, or an error | |
1845 * handle if the argument is not a valid handle to a function. | |
1846 */ | |
1847 DART_EXPORT Dart_Handle Dart_FunctionOwner(Dart_Handle function); | |
1848 | |
1849 /** | |
1850 * Determines whether a function handle refers to an abstract method. | |
1851 * | |
1852 * \param function A handle to a function or method declaration. | |
1853 * \param is_static Returns whether the handle refers to an abstract method. | |
1854 * | |
1855 * \return A valid handle if no error occurs during the operation. | |
1856 */ | |
1857 DART_EXPORT Dart_Handle Dart_FunctionIsAbstract(Dart_Handle function, | |
1858 bool* is_abstract); | |
1859 | |
1860 /** | |
1861 * Determines whether a function handle referes to a static function | |
1862 * of method. | |
1863 * | |
1864 * For the purposes of the embedding API, a top-level function is | |
1865 * implicitly declared static. | |
1866 * | |
1867 * \param function A handle to a function or method declaration. | |
1868 * \param is_static Returns whether the function or method is declared static. | |
1869 * | |
1870 * \return A valid handle if no error occurs during the operation. | |
1871 */ | |
1872 DART_EXPORT Dart_Handle Dart_FunctionIsStatic(Dart_Handle function, | |
1873 bool* is_static); | |
1874 | |
1875 /** | |
1876 * Determines whether a function handle referes to a constructor. | |
1877 * | |
1878 * \param function A handle to a function or method declaration. | |
1879 * \param is_static Returns whether the function or method is a constructor. | |
1880 * | |
1881 * \return A valid handle if no error occurs during the operation. | |
1882 */ | |
1883 DART_EXPORT Dart_Handle Dart_FunctionIsConstructor(Dart_Handle function, | |
1884 bool* is_constructor); | |
1885 /* TODO(turnidge): Document behavior for factory constructors too. */ | |
1886 | |
1887 /** | |
1888 * Determines whether a function or method is a getter. | |
1889 * | |
1890 * \param function A handle to a function or method declaration. | |
1891 * \param is_static Returns whether the function or method is a getter. | |
1892 * | |
1893 * \return A valid handle if no error occurs during the operation. | |
1894 */ | |
1895 DART_EXPORT Dart_Handle Dart_FunctionIsGetter(Dart_Handle function, | |
1896 bool* is_getter); | |
1897 | |
1898 /** | |
1899 * Determines whether a function or method is a setter. | |
1900 * | |
1901 * \param function A handle to a function or method declaration. | |
1902 * \param is_static Returns whether the function or method is a setter. | |
1903 * | |
1904 * \return A valid handle if no error occurs during the operation. | |
1905 */ | |
1906 DART_EXPORT Dart_Handle Dart_FunctionIsSetter(Dart_Handle function, | |
1907 bool* is_setter); | |
1908 | |
1909 /** | |
1910 * Returns the return type of a function. | |
1911 * | |
1912 * \return A valid handle to a type or an error handle if the argument | |
1913 * is not valid. | |
1914 */ | |
1915 DART_EXPORT Dart_Handle Dart_FunctionReturnType(Dart_Handle function); | |
1916 | |
1917 /** | |
1918 * Determines the number of required and optional parameters. | |
1919 * | |
1920 * \param function A handle to a function or method declaration. | |
1921 * \param fixed_param_count Returns the number of required parameters. | |
1922 * \param opt_param_count Returns the number of optional parameters. | |
1923 * | |
1924 * \return A valid handle if no error occurs during the operation. | |
1925 */ | |
1926 DART_EXPORT Dart_Handle Dart_FunctionParameterCounts( | |
1927 Dart_Handle function, | |
1928 int64_t* fixed_param_count, | |
1929 int64_t* opt_param_count); | |
1930 | |
1931 /** | |
1932 * Returns a handle to the type of a function parameter. | |
1933 * | |
1934 * \return A valid handle to a type or an error handle if the argument | |
1935 * is not valid. | |
1936 */ | |
1937 DART_EXPORT Dart_Handle Dart_FunctionParameterType(Dart_Handle function, | |
1938 int parameter_index); | |
1939 | |
1940 /** | |
1941 * Returns a list of the names of all variables declared in a library | |
1942 * or class. | |
1943 * | |
1944 * \param target A library or class. | |
1945 * | |
1946 * \return If no error occurs, a list of strings is returned. | |
1947 * Otherwise an error handle is returned. | |
1948 */ | |
1949 DART_EXPORT Dart_Handle Dart_GetVariableNames(Dart_Handle target); | |
1950 | |
1951 /** | |
1952 * Looks up a variable declaration by name from a library or class. | |
1953 * | |
1954 * \param target The library or class containing the variable. | |
1955 * \param variable_name The name of the variable. | |
1956 * | |
1957 * \return If an error is encountered, returns an error handle. | |
1958 * Otherwise returns a variable handle if the variable is found or | |
1959 * Dart_Null() if the variable is not found. | |
1960 */ | |
1961 DART_EXPORT Dart_Handle Dart_LookupVariable(Dart_Handle target, | |
1962 Dart_Handle variable_name); | |
1963 | |
1964 /** | |
1965 * Is this a variable declaration handle? | |
1966 */ | |
1967 DART_EXPORT bool Dart_IsVariable(Dart_Handle handle); | |
1968 | |
1969 /** | |
1970 * Returns the name for the provided variable. | |
1971 */ | |
1972 DART_EXPORT Dart_Handle Dart_VariableName(Dart_Handle variable); | |
1973 | |
1974 /** | |
1975 * Determines whether a variable is declared static. | |
1976 * | |
1977 * For the purposes of the embedding API, a top-level variable is | |
1978 * implicitly declared static. | |
1979 * | |
1980 * \param variable A handle to a variable declaration. | |
1981 * \param is_static Returns whether the variable is declared static. | |
1982 * | |
1983 * \return A valid handle if no error occurs during the operation. | |
1984 */ | |
1985 DART_EXPORT Dart_Handle Dart_VariableIsStatic(Dart_Handle variable, | |
1986 bool* is_static); | |
1987 | |
1988 /** | |
1989 * Determines whether a variable is declared final. | |
1990 * | |
1991 * \param variable A handle to a variable declaration. | |
1992 * \param is_final Returns whether the variable is declared final. | |
1993 * | |
1994 * \return A valid handle if no error occurs during the operation. | |
1995 */ | |
1996 DART_EXPORT Dart_Handle Dart_VariableIsFinal(Dart_Handle variable, | |
1997 bool* is_final); | |
1998 | |
1999 /** | |
2000 * Returns the type of a variable. | |
2001 * | |
2002 * \return A valid handle to a type of or an error handle if the | |
2003 * argument is not valid. | |
2004 */ | |
2005 DART_EXPORT Dart_Handle Dart_VariableType(Dart_Handle function); | |
2006 | |
2007 /** | |
2008 * Returns a list of the names of all type variables declared in a class. | |
2009 * | |
2010 * The type variables list preserves the original declaration order. | |
2011 * | |
2012 * \param clazz A class. | |
2013 * | |
2014 * \return If no error occurs, a list of strings is returned. | |
2015 * Otherwise an error handle is returned. | |
2016 */ | |
2017 DART_EXPORT Dart_Handle Dart_GetTypeVariableNames(Dart_Handle clazz); | |
2018 | |
2019 /** | |
2020 * Looks up a type variable declaration by name from a class. | |
2021 * | |
2022 * \param clazz The class containing the type variable. | |
2023 * \param variable_name The name of the type variable. | |
2024 * | |
2025 * \return If an error is encountered, returns an error handle. | |
2026 * Otherwise returns a type variable handle if the type variable is | |
2027 * found or Dart_Null() if the type variable is not found. | |
2028 */ | |
2029 DART_EXPORT Dart_Handle Dart_LookupTypeVariable(Dart_Handle clazz, | |
2030 Dart_Handle type_variable_name); | |
2031 | |
2032 /** | |
2033 * Is this a type variable handle? | |
2034 */ | |
2035 DART_EXPORT bool Dart_IsTypeVariable(Dart_Handle handle); | |
2036 | |
2037 /** | |
2038 * Returns the name for the provided type variable. | |
2039 */ | |
2040 DART_EXPORT Dart_Handle Dart_TypeVariableName(Dart_Handle type_variable); | |
2041 | |
2042 /** | |
2043 * Returns the owner of a function. | |
2044 * | |
2045 * The owner of a type variable is its defining class. | |
2046 * | |
2047 * \return A valid handle to the owner of the type variable, or an error | |
2048 * handle if the argument is not a valid handle to a type variable. | |
2049 */ | |
2050 DART_EXPORT Dart_Handle Dart_TypeVariableOwner(Dart_Handle type_variable); | |
2051 | |
2052 /** | |
2053 * Returns the upper bound of a type variable. | |
2054 * | |
2055 * The upper bound of a type variable is ... | |
2056 * | |
2057 * \return A valid handle to a type, or an error handle if the | |
2058 * argument is not a valid handle. | |
2059 */ | |
2060 DART_EXPORT Dart_Handle Dart_TypeVariableUpperBound(Dart_Handle type_variable); | |
2061 /* TODO(turnidge): Finish documentation. */ | |
2062 | |
2063 /* --- Constructors, Methods, and Fields --- */ | |
2064 | 1732 |
2065 /** | 1733 /** |
2066 * Invokes a constructor, creating a new object. | 1734 * Invokes a constructor, creating a new object. |
2067 * | 1735 * |
2068 * This function allows hidden constructors (constructors with leading | 1736 * This function allows hidden constructors (constructors with leading |
2069 * underscores) to be called. | 1737 * underscores) to be called. |
2070 * | 1738 * |
2071 * \param clazz A class or an interface. | 1739 * \param clazz A class or an interface. |
2072 * \param constructor_name The name of the constructor to invoke. Use | 1740 * \param constructor_name The name of the constructor to invoke. Use |
2073 * Dart_Null() to invoke the unnamed constructor. This name should | 1741 * Dart_Null() to invoke the unnamed constructor. This name should |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2106 * successfully, then the return value is returned. If an error | 1774 * successfully, then the return value is returned. If an error |
2107 * occurs during execution, then an error handle is returned. | 1775 * occurs during execution, then an error handle is returned. |
2108 */ | 1776 */ |
2109 DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, | 1777 DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
2110 Dart_Handle name, | 1778 Dart_Handle name, |
2111 int number_of_arguments, | 1779 int number_of_arguments, |
2112 Dart_Handle* arguments); | 1780 Dart_Handle* arguments); |
2113 /* TODO(turnidge): Document how to invoke operators. */ | 1781 /* TODO(turnidge): Document how to invoke operators. */ |
2114 | 1782 |
2115 /** | 1783 /** |
| 1784 * Invokes a Closure with the given arguments. |
| 1785 * |
| 1786 * May generate an unhandled exception error. |
| 1787 * |
| 1788 * \return If no error occurs during execution, then the result of |
| 1789 * invoking the closure is returned. If an error occurs during |
| 1790 * execution, then an error handle is returned. |
| 1791 */ |
| 1792 DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure, |
| 1793 int number_of_arguments, |
| 1794 Dart_Handle* arguments); |
| 1795 |
| 1796 /** |
2116 * Gets the value of a field. | 1797 * Gets the value of a field. |
2117 * | 1798 * |
2118 * The 'container' parameter may be an object, class, or library. If | 1799 * The 'container' parameter may be an object, class, or library. If |
2119 * 'container' is an object, then this function will access an | 1800 * 'container' is an object, then this function will access an |
2120 * instance field. If 'container' is a class, then this function will | 1801 * instance field. If 'container' is a class, then this function will |
2121 * access a static field. If 'container' is a library, then this | 1802 * access a static field. If 'container' is a library, then this |
2122 * function will access a top-level variable. | 1803 * function will access a top-level variable. |
2123 * | 1804 * |
2124 * This function ignores field visibility (leading underscores in names). | 1805 * This function ignores field visibility (leading underscores in names). |
2125 * | 1806 * |
(...skipping 24 matching lines...) Expand all Loading... |
2150 * \param container An object, class, or library. | 1831 * \param container An object, class, or library. |
2151 * \param name A field name. | 1832 * \param name A field name. |
2152 * \param value The new field value. | 1833 * \param value The new field value. |
2153 * | 1834 * |
2154 * \return A valid handle if no error occurs. | 1835 * \return A valid handle if no error occurs. |
2155 */ | 1836 */ |
2156 DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, | 1837 DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
2157 Dart_Handle name, | 1838 Dart_Handle name, |
2158 Dart_Handle value); | 1839 Dart_Handle value); |
2159 | 1840 |
2160 /** | 1841 |
2161 * Creates a native wrapper class. | 1842 /* |
2162 * | 1843 * ========== |
2163 * TODO(turnidge): Document. | 1844 * Exceptions |
| 1845 * ========== |
2164 */ | 1846 */ |
2165 DART_EXPORT Dart_Handle Dart_CreateNativeWrapperClass(Dart_Handle library, | |
2166 Dart_Handle class_name, | |
2167 int field_count); | |
2168 | 1847 |
2169 /** | 1848 /* |
2170 * Gets the number of native instance fields in an object. | |
2171 */ | |
2172 DART_EXPORT Dart_Handle Dart_GetNativeInstanceFieldCount(Dart_Handle obj, | |
2173 int* count); | |
2174 | |
2175 /** | |
2176 * Gets the value of a native field. | |
2177 * | |
2178 * TODO(turnidge): Document. | |
2179 */ | |
2180 DART_EXPORT Dart_Handle Dart_GetNativeInstanceField(Dart_Handle obj, | |
2181 int index, | |
2182 intptr_t* value); | |
2183 /** | |
2184 * Sets the value of a native field. | |
2185 * | |
2186 * TODO(turnidge): Document. | |
2187 */ | |
2188 DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj, | |
2189 int index, | |
2190 intptr_t value); | |
2191 | |
2192 /* --- Exceptions ---- | |
2193 * TODO(turnidge): Remove these functions from the api and replace all | 1849 * TODO(turnidge): Remove these functions from the api and replace all |
2194 * uses with Dart_NewUnhandledExceptionError. */ | 1850 * uses with Dart_NewUnhandledExceptionError. */ |
2195 | 1851 |
2196 /** | 1852 /** |
2197 * Throws an exception. | 1853 * Throws an exception. |
2198 * | 1854 * |
2199 * This function causes a Dart language exception to be thrown. This | 1855 * This function causes a Dart language exception to be thrown. This |
2200 * will proceeed in the standard way, walking up Dart frames until an | 1856 * will proceeed in the standard way, walking up Dart frames until an |
2201 * appropriate 'catch' block is found, executing 'finally' blocks, | 1857 * appropriate 'catch' block is found, executing 'finally' blocks, |
2202 * etc. | 1858 * etc. |
(...skipping 14 matching lines...) Expand all Loading... |
2217 * successful, this function does not return. Note that this means | 1873 * successful, this function does not return. Note that this means |
2218 * that the destructors of any stack-allocated C++ objects will not be | 1874 * that the destructors of any stack-allocated C++ objects will not be |
2219 * called. If there are no Dart frames on the stack, an error occurs. | 1875 * called. If there are no Dart frames on the stack, an error occurs. |
2220 * | 1876 * |
2221 * \return An error handle if the exception was not thrown. | 1877 * \return An error handle if the exception was not thrown. |
2222 * Otherwise the function does not return. | 1878 * Otherwise the function does not return. |
2223 */ | 1879 */ |
2224 DART_EXPORT Dart_Handle Dart_RethrowException(Dart_Handle exception, | 1880 DART_EXPORT Dart_Handle Dart_RethrowException(Dart_Handle exception, |
2225 Dart_Handle stacktrace); | 1881 Dart_Handle stacktrace); |
2226 | 1882 |
2227 /* --- Native functions --- */ | 1883 |
| 1884 /* |
| 1885 * =========================== |
| 1886 * Native fields and functions |
| 1887 * =========================== |
| 1888 */ |
| 1889 |
| 1890 /** |
| 1891 * Creates a native wrapper class. |
| 1892 * |
| 1893 * TODO(turnidge): Document. |
| 1894 */ |
| 1895 DART_EXPORT Dart_Handle Dart_CreateNativeWrapperClass(Dart_Handle library, |
| 1896 Dart_Handle class_name, |
| 1897 int field_count); |
| 1898 |
| 1899 /** |
| 1900 * Gets the number of native instance fields in an object. |
| 1901 */ |
| 1902 DART_EXPORT Dart_Handle Dart_GetNativeInstanceFieldCount(Dart_Handle obj, |
| 1903 int* count); |
| 1904 |
| 1905 /** |
| 1906 * Gets the value of a native field. |
| 1907 * |
| 1908 * TODO(turnidge): Document. |
| 1909 */ |
| 1910 DART_EXPORT Dart_Handle Dart_GetNativeInstanceField(Dart_Handle obj, |
| 1911 int index, |
| 1912 intptr_t* value); |
| 1913 |
| 1914 /** |
| 1915 * Sets the value of a native field. |
| 1916 * |
| 1917 * TODO(turnidge): Document. |
| 1918 */ |
| 1919 DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj, |
| 1920 int index, |
| 1921 intptr_t value); |
2228 | 1922 |
2229 /** | 1923 /** |
2230 * The arguments to a native function. | 1924 * The arguments to a native function. |
2231 * | 1925 * |
2232 * This object is passed to a native function to represent its | 1926 * This object is passed to a native function to represent its |
2233 * arguments and return value. It allows access to the arguments to a | 1927 * arguments and return value. It allows access to the arguments to a |
2234 * native function by index. It also allows the return value of a | 1928 * native function by index. It also allows the return value of a |
2235 * native function to be set. | 1929 * native function to be set. |
2236 */ | 1930 */ |
2237 typedef struct _Dart_NativeArguments* Dart_NativeArguments; | 1931 typedef struct _Dart_NativeArguments* Dart_NativeArguments; |
(...skipping 29 matching lines...) Expand all Loading... |
2267 * name/arity to a Dart_NativeFunction. If no function is found, the | 1961 * name/arity to a Dart_NativeFunction. If no function is found, the |
2268 * callback should return NULL. | 1962 * callback should return NULL. |
2269 * | 1963 * |
2270 * See Dart_SetNativeResolver. | 1964 * See Dart_SetNativeResolver. |
2271 */ | 1965 */ |
2272 typedef Dart_NativeFunction (*Dart_NativeEntryResolver)(Dart_Handle name, | 1966 typedef Dart_NativeFunction (*Dart_NativeEntryResolver)(Dart_Handle name, |
2273 int num_of_arguments); | 1967 int num_of_arguments); |
2274 /* TODO(turnidge): Consider renaming to NativeFunctionResolver or | 1968 /* TODO(turnidge): Consider renaming to NativeFunctionResolver or |
2275 * NativeResolver. */ | 1969 * NativeResolver. */ |
2276 | 1970 |
2277 | |
2278 /* --- Metadata support --- */ | |
2279 | |
2280 /** | 1971 /** |
2281 * Get metadata associated with an object. | 1972 * Sets the callback used to resolve native functions for a library. |
2282 * | 1973 * |
2283 * \param obj Object for which the metadata is retrieved. | 1974 * \param library A library. |
| 1975 * \param resolver A native entry resolver. |
2284 * | 1976 * |
2285 * \return If no error occurs, returns an array of metadata values. | 1977 * \return A valid handle if the native resolver was set successfully. |
2286 * Returns an empty array if there is no metadata for the object. | |
2287 * Returns an error if the evaluation of the metadata expressions fails. | |
2288 * | |
2289 */ | 1978 */ |
2290 DART_EXPORT Dart_Handle Dart_GetMetadata(Dart_Handle obj); | 1979 DART_EXPORT Dart_Handle Dart_SetNativeResolver( |
| 1980 Dart_Handle library, |
| 1981 Dart_NativeEntryResolver resolver); |
| 1982 /* TODO(turnidge): Rename to Dart_LibrarySetNativeResolver? */ |
2291 | 1983 |
2292 | 1984 |
2293 /* --- Scripts and Libraries --- | 1985 /* |
2294 * TODO(turnidge): Finish documenting this section. */ | 1986 * ===================== |
| 1987 * Scripts and Libraries |
| 1988 * ===================== |
| 1989 */ |
| 1990 /* TODO(turnidge): Finish documenting this section. */ |
2295 | 1991 |
2296 typedef enum { | 1992 typedef enum { |
2297 Dart_kLibraryTag = 0, | 1993 Dart_kLibraryTag = 0, |
2298 Dart_kImportTag, | 1994 Dart_kImportTag, |
2299 Dart_kSourceTag, | 1995 Dart_kSourceTag, |
2300 Dart_kCanonicalizeUrl | 1996 Dart_kCanonicalizeUrl |
2301 } Dart_LibraryTag; | 1997 } Dart_LibraryTag; |
2302 | 1998 |
2303 /* TODO(turnidge): Document. */ | 1999 /* TODO(turnidge): Document. */ |
2304 typedef Dart_Handle (*Dart_LibraryTagHandler)(Dart_LibraryTag tag, | 2000 typedef Dart_Handle (*Dart_LibraryTagHandler)(Dart_LibraryTag tag, |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2355 * | 2051 * |
2356 * If the root script has not yet been set for the current isolate, | 2052 * If the root script has not yet been set for the current isolate, |
2357 * this function returns Dart_Null(). This function never returns an | 2053 * this function returns Dart_Null(). This function never returns an |
2358 * error handle. | 2054 * error handle. |
2359 * | 2055 * |
2360 * \return Returns the root Library for the current isolate or Dart_Null(). | 2056 * \return Returns the root Library for the current isolate or Dart_Null(). |
2361 */ | 2057 */ |
2362 DART_EXPORT Dart_Handle Dart_RootLibrary(); | 2058 DART_EXPORT Dart_Handle Dart_RootLibrary(); |
2363 | 2059 |
2364 /** | 2060 /** |
2365 * Forces all loaded classes and functions to be compiled eagerly in | |
2366 * the current isolate.. | |
2367 * | |
2368 * TODO(turnidge): Document. | |
2369 */ | |
2370 DART_EXPORT Dart_Handle Dart_CompileAll(); | |
2371 | |
2372 /** | |
2373 * Check that all function fingerprints are OK. | |
2374 * | |
2375 */ | |
2376 DART_EXPORT Dart_Handle Dart_CheckFunctionFingerprints(); | |
2377 | |
2378 /** | |
2379 * Is this object a Library? | |
2380 */ | |
2381 DART_EXPORT bool Dart_IsLibrary(Dart_Handle object); | |
2382 | |
2383 /** | |
2384 * Lookup a class or interface by name from a Library. | 2061 * Lookup a class or interface by name from a Library. |
2385 * | 2062 * |
2386 * \param library The library containing the class or interface. | 2063 * \param library The library containing the class or interface. |
2387 * \param class_name The name of the class or interface. | 2064 * \param class_name The name of the class or interface. |
2388 * | 2065 * |
2389 * \return If no error occurs, the class or interface is | 2066 * \return If no error occurs, the class or interface is |
2390 * returned. Otherwise an error handle is returned. | 2067 * returned. Otherwise an error handle is returned. |
2391 */ | 2068 */ |
2392 DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library, | 2069 DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library, |
2393 Dart_Handle class_name); | 2070 Dart_Handle class_name); |
2394 /* TODO(turnidge): Consider returning Dart_Null() when the class is | 2071 /* TODO(turnidge): Consider returning Dart_Null() when the class is |
2395 * not found to distinguish that from a true error case. */ | 2072 * not found to distinguish that from a true error case. */ |
2396 | 2073 |
2397 /** | 2074 /** |
2398 * Returns the name of a library as declared in the #library directive. | |
2399 */ | |
2400 DART_EXPORT Dart_Handle Dart_LibraryName(Dart_Handle library); | |
2401 | |
2402 /** | |
2403 * Returns the url from which a library was loaded. | 2075 * Returns the url from which a library was loaded. |
2404 */ | 2076 */ |
2405 DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library); | 2077 DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library); |
2406 | 2078 |
2407 /** | |
2408 * Returns a list of the names of all classes and interfaces declared | |
2409 * in a library. | |
2410 * | |
2411 * \return If no error occurs, a list of strings is returned. | |
2412 * Otherwise an error handle is returned. | |
2413 */ | |
2414 DART_EXPORT Dart_Handle Dart_LibraryGetClassNames(Dart_Handle library); | |
2415 | |
2416 DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url); | 2079 DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url); |
2417 /* TODO(turnidge): Consider returning Dart_Null() when the library is | 2080 /* TODO(turnidge): Consider returning Dart_Null() when the library is |
2418 * not found to distinguish that from a true error case. */ | 2081 * not found to distinguish that from a true error case. */ |
2419 | 2082 |
2420 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, | 2083 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, |
2421 Dart_Handle source); | 2084 Dart_Handle source); |
2422 | 2085 |
2423 /** | 2086 /** |
2424 * Imports a library into another library, optionally with a prefix. | 2087 * Imports a library into another library, optionally with a prefix. |
2425 * If no prefix is required, an empty string or Dart_Null() can be | 2088 * If no prefix is required, an empty string or Dart_Null() can be |
(...skipping 28 matching lines...) Expand all Loading... |
2454 * Loads a patch source string into a library. | 2117 * Loads a patch source string into a library. |
2455 * | 2118 * |
2456 * \param library A library | 2119 * \param library A library |
2457 * \param url A url identifying the origin of the patch source | 2120 * \param url A url identifying the origin of the patch source |
2458 * \param source A string of Dart patch source | 2121 * \param source A string of Dart patch source |
2459 */ | 2122 */ |
2460 DART_EXPORT Dart_Handle Dart_LoadPatch(Dart_Handle library, | 2123 DART_EXPORT Dart_Handle Dart_LoadPatch(Dart_Handle library, |
2461 Dart_Handle url, | 2124 Dart_Handle url, |
2462 Dart_Handle patch_source); | 2125 Dart_Handle patch_source); |
2463 | 2126 |
2464 /** | 2127 |
2465 * Sets the callback used to resolve native functions for a library. | 2128 /* |
2466 * | 2129 * ===== |
2467 * \param library A library. | 2130 * Peers |
2468 * \param resolver A native entry resolver. | 2131 * ===== |
2469 * | |
2470 * \return A valid handle if the native resolver was set successfully. | |
2471 */ | 2132 */ |
2472 DART_EXPORT Dart_Handle Dart_SetNativeResolver( | |
2473 Dart_Handle library, | |
2474 Dart_NativeEntryResolver resolver); | |
2475 /* TODO(turnidge): Rename to Dart_LibrarySetNativeResolver? */ | |
2476 | |
2477 /* --- Profiling support ---- */ | |
2478 | |
2479 /* External pprof support for gathering and dumping symbolic | |
2480 * information that can be used for better profile reports for | |
2481 * dynamically generated code. */ | |
2482 DART_EXPORT void Dart_InitPprofSupport(); | |
2483 DART_EXPORT void Dart_GetPprofSymbolInfo(void** buffer, int* buffer_size); | |
2484 | |
2485 /* Support for generating symbol maps for use by the Linux perf tool. */ | |
2486 DART_EXPORT void Dart_InitPerfEventsSupport(void* perf_events_file); | |
2487 | |
2488 /* --- Heap Profiler --- */ | |
2489 | |
2490 /** | |
2491 * Generates a heap profile. | |
2492 * | |
2493 * \param callback A function pointer that will be repeatedly invoked | |
2494 * with heap profile data. | |
2495 * \param stream A pointer that will be passed to the callback. This | |
2496 * is a convenient way to provide an open stream to the callback. | |
2497 * | |
2498 * \return Success if the heap profile is successful. | |
2499 */ | |
2500 DART_EXPORT Dart_Handle Dart_HeapProfile(Dart_FileWriteCallback callback, | |
2501 void* stream); | |
2502 | |
2503 /* --- Peers --- */ | |
2504 | 2133 |
2505 /** | 2134 /** |
2506 * The peer field is a lazily allocated field intendend for storage of | 2135 * The peer field is a lazily allocated field intendend for storage of |
2507 * an uncommonly used values. Most instances types can have a peer | 2136 * an uncommonly used values. Most instances types can have a peer |
2508 * field allocated. The exceptions are subtypes of Null, num, and | 2137 * field allocated. The exceptions are subtypes of Null, num, and |
2509 * bool. | 2138 * bool. |
2510 */ | 2139 */ |
2511 | 2140 |
2512 /** | 2141 /** |
2513 * Returns the value of peer field of 'object' in 'peer'. | 2142 * Returns the value of peer field of 'object' in 'peer'. |
(...skipping 12 matching lines...) Expand all Loading... |
2526 * 'peer'. | 2155 * 'peer'. |
2527 * | 2156 * |
2528 * \param object An object. | 2157 * \param object An object. |
2529 * \param peer A value to store in the peer field. | 2158 * \param peer A value to store in the peer field. |
2530 * | 2159 * |
2531 * \return Returns an error if 'object' is a subtype of Null, num, or | 2160 * \return Returns an error if 'object' is a subtype of Null, num, or |
2532 * bool. | 2161 * bool. |
2533 */ | 2162 */ |
2534 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); | 2163 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); |
2535 | 2164 |
2536 /* --- Message sending/receiving from native code ---- */ | |
2537 | |
2538 /** | |
2539 * A Dart_CObject is used for representing Dart objects as native C | |
2540 * data outside the Dart heap. These objects are totally detached from | |
2541 * the Dart heap. Only a subset of the Dart objects have a | |
2542 * representation as a Dart_CObject. | |
2543 * | |
2544 * The string encoding in the 'value.as_string' is UTF-8. | |
2545 * | |
2546 * All the different types from dart:typed_data are exposed as type | |
2547 * kTypedData. The specific type from dart:typed_data is in the type | |
2548 * field of the as_typed_data structure. The length in the | |
2549 * as_typed_data structure is always in bytes. | |
2550 */ | |
2551 typedef enum { | |
2552 Dart_CObject_kNull = 0, | |
2553 Dart_CObject_kBool, | |
2554 Dart_CObject_kInt32, | |
2555 Dart_CObject_kInt64, | |
2556 Dart_CObject_kBigint, | |
2557 Dart_CObject_kDouble, | |
2558 Dart_CObject_kString, | |
2559 Dart_CObject_kArray, | |
2560 Dart_CObject_kTypedData, | |
2561 Dart_CObject_kExternalTypedData, | |
2562 Dart_CObject_kUnsupported, | |
2563 Dart_CObject_kNumberOfTypes | |
2564 } Dart_CObject_Type; | |
2565 | |
2566 typedef struct _Dart_CObject { | |
2567 Dart_CObject_Type type; | |
2568 union { | |
2569 bool as_bool; | |
2570 int32_t as_int32; | |
2571 int64_t as_int64; | |
2572 double as_double; | |
2573 char* as_string; | |
2574 char* as_bigint; | |
2575 struct { | |
2576 int length; | |
2577 struct _Dart_CObject** values; | |
2578 } as_array; | |
2579 struct { | |
2580 Dart_TypedData_Type type; | |
2581 int length; | |
2582 uint8_t* values; | |
2583 } as_typed_data; | |
2584 struct { | |
2585 Dart_TypedData_Type type; | |
2586 int length; | |
2587 uint8_t* data; | |
2588 void* peer; | |
2589 Dart_WeakPersistentHandleFinalizer callback; | |
2590 } as_external_typed_data; | |
2591 } value; | |
2592 } Dart_CObject; | |
2593 | |
2594 /** | |
2595 * Posts a message on some port. The message will contain the | |
2596 * Dart_CObject object graph rooted in 'message'. | |
2597 * | |
2598 * While the message is being sent the state of the graph of | |
2599 * Dart_CObject structures rooted in 'message' should not be accessed, | |
2600 * as the message generation will make temporary modifications to the | |
2601 * data. When the message has been sent the graph will be fully | |
2602 * restored. | |
2603 * | |
2604 * \param port_id The destination port. | |
2605 * \param message The message to send. | |
2606 * | |
2607 * \return True if the message was posted. | |
2608 */ | |
2609 DART_EXPORT bool Dart_PostCObject(Dart_Port port_id, Dart_CObject* message); | |
2610 | |
2611 /** | |
2612 * A native message handler. | |
2613 * | |
2614 * This handler is associated with a native port by calling | |
2615 * Dart_NewNativePort. | |
2616 * | |
2617 * The message received is decoded into the message structure. The | |
2618 * lifetime of the message data is controlled by the caller. All the | |
2619 * data references from the message are allocated by the caller and | |
2620 * will be reclaimed when returning to it. | |
2621 */ | |
2622 | |
2623 typedef void (*Dart_NativeMessageHandler)(Dart_Port dest_port_id, | |
2624 Dart_Port reply_port_id, | |
2625 Dart_CObject* message); | |
2626 | |
2627 /** | |
2628 * Creates a new native port. When messages are received on this | |
2629 * native port, then they will be dispatched to the provided native | |
2630 * message handler. | |
2631 * | |
2632 * \param name The name of this port in debugging messages. | |
2633 * \param handler The C handler to run when messages arrive on the port. | |
2634 * \param handle_concurrently Is it okay to process requests on this | |
2635 * native port concurrently? | |
2636 * | |
2637 * \return If successful, returns the port id for the native port. In | |
2638 * case of error, returns ILLEGAL_PORT. | |
2639 */ | |
2640 DART_EXPORT Dart_Port Dart_NewNativePort(const char* name, | |
2641 Dart_NativeMessageHandler handler, | |
2642 bool handle_concurrently); | |
2643 /* TODO(turnidge): Currently handle_concurrently is ignored. */ | |
2644 | |
2645 /** | |
2646 * Closes the native port with the given id. | |
2647 * | |
2648 * The port must have been allocated by a call to Dart_NewNativePort. | |
2649 * | |
2650 * \param native_port_id The id of the native port to close. | |
2651 * | |
2652 * \return Returns true if the port was closed successfully. | |
2653 */ | |
2654 DART_EXPORT bool Dart_CloseNativePort(Dart_Port native_port_id); | |
2655 | |
2656 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */ | 2165 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */ |
OLD | NEW |