https://github.com/yashassamaga/pawn-array-view
[WIP] [NOTE: library code in lib/pawn/array_view.hpp] attempt to provide efficient simple wrappers to manipulate Pawn arrays
https://github.com/yashassamaga/pawn-array-view
Last synced: about 2 months ago
JSON representation
[WIP] [NOTE: library code in lib/pawn/array_view.hpp] attempt to provide efficient simple wrappers to manipulate Pawn arrays
- Host: GitHub
- URL: https://github.com/yashassamaga/pawn-array-view
- Owner: YashasSamaga
- License: mit
- Created: 2018-07-25T14:25:57.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-04-20T11:11:07.000Z (about 6 years ago)
- Last Synced: 2025-01-30T17:39:23.965Z (4 months ago)
- Language: C++
- Homepage:
- Size: 25.4 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pawn Array View
Pawn Array View (PAV) library is a C++ wrapper for Pawn arrays. This abstracts the details of how the Pawn arrays are stored in memory and provides a intutive C/++ like interface for dealing with them.
## Installing
1. include `array_view.hpp` to use PAV
## Structures
```
template
class pawn::array_view;
```The `pawn::array_view` takes two template parameters: type of the values in the array (`T`) and the number of dimensions (`dims`).
### Constructors
`pawn::array_view() noexcept;`
`pawn::array_view(cell *phys_addr) noexcept;`
The `phys_addr` parameter takes the address of the indirection table (begining of the multidimensional array). In case of single dimensional arrays, it takes the address to the begining of the array data.
### Member types
member type |
----------- |
value_type |
reference |
const_reference |
pointer |
const_pointer |
size_type |
difference_type |### Member functions
member function | description
--------------- | ----------------------------
operator= | point to the same array as RHS
operator\[\] | access array elements or subarray
swap | swap objects
assign | assign the array to wrap around### Example
```pawn
//native test_function(arr[][], sz_major = sizeof(arr), sz_minor = sizeof(arr[]));
cell AMX_NATIVE_CALL test_cell_0_0(AMX* amx, cell* params)
{
cell *phys_addr;
amx_GetAddr(amx, params[1], &phys_addr);
assert(phys_addr != NULL);pawn::array_view arr(phys_addr);
for (int i = 0; i < params[2]; i++) {
for (int j = 0; j < params[3]; j++) {
logprintf("%d\n", arr[i][j]);
}
}
return 1;
}
```