Оглавление

Массив

Путь: /sdk/add_on/scriptarray/

Тип array это шаблон, который позволяет скрипту использовать массивы любого типа. Так как это общий класс, он не является высокопроизводительным изза необходимости определять тип в процессе выполнения. Поэтому рекомендуется регистрировать шаблонные специализации для массивов часто используемых типов.

Регистрируется с помощью RegisterScriptArray(asIScriptEngine*).

Public C++ interface

class CScriptArray
{
public:
  // Конструктор
  CScriptArray(asUINT length, asIObjectType *ot);
  virtual ~CScriptArray();

  // Управление памятью
  void AddRef();
  void Release();

  // Информация о типе
  asIObjectType *GetArrayObjectType() const;
  int            GetArrayTypeId() const;
  int            GetElementTypeId() const;

  // Возвращает текущий размер
  asUINT GetSize();

  // Ресайз
  void   Resize(asUINT numElements);
  
  // Возвращает указатель на элемент. Возвращает 0 если индекс за пределами массива.
  void  *At(asUINT index);

  // Копирует содержимое одного массива в другой
  CScriptArray &operator=(const CScriptArray&);
};

Public script interface

class array
{
    array();
    array(uint length);
    // Access elements
    // T & operator [] (uint)
    // const T & operator [] (uint) const
    array opAssign(const array & in);
    uint length();
    void resize(uint);
}

Пример скрипта

int main()
{
    array arr(3);
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    int sum = 0;
    for( uint n = 0; n < arr.length(); n++ )
      sum += arr[n];
    return sum;
}

Перевод - arroy.one@gmail.com. При копировании материалов указывайте ссылку на источник.