Remove remaining external shims
This commit is contained in:
parent
6559f386d2
commit
feb17c5e45
@ -78,6 +78,11 @@ namespace String {
|
|||||||
{
|
{
|
||||||
return ManagedString((char)code).leakData();
|
return ManagedString((char)code).leakData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
int toNumber(StringData *s) {
|
||||||
|
return atoi(s->data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace NumberMethods {
|
namespace NumberMethods {
|
||||||
@ -137,3 +142,92 @@ namespace Math {
|
|||||||
return ::sqrt(x);
|
return ::sqrt(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace ArrayImpl {
|
||||||
|
//%
|
||||||
|
RefCollection *mk(uint32_t flags)
|
||||||
|
{
|
||||||
|
RefCollection *r = new RefCollection(flags);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
int length(RefCollection *c) { return c->data.size(); }
|
||||||
|
|
||||||
|
//%
|
||||||
|
void push(RefCollection *c, uint32_t x) {
|
||||||
|
if (c->flags & 1) incr(x);
|
||||||
|
c->data.push_back(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool in_range(RefCollection *c, int x) {
|
||||||
|
return (0 <= x && x < (int)c->data.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
uint32_t getAt(RefCollection *c, int x) {
|
||||||
|
if (in_range(c, x)) {
|
||||||
|
uint32_t tmp = c->data.at(x);
|
||||||
|
if (c->flags & 1) incr(tmp);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
error(ERR_OUT_OF_BOUNDS);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
void removeAt(RefCollection *c, int x) {
|
||||||
|
if (!in_range(c, x))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (c->flags & 1) decr(c->data.at(x));
|
||||||
|
c->data.erase(c->data.begin()+x);
|
||||||
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
void setAt(RefCollection *c, int x, uint32_t y) {
|
||||||
|
if (!in_range(c, x))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (c->flags & 1) {
|
||||||
|
decr(c->data.at(x));
|
||||||
|
incr(y);
|
||||||
|
}
|
||||||
|
c->data.at(x) = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
int indexOf(RefCollection *c, uint32_t x, int start) {
|
||||||
|
if (!in_range(c, start))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (c->flags & 2) {
|
||||||
|
StringData *xx = (StringData*)x;
|
||||||
|
for (uint32_t i = start; i < c->data.size(); ++i) {
|
||||||
|
StringData *ee = (StringData*)c->data.at(i);
|
||||||
|
if (xx->len == ee->len && memcmp(xx->data, ee->data, xx->len) == 0)
|
||||||
|
return (int)i;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (uint32_t i = start; i < c->data.size(); ++i)
|
||||||
|
if (c->data.at(i) == x)
|
||||||
|
return (int)i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//%
|
||||||
|
int removeElement(RefCollection *c, uint32_t x) {
|
||||||
|
int idx = indexOf(c, x, 0);
|
||||||
|
if (idx >= 0) {
|
||||||
|
removeAt(c, idx);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
36
libs/microbit/core.d.ts
vendored
36
libs/microbit/core.d.ts
vendored
@ -4,14 +4,14 @@ interface Array<T> {
|
|||||||
/**
|
/**
|
||||||
* Gets or sets the length of the array. This is a number one higher than the highest element defined in an array.
|
* Gets or sets the length of the array. This is a number one higher than the highest element defined in an array.
|
||||||
*/
|
*/
|
||||||
//% shim=collection::count
|
//% shim=ArrayImpl::length
|
||||||
length: number;
|
length: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Appends new elements to an array.
|
* Appends new elements to an array.
|
||||||
* @param items New elements of the Array.
|
* @param items New elements of the Array.
|
||||||
*/
|
*/
|
||||||
//% shim=collection::add
|
//% shim=ArrayImpl::push
|
||||||
push(item: T): void;
|
push(item: T): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,11 +41,11 @@ interface Array<T> {
|
|||||||
slice(start: number, end: number): T[];
|
slice(start: number, end: number): T[];
|
||||||
|
|
||||||
/** Removes the first occurence of an object. Returns true if removed. */
|
/** Removes the first occurence of an object. Returns true if removed. */
|
||||||
//% shim=collection::remove
|
//% shim=ArrayImpl::removeElement
|
||||||
removeElement(element:T) : boolean;
|
removeElement(element:T) : boolean;
|
||||||
|
|
||||||
/** Removes the object at position index. */
|
/** Removes the object at position index. */
|
||||||
//% shim=collection::remove_at
|
//% shim=ArrayImpl::removeAt
|
||||||
removeAt(idx:number) : void;
|
removeAt(idx:number) : void;
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ interface Array<T> {
|
|||||||
* @param searchElement The value to locate in the array.
|
* @param searchElement The value to locate in the array.
|
||||||
* @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
|
* @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
|
||||||
*/
|
*/
|
||||||
//% shim=collection::index_of
|
//% shim=ArrayImpl::indexOf
|
||||||
indexOf(searchElement: T, fromIndex?: number): number;
|
indexOf(searchElement: T, fromIndex?: number): number;
|
||||||
|
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ interface String {
|
|||||||
* Converts A string to an integer.
|
* Converts A string to an integer.
|
||||||
* @param s A string to convert into a number.
|
* @param s A string to convert into a number.
|
||||||
*/
|
*/
|
||||||
//% shim=string::to_number
|
//% shim=String::toNumber
|
||||||
declare function parseInt(s: string): number;
|
declare function parseInt(s: string): number;
|
||||||
|
|
||||||
interface Object {}
|
interface Object {}
|
||||||
@ -94,27 +94,3 @@ interface Function {}
|
|||||||
interface IArguments {}
|
interface IArguments {}
|
||||||
interface RegExp {}
|
interface RegExp {}
|
||||||
|
|
||||||
interface Boolean {
|
|
||||||
/**
|
|
||||||
* Returns a string representation of an object.
|
|
||||||
*/
|
|
||||||
//% shim=boolean::to_string
|
|
||||||
toString(): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare namespace String {
|
|
||||||
/**
|
|
||||||
* Make a string from the given ASCII character code.
|
|
||||||
*/
|
|
||||||
//% shim=number::to_character
|
|
||||||
export function fromCharCode(code:number): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Number {
|
|
||||||
/**
|
|
||||||
* Returns a string representation of an object.
|
|
||||||
*/
|
|
||||||
//% shim=number::to_string
|
|
||||||
toString(): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
2
libs/microbit/shims.d.ts
vendored
2
libs/microbit/shims.d.ts
vendored
@ -32,7 +32,7 @@ declare interface String {
|
|||||||
|
|
||||||
/** Returns the length of a String object. */
|
/** Returns the length of a String object. */
|
||||||
//% property shim=StringMethods::length
|
//% property shim=StringMethods::length
|
||||||
length(): number;
|
length: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user