@@ -65,7 +65,7 @@ QirArray::QirArray(TItemCount qubits_count)
65
65
Qubit* qbuffer = new Qubit[count];
66
66
for (TItemCount i = 0 ; i < count; i++)
67
67
{
68
- qbuffer[i] = quantum__rt__qubit_allocate ();
68
+ qbuffer[i] = __quantum__rt__qubit_allocate ();
69
69
}
70
70
this ->buffer = reinterpret_cast <char *>(qbuffer);
71
71
}
@@ -238,22 +238,22 @@ static QirArray::TItemCount RunCount(const QirArray::TDimContainer& dimensionSiz
238
238
}
239
239
240
240
/* ==============================================================================
241
- Implementation of quantum__rt__ * methods for arrays
241
+ Implementation of __quantum__rt__ * methods for arrays
242
242
==============================================================================*/
243
243
extern " C"
244
244
{
245
- QirArray* quantum__rt__qubit_allocate_array (int64_t count) // TODO: Use `QirArray::TItemCount count`
246
- { // (breaking change).
245
+ QirArray* __quantum__rt__qubit_allocate_array (int64_t count) // TODO: Use `QirArray::TItemCount count`
246
+ { // (breaking change).
247
247
return new QirArray ((QirArray::TItemCount)count);
248
248
}
249
249
250
- QirArray* quantum__rt__qubit_borrow_array (int64_t count)
250
+ QirArray* __quantum__rt__qubit_borrow_array (int64_t count)
251
251
{
252
252
// Currently we implement borrowing as allocation.
253
- return quantum__rt__qubit_allocate_array (count);
253
+ return __quantum__rt__qubit_allocate_array (count);
254
254
}
255
255
256
- void quantum__rt__qubit_release_array (QirArray* qa)
256
+ void __quantum__rt__qubit_release_array (QirArray* qa)
257
257
{
258
258
if (qa == nullptr )
259
259
{
@@ -266,29 +266,29 @@ extern "C"
266
266
Qubit* qubits = reinterpret_cast <Qubit*>(qa->buffer );
267
267
for (QirArray::TItemCount i = 0 ; i < qa->count ; i++)
268
268
{
269
- quantum__rt__qubit_release (qubits[i]);
269
+ __quantum__rt__qubit_release (qubits[i]);
270
270
}
271
271
}
272
272
273
- quantum__rt__array_update_reference_count (qa, -1 );
273
+ __quantum__rt__array_update_reference_count (qa, -1 );
274
274
}
275
275
276
- void quantum__rt__qubit_return_array (QirArray* qa)
276
+ void __quantum__rt__qubit_return_array (QirArray* qa)
277
277
{
278
278
// Currently we implement borrowing as allocation.
279
- quantum__rt__qubit_release_array (qa);
279
+ __quantum__rt__qubit_release_array (qa);
280
280
}
281
281
282
282
// TODO: Use `QirArray::TItemSize itemSizeInBytes, QirArray::TItemCount count_items` (breaking change):
283
- QirArray* quantum__rt__array_create_1d (int32_t itemSizeInBytes, int64_t count_items)
283
+ QirArray* __quantum__rt__array_create_1d (int32_t itemSizeInBytes, int64_t count_items)
284
284
{
285
285
assert (itemSizeInBytes > 0 );
286
286
return new QirArray ((QirArray::TItemCount)count_items, (QirArray::TItemSize)itemSizeInBytes);
287
287
}
288
288
289
289
// Bucketing of addref/release is non-standard so for now we'll keep the more traditional addref/release semantics
290
290
// in the native types. Should reconsider, if the perf of the loops becomes an issue.
291
- void quantum__rt__array_update_reference_count (QirArray* array, int32_t increment)
291
+ void __quantum__rt__array_update_reference_count (QirArray* array, int32_t increment)
292
292
{
293
293
if (array == nullptr || increment == 0 )
294
294
{
@@ -316,7 +316,7 @@ extern "C"
316
316
}
317
317
}
318
318
319
- void quantum__rt__array_update_alias_count (QirArray* array, int32_t increment)
319
+ void __quantum__rt__array_update_alias_count (QirArray* array, int32_t increment)
320
320
{
321
321
if (array == nullptr || increment == 0 )
322
322
{
@@ -325,34 +325,39 @@ extern "C"
325
325
array->aliasCount += increment;
326
326
if (array->aliasCount < 0 )
327
327
{
328
- quantum__rt__fail ( quantum__rt__string_create (" Alias count cannot be negative!" ));
328
+ __quantum__rt__fail ( __quantum__rt__string_create (" Alias count cannot be negative!" ));
329
329
}
330
330
}
331
331
332
332
// TODO: Use `QirArray::TItemCount index` (breaking change):
333
- char * quantum__rt__array_get_element_ptr_1d (QirArray* array, int64_t index)
333
+ char * __quantum__rt__array_get_element_ptr_1d (QirArray* array, int64_t index)
334
334
{
335
335
assert (array != nullptr );
336
336
return array->GetItemPointer ((QirArray::TItemCount)index );
337
337
}
338
338
339
339
// Returns the number of dimensions in the array.
340
- int32_t quantum__rt__array_get_dim (QirArray* array) // TODO: Return `QirArray::TDimCount` (breaking change).
340
+ int32_t __quantum__rt__array_get_dim (QirArray* array) // TODO: Return `QirArray::TDimCount` (breaking change).
341
341
{
342
342
assert (array != nullptr );
343
343
return array->dimensions ;
344
344
}
345
345
346
346
// TODO: Use `QirArray::TDimCount dim`, return `QirArray::TItemCount` (breaking change):
347
- int64_t quantum__rt__array_get_size (QirArray* array, int32_t dim)
347
+ int64_t __quantum__rt__array_get_size (QirArray* array, int32_t dim)
348
348
{
349
349
assert (array != nullptr );
350
350
assert (dim < array->dimensions );
351
351
352
352
return array->dimensionSizes [(size_t )dim];
353
353
}
354
354
355
- QirArray* quantum__rt__array_copy (QirArray* array, bool forceNewInstance)
355
+ int64_t __quantum__rt__array_get_size_1d (QirArray* array)
356
+ {
357
+ return __quantum__rt__array_get_size (array, 0 );
358
+ }
359
+
360
+ QirArray* __quantum__rt__array_copy (QirArray* array, bool forceNewInstance)
356
361
{
357
362
if (array == nullptr )
358
363
{
@@ -366,7 +371,7 @@ extern "C"
366
371
return array;
367
372
}
368
373
369
- QirArray* quantum__rt__array_concatenate (QirArray* head, QirArray* tail)
374
+ QirArray* __quantum__rt__array_concatenate (QirArray* head, QirArray* tail)
370
375
{
371
376
assert (head != nullptr && tail != nullptr );
372
377
assert (head->dimensions == 1 && tail->dimensions == 1 );
@@ -380,7 +385,7 @@ extern "C"
380
385
// The variable arguments should be a sequence of int64_ts contains the length of each dimension. The bytes of the
381
386
// new array should be set to zero.
382
387
// TODO: Use unsigned types (breaking change):
383
- QirArray* quantum__rt__array_create_nonvariadic (int itemSizeInBytes, int countDimensions, va_list dims)
388
+ QirArray* __quantum__rt__array_create_nonvariadic (int itemSizeInBytes, int countDimensions, va_list dims)
384
389
{
385
390
QirArray::TDimContainer dimSizes;
386
391
dimSizes.reserve ((size_t )countDimensions);
@@ -401,17 +406,17 @@ extern "C"
401
406
std::move (dimSizes));
402
407
}
403
408
404
- QirArray* quantum__rt__array_create (int itemSizeInBytes, int countDimensions, ...) // NOLINT
409
+ QirArray* __quantum__rt__array_create (int itemSizeInBytes, int countDimensions, ...) // NOLINT
405
410
{
406
411
va_list args;
407
412
va_start (args, countDimensions);
408
- QirArray* array = quantum__rt__array_create_nonvariadic (itemSizeInBytes, countDimensions, args);
413
+ QirArray* array = __quantum__rt__array_create_nonvariadic (itemSizeInBytes, countDimensions, args);
409
414
va_end (args);
410
415
411
416
return array;
412
417
}
413
418
414
- char * quantum__rt__array_get_element_ptr_nonvariadic (QirArray* array, va_list args) // NOLINT
419
+ char * __quantum__rt__array_get_element_ptr_nonvariadic (QirArray* array, va_list args) // NOLINT
415
420
{
416
421
assert (array != nullptr );
417
422
@@ -433,13 +438,13 @@ extern "C"
433
438
#pragma GCC diagnostic ignored "-Wvarargs"
434
439
// Returns a pointer to the indicated element of the array. The variable arguments should be a sequence of int64_ts
435
440
// that are the indices for each dimension.
436
- char * quantum__rt__array_get_element_ptr (QirArray* array, ...) // NOLINT
441
+ char * __quantum__rt__array_get_element_ptr (QirArray* array, ...) // NOLINT
437
442
{
438
443
assert (array != nullptr );
439
444
440
445
va_list args;
441
446
va_start (args, array->dimensions ); // TODO: (Bug or hack?) Replace `array->dimensions` with `array`.
442
- char * ptr = quantum__rt__array_get_element_ptr_nonvariadic (array, args);
447
+ char * ptr = __quantum__rt__array_get_element_ptr_nonvariadic (array, args);
443
448
va_end (args);
444
449
445
450
return ptr;
@@ -546,7 +551,7 @@ extern "C"
546
551
// When range covers the whole dimension, can return a copy of the array without doing any math.
547
552
if (range.step == 1 && range.start == 0 && range.end == array->dimensionSizes [(size_t )dim])
548
553
{
549
- return quantum__rt__array_copy (array, true /* force*/ );
554
+ return __quantum__rt__array_copy (array, true /* force*/ );
550
555
}
551
556
552
557
// Create slice array of appropriate size.
@@ -614,7 +619,7 @@ extern "C"
614
619
// projection is on, and the int64_t specifies the specific index value to project. The returned Array* will have
615
620
// one fewer dimension than the existing array.
616
621
// TODO: Use `QirArray::TDimCount dim, QirArray::TItemCount index` (breaking change):
617
- QirArray* quantum__rt__array_project (QirArray* array, int dim, int64_t index) // NOLINT
622
+ QirArray* __quantum__rt__array_project (QirArray* array, int dim, int64_t index) // NOLINT
618
623
{
619
624
assert (array != nullptr );
620
625
assert (dim >= 0 && dim < array->dimensions );
0 commit comments