Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: runtime/include/dart_api.h

Issue 11318018: - Represent strings internally in UTF-16 format, this makes it (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 1305 matching lines...) Expand 10 before | Expand all | Expand 10 after
1316 */ 1316 */
1317 DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, double* value); 1317 DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, double* value);
1318 1318
1319 // --- Strings --- 1319 // --- Strings ---
1320 1320
1321 /** 1321 /**
1322 * Is this object a String? 1322 * Is this object a String?
1323 */ 1323 */
1324 DART_EXPORT bool Dart_IsString(Dart_Handle object); 1324 DART_EXPORT bool Dart_IsString(Dart_Handle object);
1325 1325
1326 /**
1327 * Is this object a String whose codepoints all fit into 8 bits?
1328 */
1329 DART_EXPORT bool Dart_IsString8(Dart_Handle object);
1330 1326
1331 /** 1327 /**
1332 * Is this object a String whose codepoints all fit into 16 bits? 1328 * Is this object an ASCII String?
1333 */ 1329 */
1334 DART_EXPORT bool Dart_IsString16(Dart_Handle object); 1330 DART_EXPORT bool Dart_IsAsciiString(Dart_Handle object);
1331
1335 1332
1336 /** 1333 /**
1337 * Gets the length of a String. 1334 * Gets the length of a String.
1338 * 1335 *
1339 * \param str A String. 1336 * \param str A String.
1340 * \param length Returns the length of the String. 1337 * \param length Returns the length of the String.
1341 * 1338 *
1342 * \return A valid handle if no error occurs during the operation. 1339 * \return A valid handle if no error occurs during the operation.
1343 */ 1340 */
1344 DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* length); 1341 DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* length);
1345 1342
1346 /** 1343 /**
1347 * Returns a String built from the provided C string 1344 * Returns a String built from the provided C string
1345 * (There is an implicit assumption that the C string passed in contains
1346 * UTF-8 encoded characters and '\0' is considered as a termination
1347 * character).
1348 * 1348 *
1349 * \param value A C String 1349 * \param value A C String
1350 * 1350 *
1351 * \return The String object if no error occurs. Otherwise returns 1351 * \return The String object if no error occurs. Otherwise returns
1352 * an error handle. 1352 * an error handle.
1353 */ 1353 */
1354 DART_EXPORT Dart_Handle Dart_NewString(const char* str); 1354 DART_EXPORT Dart_Handle Dart_NewStringFromCString(const char* str);
1355 // TODO(turnidge): Document what happens when we run out of memory 1355 // TODO(turnidge): Document what happens when we run out of memory
1356 // during this call. 1356 // during this call.
1357 1357
1358 /** 1358 /**
1359 * Returns a String built from an array of 8-bit codepoints. 1359 * Returns a String built from an array of UTF-8 encoded characters.
1360 * 1360 *
1361 * \param value An array of 8-bit codepoints. 1361 * \param utf8_array An array of UTF-8 encoded characters.
1362 * \param length The length of the codepoints array. 1362 * \param length The length of the codepoints array.
1363 * 1363 *
1364 * \return The String object if no error occurs. Otherwise returns 1364 * \return The String object if no error occurs. Otherwise returns
1365 * an error handle. 1365 * an error handle.
1366 */ 1366 */
1367 DART_EXPORT Dart_Handle Dart_NewString8(const uint8_t* codepoints, 1367 DART_EXPORT Dart_Handle Dart_NewStringFromUTF8(const uint8_t* utf8_array,
1368 intptr_t length); 1368 intptr_t length);
1369 1369
1370 /** 1370 /**
1371 * Returns a String built from an array of 16-bit codepoints. 1371 * Returns a String built from an array of UTF-16 encoded characters.
1372 * 1372 *
1373 * \param value An array of 16-bit codepoints. 1373 * \param utf16_array An array of UTF-16 encoded characters.
1374 * \param length The length of the codepoints array. 1374 * \param length The length of the codepoints array.
1375 * 1375 *
1376 * \return The String object if no error occurs. Otherwise returns 1376 * \return The String object if no error occurs. Otherwise returns
1377 * an error handle. 1377 * an error handle.
1378 */ 1378 */
1379 DART_EXPORT Dart_Handle Dart_NewString16(const uint16_t* codepoints, 1379 DART_EXPORT Dart_Handle Dart_NewStringFromUTF16(const uint16_t* utf16_array,
1380 intptr_t length); 1380 intptr_t length);
1381 1381
1382 /** 1382 /**
1383 * Returns a String built from an array of 32-bit codepoints. 1383 * Returns a String built from an array of UTF-32 encoded characters.
1384 * 1384 *
1385 * \param value An array of 32-bit codepoints. 1385 * \param utf32_array An array of UTF-32 encoded characters.
1386 * \param length The length of the codepoints array. 1386 * \param length The length of the codepoints array.
1387 * 1387 *
1388 * \return The String object if no error occurs. Otherwise returns 1388 * \return The String object if no error occurs. Otherwise returns
1389 * an error handle. 1389 * an error handle.
1390 */ 1390 */
1391 DART_EXPORT Dart_Handle Dart_NewString32(const uint32_t* codepoints, 1391 DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const uint32_t* utf32_array,
1392 intptr_t length); 1392 intptr_t length);
1393 1393
1394 /** 1394 /**
1395 * Is this object an external String? 1395 * Is this object an external String?
1396 * 1396 *
1397 * An external String is a String which references a fixed array of 1397 * An external String is a String which references a fixed array of
1398 * codepoints which is external to the Dart heap. 1398 * codepoints which is external to the Dart heap.
1399 */ 1399 */
1400 DART_EXPORT bool Dart_IsExternalString(Dart_Handle object); 1400 DART_EXPORT bool Dart_IsExternalString(Dart_Handle object);
1401 1401
1402 /** 1402 /**
1403 * Retrieves the peer pointer associated with an external String. 1403 * Retrieves the peer pointer associated with an external String.
1404 */ 1404 */
1405 DART_EXPORT Dart_Handle Dart_ExternalStringGetPeer(Dart_Handle object, 1405 DART_EXPORT Dart_Handle Dart_ExternalStringGetPeer(Dart_Handle object,
1406 void** peer); 1406 void** peer);
1407 1407
1408
1409 /** 1408 /**
1410 * Returns a String which references an external array of 8-bit codepoints. 1409 * Returns a String which references an external array of UTF-8 encoded
1410 * characters.
1411 * 1411 *
1412 * \param value An array of 8-bit codepoints. This array must not move. 1412 * \param utf8_array An array of UTF-8 encoded characters. This must not move.
1413 * \param length The length of the codepoints array. 1413 * \param length The length of the characters array.
1414 * \param peer An external pointer to associate with this string. 1414 * \param peer An external pointer to associate with this string.
1415 * \param callback A callback to be called when this string is finalized. 1415 * \param cback A callback to be called when this string is finalized.
1416 * 1416 *
1417 * \return The String object if no error occurs. Otherwise returns 1417 * \return The String object if no error occurs. Otherwise returns
1418 * an error handle. 1418 * an error handle.
1419 */ 1419 */
1420 DART_EXPORT Dart_Handle Dart_NewExternalString8(const uint8_t* codepoints, 1420 DART_EXPORT Dart_Handle Dart_NewExternalUTF8String(const uint8_t* utf8_array,
1421 intptr_t length, 1421 intptr_t length,
1422 void* peer, 1422 void* peer,
1423 Dart_PeerFinalizer callback); 1423 Dart_PeerFinalizer cback);
1424 1424
1425 /** 1425 /**
1426 * Returns a String which references an external array of 16-bit codepoints. 1426 * Returns a String which references an external array of UTF-16 encoded
1427 * characters.
1427 * 1428 *
1428 * \param value An array of 16-bit codepoints. This array must not move. 1429 * \param utf16_array An array of UTF-16 encoded characters. This must not move.
1429 * \param length The length of the codepoints array. 1430 * \param length The length of the characters array.
1430 * \param peer An external pointer to associate with this string. 1431 * \param peer An external pointer to associate with this string.
1431 * \param callback A callback to be called when this string is finalized. 1432 * \param cback A callback to be called when this string is finalized.
1432 * 1433 *
1433 * \return The String object if no error occurs. Otherwise returns 1434 * \return The String object if no error occurs. Otherwise returns
1434 * an error handle. 1435 * an error handle.
1435 */ 1436 */
1436 DART_EXPORT Dart_Handle Dart_NewExternalString16(const uint16_t* codepoints, 1437 DART_EXPORT Dart_Handle Dart_NewExternalUTF16String(const uint16_t* utf16_array,
1437 intptr_t length, 1438 intptr_t length,
1438 void* peer, 1439 void* peer,
1439 Dart_PeerFinalizer callback); 1440 Dart_PeerFinalizer cback);
1440 1441
1441 /** 1442 /**
1442 * Returns a String which references an external array of 32-bit codepoints. 1443 * Gets the C string representation of a String.
1444 * (It is a sequence of UTF-8 encoded values with a '\0' termination.)
1443 * 1445 *
1444 * \param value An array of 32-bit codepoints. This array must not move. 1446 * \param str A string.
1445 * \param length The length of the codepoints array. 1447 * \param cstr Returns the String represented as a C string.
1446 * \param peer An external pointer to associate with this string. 1448 * This C string is scope allocated and is only valid until
1447 * \param callback A callback to be called when this string is finalized. 1449 * the next call to Dart_ExitScope.
1448 * 1450 *
1449 * \return The String object if no error occurs. Otherwise returns 1451 * \return A valid handle if no error occurs during the operation.
1450 * an error handle.
1451 */ 1452 */
1452 DART_EXPORT Dart_Handle Dart_NewExternalString32(const uint32_t* codepoints, 1453 DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle str,
1453 intptr_t length, 1454 const char** cstr);
1454 void* peer,
1455 Dart_PeerFinalizer callback);
1456 1455
1457 /** 1456 /**
1458 * Gets the codepoints from a String. 1457 * Gets a UTF-8 encoded representation of a String.
1459 *
1460 * This function is only valid on strings for which Dart_IsString8 is
1461 * true. Otherwise an error occurs.
1462 * 1458 *
1463 * \param str A string. 1459 * \param str A string.
1464 * \param codepoints An array allocated by the caller, used to return 1460 * \param utf8_array An array allocated by the caller, used to return
1465 * the array of codepoints. 1461 * the array of UTF-8 encoded characters.
1466 * \param length Used to pass in the length of the provided array. 1462 * \param length Used to pass in the length of the provided array.
1467 * Used to return the length of the array which was actually used. 1463 * Used to return the length of the array which was actually used.
1468 * 1464 *
1469 * \return A valid handle if no error occurs during the operation. 1465 * \return A valid handle if no error occurs during the operation.
1470 */ 1466 */
1471 DART_EXPORT Dart_Handle Dart_StringGet8(Dart_Handle str, 1467 DART_EXPORT Dart_Handle Dart_StringToUTF8(Dart_Handle str,
1472 uint8_t* codepoints, 1468 uint8_t* utf8_array,
1473 intptr_t* length); 1469 intptr_t* length);
1474 // TODO(turnidge): Rename to GetString8 to be consistent with the Is*
1475 // and New* functions above?
1476 1470
1477 /** 1471 /**
1478 * Gets the codepoints from a String. 1472 * Gets the UTF-16 encoded representation of a string.
1479 *
1480 * This function is only valid on strings for which Dart_IsString8 or
1481 * Dart_IsString16 is true. Otherwise an error occurs.
1482 * 1473 *
1483 * \param str A string. 1474 * \param str A string.
1484 * \param codepoints An array allocated by the caller, used to return 1475 * \param utf16_array An array allocated by the caller, used to return
1485 * the array of codepoints. 1476 * the array of UTF-16 encoded characters.
1486 * \param length Used to pass in the length of the provided array. 1477 * \param length Used to pass in the length of the provided array.
1487 * Used to return the length of the array which was actually used. 1478 * Used to return the length of the array which was actually used.
1488 * 1479 *
1489 * \return A valid handle if no error occurs during the operation. 1480 * \return A valid handle if no error occurs during the operation.
1490 */ 1481 */
1491 DART_EXPORT Dart_Handle Dart_StringGet16(Dart_Handle str, 1482 DART_EXPORT Dart_Handle Dart_StringToUTF16(Dart_Handle str,
1492 uint16_t* codepoints, 1483 uint16_t* utf16_array,
1493 intptr_t* length); 1484 intptr_t* length);
1494 1485
1495 /**
1496 * Gets the codepoints from a String
1497 *
1498 * \param str A string.
1499 * \param codepoints An array allocated by the caller, used to return
1500 * the array of codepoints.
1501 * \param length Used to pass in the length of the provided array.
1502 * Used to return the length of the array which was actually used.
1503 *
1504 * \return A valid handle if no error occurs during the operation.
1505 */
1506 DART_EXPORT Dart_Handle Dart_StringGet32(Dart_Handle str,
1507 uint32_t* codepoints,
1508 intptr_t* length);
1509
1510 /**
1511 * Gets the utf8 encoded representation of a String.
1512 *
1513 * \param str A string.
1514 * \param utf8 Returns the String represented as a utf8 encoded C
1515 * string. This C string is scope allocated and is only valid until
1516 * the next call to Dart_ExitScope.
1517 *
1518 * \return A valid handle if no error occurs during the operation.
1519 */
1520 DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle str,
1521 const char** utf8);
1522
1523 /**
1524 * Gets a UTF-8 encoded representation of a String.
1525 *
1526 * \param str A string.
1527 * \param bytes Returns the String represented as an array of UTF-8
1528 * code units. This array is scope allocated and is only valid until
1529 * the next call to Dart_ExitScope.
1530 * \param length Returns the length of the code units array, in bytes.
1531 *
1532 * \return A valid handle if no error occurs during the operation.
1533 */
1534 DART_EXPORT Dart_Handle Dart_StringToBytes(Dart_Handle str,
1535 const uint8_t** bytes,
1536 intptr_t* length);
1537 1486
1538 // --- Lists --- 1487 // --- Lists ---
1539 1488
1540 /** 1489 /**
1541 * Is this object a List? 1490 * Is this object a List?
1542 */ 1491 */
1543 DART_EXPORT bool Dart_IsList(Dart_Handle object); 1492 DART_EXPORT bool Dart_IsList(Dart_Handle object);
1544 1493
1545 /** 1494 /**
1546 * Returns a List of the desired length. 1495 * Returns a List of the desired length.
(...skipping 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after
2768 * 2717 *
2769 * \param object An object. 2718 * \param object An object.
2770 * \param peer A value to store in the peer field. 2719 * \param peer A value to store in the peer field.
2771 * 2720 *
2772 * \return Returns an error if 'object' is a subtype of Null, num, or 2721 * \return Returns an error if 'object' is a subtype of Null, num, or
2773 * bool. 2722 * bool.
2774 */ 2723 */
2775 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); 2724 DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer);
2776 2725
2777 #endif // INCLUDE_DART_API_H_ 2726 #endif // INCLUDE_DART_API_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698