-size_t CYArrayLength(JSContextRef context, JSObjectRef array) {
- return CYCastDouble(context, CYGetProperty(context, array, length_s));
-}
-
-JSValueRef CYArrayGet(JSContextRef context, JSObjectRef array, size_t index) {
- JSValueRef exception(NULL);
- JSValueRef value(JSObjectGetPropertyAtIndex(context, array, index, &exception));
- CYThrow(context, exception);
- return value;
-}
-
-void CYArrayPush(JSContextRef context, JSObjectRef array, JSValueRef value) {
- JSValueRef exception(NULL);
- JSValueRef arguments[1];
- arguments[0] = value;
- JSObjectRef Array(CYGetCachedObject(context, CYJSString("Array_prototype")));
- JSObjectCallAsFunction(context, CYCastJSObject(context, CYGetProperty(context, Array, push_s)), array, 1, arguments, &exception);
- CYThrow(context, exception);
+_visible bool CYStartsWith(const CYUTF8String &haystack, const CYUTF8String &needle) {
+ return haystack.size >= needle.size && strncmp(haystack.data, needle.data, needle.size) == 0;