/xbmc/visualizations/Vortex/angelscript/add_on/scriptarray/scriptarray.h

http://github.com/xbmc/xbmc · C++ Header · 65 lines · 43 code · 18 blank · 4 comment · 0 complexity · 1af4050f81a56f08e8a0520d48be7483 MD5 · raw file

  1. #ifndef SCRIPTARRAY_H
  2. #define SCRIPTARRAY_H
  3. #include <angelscript.h>
  4. BEGIN_AS_NAMESPACE
  5. struct SArrayBuffer;
  6. class CScriptArray
  7. {
  8. public:
  9. CScriptArray(asUINT length, asIObjectType *ot);
  10. virtual ~CScriptArray();
  11. void AddRef();
  12. void Release();
  13. // Type information
  14. asIObjectType *GetArrayObjectType() const;
  15. int GetArrayTypeId() const;
  16. int GetElementTypeId() const;
  17. void Resize(asUINT numElements);
  18. asUINT GetSize();
  19. // Get a pointer to an element. Returns 0 if out of bounds
  20. void *At(asUINT index);
  21. CScriptArray &operator=(const CScriptArray&);
  22. // TODO: Add methods Sort, Reverse, Find, PopLast, PushLast, InsertAt, RemoveAt, etc
  23. // GC methods
  24. int GetRefCount();
  25. void SetFlag();
  26. bool GetFlag();
  27. void EnumReferences(asIScriptEngine *engine);
  28. void ReleaseAllHandles(asIScriptEngine *engine);
  29. protected:
  30. int refCount;
  31. bool gcFlag;
  32. asIObjectType *objType;
  33. SArrayBuffer *buffer;
  34. bool isArrayOfHandles;
  35. int elementSize;
  36. bool CheckMaxSize(asUINT numElements);
  37. void CreateBuffer(SArrayBuffer **buf, asUINT numElements);
  38. void DeleteBuffer(SArrayBuffer *buf);
  39. void CopyBuffer(SArrayBuffer *dst, SArrayBuffer *src);
  40. void Construct(SArrayBuffer *buf, asUINT start, asUINT end);
  41. void Destruct(SArrayBuffer *buf, asUINT start, asUINT end);
  42. };
  43. void RegisterScriptArray(asIScriptEngine *engine);
  44. void RegisterScriptArray_Native(asIScriptEngine *engine);
  45. void RegisterScriptArray_Generic(asIScriptEngine *engine);
  46. END_AS_NAMESPACE
  47. #endif