Заполнение массива C из AS3_Val - PullRequest
1 голос
/ 23 декабря 2010

При получении массива из флэш-памяти, в C, как мне заполнить этот массив, если его размер не постоянен, но типы значений являются?

В документации Alchemy приведен пример:

S3_ArrayValue(arr, "IntType, StrType, DoubleType", &arg0, &arg1, &arg2);

Но это означает, что если мой массив имеет размер 100, мне нужно создать строку, описывающую каждый из типов ячеек.

Нет ли способа заполнить его, сказав что-токак «заполнить следующий массив int * первым 100 значением из этого массива AS3_Val int?»

1 Ответ

0 голосов
/ 24 декабря 2010

К элементу n th массива AS3 можно получить доступ через свойство, имя которого равно n.

Например, это будет отслеживать 9001:

var arr:Array = new Array();
arr[47] = 9001;
trace( arr["47"] );

Вы можете использовать это поведение для получения произвольного доступа к массиву AS3 из Alchemy:

AS3_Val arr = AS3_Array("");
AS3_SetS(arr, "47", AS3_Int(9001));
AS3_Trace( AS3_GetS(arr, "47") );

Для произвольного доступа вам необходимо преобразовать индекс в строку:

AS3_Val AS3_ArrayGet(AS3_Val arr, int index) {
  if (index >= 0) {
    // static_assert(sizeof(int) <= 4);
    char buffer[11];
    return AS3_GetS(arr, itoa(index, buffer, 10));
  }
  return AS3_Undefined();
}

void AS3_ArraySet(AS3_Val arr, int index, AS3_Val val) {
  if (index >= 0) {
    // static_assert(sizeof(int) <= 4);
    char buffer[11];
    AS3_SetS(arr, itoa(index, buffer, 10), val);
  }
}

Нечто подобное.

...