support for start/length in buffer methods

This commit is contained in:
Peli de Halleux 2016-08-04 08:42:47 -07:00
parent 4e46682489
commit f2c43c74ac
3 changed files with 17 additions and 9 deletions

View File

@ -123,21 +123,25 @@ namespace BufferMethods {
/**
* Shift buffer left in place, with zero padding.
* @param offset number of bytes to shift; use negative value to shift right
* @param start start offset in buffer. Default is 0.
* @param length number of elements in buffer. If negative, length is set as the buffer length minus start. eg: -1
*/
//%
void shift(Buffer buf, int offset)
void shift(Buffer buf, int offset, int start = 0, int length = -1)
{
ManagedBuffer(buf).shift(offset);
ManagedBuffer(buf).shift(offset, start, length);
}
/**
* Rotate buffer left in place.
* @param offset number of bytes to shift; use negative value to shift right
* @param start start offset in buffer. Default is 0.
* @param length number of elements in buffer. If negative, length is set as the buffer length minus start. eg: -1
*/
//%
void rotate(Buffer buf, int offset)
void rotate(Buffer buf, int offset, int start = 0, int length = -1)
{
ManagedBuffer(buf).rotate(offset);
ManagedBuffer(buf).rotate(offset, start, length);
}
// int readBytes(uint8_t *dst, int offset, int length, bool swapBytes = false) const;

View File

@ -635,16 +635,20 @@ declare interface Buffer {
/**
* Shift buffer left in place, with zero padding.
* @param offset number of bytes to shift; use negative value to shift right
* @param start start offset in buffer. Default is 0.
* @param length number of elements in buffer. If negative, length is set as the buffer length minus start. eg: -1
*/
//% shim=BufferMethods::shift
shift(offset: number): void;
//% start.defl=0 length.defl=-1 shim=BufferMethods::shift
shift(offset: number, start?: number, length?: number): void;
/**
* Rotate buffer left in place.
* @param offset number of bytes to shift; use negative value to shift right
* @param start start offset in buffer. Default is 0.
* @param length number of elements in buffer. If negative, length is set as the buffer length minus start. eg: -1
*/
//% shim=BufferMethods::rotate
rotate(offset: number): void;
//% start.defl=0 length.defl=-1 shim=BufferMethods::rotate
rotate(offset: number, start?: number, length?: number): void;
/**
* Write contents of `src` at `dstOffset` in current buffer.

View File

@ -70,7 +70,7 @@
"yottaTarget": "bbc-microbit-classic-gcc",
"yottaCorePackage": "pxt-microbit-core",
"githubCorePackage": "microsoft/pxt-microbit-core",
"gittag": "v0.1.11",
"gittag": "v0.2.2",
"serviceId": "ws"
},
"serial": {