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 BIN_DARTUTILS_H_ | 5 #ifndef BIN_DARTUTILS_H_ |
6 #define BIN_DARTUTILS_H_ | 6 #define BIN_DARTUTILS_H_ |
7 | 7 |
8 #include "bin/builtin.h" | 8 #include "bin/builtin.h" |
9 #include "bin/utils.h" | 9 #include "bin/utils.h" |
10 #include "include/dart_api.h" | 10 #include "include/dart_api.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 | 198 |
199 DISALLOW_ALLOCATION(); | 199 DISALLOW_ALLOCATION(); |
200 DISALLOW_IMPLICIT_CONSTRUCTORS(DartUtils); | 200 DISALLOW_IMPLICIT_CONSTRUCTORS(DartUtils); |
201 }; | 201 }; |
202 | 202 |
203 | 203 |
204 class CObject { | 204 class CObject { |
205 public: | 205 public: |
206 explicit CObject(Dart_CObject *cobject) : cobject_(cobject) {} | 206 explicit CObject(Dart_CObject *cobject) : cobject_(cobject) {} |
207 Dart_CObject::Type type() { return cobject_->type; } | 207 Dart_CObject::Type type() { return cobject_->type; } |
208 Dart_CObject::TypedDataType byte_array_type() { | |
siva
2013/04/15 23:28:45
for consistency should we name this typed_data_typ
| |
209 ASSERT(type() == Dart_CObject::kTypedData); | |
210 return cobject_->value.as_typed_data.type; | |
211 } | |
208 | 212 |
209 bool IsNull() { return type() == Dart_CObject::kNull; } | 213 bool IsNull() { return type() == Dart_CObject::kNull; } |
210 bool IsBool() { return type() == Dart_CObject::kBool; } | 214 bool IsBool() { return type() == Dart_CObject::kBool; } |
211 bool IsInt32() { return type() == Dart_CObject::kInt32; } | 215 bool IsInt32() { return type() == Dart_CObject::kInt32; } |
212 bool IsInt64() { return type() == Dart_CObject::kInt64; } | 216 bool IsInt64() { return type() == Dart_CObject::kInt64; } |
213 bool IsInt32OrInt64() { return IsInt32() || IsInt64(); } | 217 bool IsInt32OrInt64() { return IsInt32() || IsInt64(); } |
214 bool IsIntptr() { return IsInt32OrInt64(); } | 218 bool IsIntptr() { return IsInt32OrInt64(); } |
215 bool IsBigint() { return type() == Dart_CObject::kBigint; } | 219 bool IsBigint() { return type() == Dart_CObject::kBigint; } |
216 bool IsDouble() { return type() == Dart_CObject::kDouble; } | 220 bool IsDouble() { return type() == Dart_CObject::kDouble; } |
217 bool IsString() { return type() == Dart_CObject::kString; } | 221 bool IsString() { return type() == Dart_CObject::kString; } |
218 bool IsArray() { return type() == Dart_CObject::kArray; } | 222 bool IsArray() { return type() == Dart_CObject::kArray; } |
219 bool IsUint8Array() { return type() == Dart_CObject::kUint8Array; } | 223 bool IsTypedData() { return type() == Dart_CObject::kTypedData; } |
224 bool IsUint8Array() { | |
225 return type() == Dart_CObject::kTypedData && | |
226 byte_array_type() == Dart_CObject::kUint8Array; | |
227 } | |
220 | 228 |
221 bool IsTrue() { | 229 bool IsTrue() { |
222 return type() == Dart_CObject::kBool && cobject_->value.as_bool; | 230 return type() == Dart_CObject::kBool && cobject_->value.as_bool; |
223 } | 231 } |
224 | 232 |
225 bool IsFalse() { | 233 bool IsFalse() { |
226 return type() == Dart_CObject::kBool && !cobject_->value.as_bool; | 234 return type() == Dart_CObject::kBool && !cobject_->value.as_bool; |
227 } | 235 } |
228 | 236 |
229 void* operator new(size_t size) { | 237 void* operator new(size_t size) { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
281 | 289 |
282 #define DECLARE_COBJECT_CONSTRUCTORS(t) \ | 290 #define DECLARE_COBJECT_CONSTRUCTORS(t) \ |
283 explicit CObject##t(Dart_CObject *cobject) : CObject(cobject) { \ | 291 explicit CObject##t(Dart_CObject *cobject) : CObject(cobject) { \ |
284 ASSERT(type() == Dart_CObject::k##t); \ | 292 ASSERT(type() == Dart_CObject::k##t); \ |
285 cobject_ = cobject; \ | 293 cobject_ = cobject; \ |
286 } \ | 294 } \ |
287 explicit CObject##t(CObject* cobject) : CObject() { \ | 295 explicit CObject##t(CObject* cobject) : CObject() { \ |
288 ASSERT(cobject != NULL); \ | 296 ASSERT(cobject != NULL); \ |
289 ASSERT(cobject->type() == Dart_CObject::k##t); \ | 297 ASSERT(cobject->type() == Dart_CObject::k##t); \ |
290 cobject_ = cobject->AsApiCObject(); \ | 298 cobject_ = cobject->AsApiCObject(); \ |
291 } | 299 } \ |
300 | |
301 | |
302 #define DECLARE_COBJECT_TYPED_DATA_CONSTRUCTORS(t) \ | |
303 explicit CObject##t(Dart_CObject *cobject) : CObject(cobject) { \ | |
304 ASSERT(type() == Dart_CObject::kTypedData); \ | |
305 ASSERT(byte_array_type() == Dart_CObject::k##t); \ | |
306 cobject_ = cobject; \ | |
307 } \ | |
308 explicit CObject##t(CObject* cobject) : CObject() { \ | |
309 ASSERT(cobject != NULL); \ | |
310 ASSERT(cobject->type() == Dart_CObject::kTypedData); \ | |
311 ASSERT(cobject->byte_array_type() == Dart_CObject::k##t); \ | |
312 cobject_ = cobject->AsApiCObject(); \ | |
313 } \ | |
314 | |
315 | |
316 #define DECLARE_COBJECT_EXTERNAL_TYPED_DATA_CONSTRUCTORS(t) \ | |
317 explicit CObjectExternal##t(Dart_CObject *cobject) : CObject(cobject) { \ | |
318 ASSERT(type() == Dart_CObject::kExternalTypedData); \ | |
319 ASSERT(byte_array_type() == Dart_CObject::k##t); \ | |
320 cobject_ = cobject; \ | |
321 } \ | |
322 explicit CObjectExternal##t(CObject* cobject) : CObject() { \ | |
323 ASSERT(cobject != NULL); \ | |
324 ASSERT(cobject->type() == Dart_CObject::kExternalTypedData); \ | |
325 ASSERT(cobject->byte_array_type() == Dart_CObject::k##t); \ | |
326 cobject_ = cobject->AsApiCObject(); \ | |
327 } \ | |
292 | 328 |
293 | 329 |
294 class CObjectBool : public CObject { | 330 class CObjectBool : public CObject { |
295 public: | 331 public: |
296 DECLARE_COBJECT_CONSTRUCTORS(Bool) | 332 DECLARE_COBJECT_CONSTRUCTORS(Bool) |
297 | 333 |
298 bool Value() const { return cobject_->value.as_bool; } | 334 bool Value() const { return cobject_->value.as_bool; } |
299 | 335 |
300 private: | 336 private: |
301 DISALLOW_COPY_AND_ASSIGN(CObjectBool); | 337 DISALLOW_COPY_AND_ASSIGN(CObjectBool); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
397 } | 433 } |
398 void SetAt(int index, CObject* value) { | 434 void SetAt(int index, CObject* value) { |
399 cobject_->value.as_array.values[index] = value->AsApiCObject(); | 435 cobject_->value.as_array.values[index] = value->AsApiCObject(); |
400 } | 436 } |
401 | 437 |
402 private: | 438 private: |
403 DISALLOW_COPY_AND_ASSIGN(CObjectArray); | 439 DISALLOW_COPY_AND_ASSIGN(CObjectArray); |
404 }; | 440 }; |
405 | 441 |
406 | 442 |
443 class CObjectTypedData : public CObject { | |
444 public: | |
445 explicit CObjectTypedData(Dart_CObject *cobject) : CObject(cobject) { | |
446 ASSERT(type() == Dart_CObject::kTypedData); | |
447 cobject_ = cobject; | |
448 } | |
449 explicit CObjectTypedData(CObject* cobject) : CObject() { | |
450 ASSERT(cobject != NULL); | |
451 ASSERT(cobject->type() == Dart_CObject::kTypedData); | |
452 cobject_ = cobject->AsApiCObject(); | |
453 } | |
454 | |
455 Dart_CObject::TypedDataType Type() const { | |
456 return cobject_->value.as_typed_data.type; | |
457 } | |
458 int Length() const { return cobject_->value.as_typed_data.length; } | |
459 uint8_t* Buffer() const { return cobject_->value.as_typed_data.values; } | |
siva
2013/04/15 23:28:45
probably need accessors:
Peer
Callback
etc. for
| |
460 | |
461 private: | |
462 DISALLOW_COPY_AND_ASSIGN(CObjectTypedData); | |
463 }; | |
464 | |
465 | |
407 class CObjectUint8Array : public CObject { | 466 class CObjectUint8Array : public CObject { |
408 public: | 467 public: |
409 DECLARE_COBJECT_CONSTRUCTORS(Uint8Array) | 468 DECLARE_COBJECT_TYPED_DATA_CONSTRUCTORS(Uint8Array) |
410 | 469 |
411 int Length() const { return cobject_->value.as_byte_array.length; } | 470 int Length() const { return cobject_->value.as_typed_data.length; } |
412 uint8_t* Buffer() const { return cobject_->value.as_byte_array.values; } | 471 uint8_t* Buffer() const { return cobject_->value.as_typed_data.values; } |
413 | 472 |
414 private: | 473 private: |
415 DISALLOW_COPY_AND_ASSIGN(CObjectUint8Array); | 474 DISALLOW_COPY_AND_ASSIGN(CObjectUint8Array); |
416 }; | 475 }; |
siva
2013/04/15 23:28:45
Is this class CObjectUint8Array still needed I cou
| |
417 | 476 |
418 | 477 |
419 class CObjectExternalUint8Array : public CObject { | 478 class CObjectExternalUint8Array : public CObject { |
420 public: | 479 public: |
421 DECLARE_COBJECT_CONSTRUCTORS(ExternalUint8Array) | 480 DECLARE_COBJECT_EXTERNAL_TYPED_DATA_CONSTRUCTORS(Uint8Array) |
422 | 481 |
423 int Length() const { return cobject_->value.as_external_byte_array.length; } | 482 int Length() const { return cobject_->value.as_external_typed_data.length; } |
424 void SetLength(uint64_t length) { | 483 void SetLength(uint64_t length) { |
425 cobject_->value.as_external_byte_array.length = length; | 484 cobject_->value.as_external_typed_data.length = length; |
426 } | 485 } |
427 uint8_t* Data() const { return cobject_->value.as_external_byte_array.data; } | 486 uint8_t* Data() const { return cobject_->value.as_external_typed_data.data; } |
428 void* Peer() const { return cobject_->value.as_external_byte_array.peer; } | 487 void* Peer() const { return cobject_->value.as_external_typed_data.peer; } |
429 Dart_WeakPersistentHandleFinalizer Callback() const { | 488 Dart_WeakPersistentHandleFinalizer Callback() const { |
430 return cobject_->value.as_external_byte_array.callback; | 489 return cobject_->value.as_external_typed_data.callback; |
431 } | 490 } |
432 | 491 |
433 private: | 492 private: |
434 DISALLOW_COPY_AND_ASSIGN(CObjectExternalUint8Array); | 493 DISALLOW_COPY_AND_ASSIGN(CObjectExternalUint8Array); |
435 }; | 494 }; |
siva
2013/04/15 23:28:45
Can the code in file.cc that creates objects of th
| |
436 | 495 |
437 #endif // BIN_DARTUTILS_H_ | 496 #endif // BIN_DARTUTILS_H_ |
OLD | NEW |