本文整理汇总了C++中duk_push_array函数的典型用法代码示例。如果您正苦于以下问题:C++ duk_push_array函数的具体用法?C++ duk_push_array怎么用?C++ duk_push_array使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了duk_push_array函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: time_hrtime
/*
* High precission time. If an optional array is given
* it returns the difference.
*/
static duk_ret_t time_hrtime(duk_context* ctx) {
uint64_t t = sjs_time_hrtime();
uint64_t sec;
uint64_t nsec;
if (duk_is_array(ctx, 0)) {
uint64_t t0;
uint64_t sec0;
uint64_t nsec0;
duk_get_prop_index(ctx, 0, 0);
sec0 = duk_require_uint(ctx, -1);
duk_pop(ctx);
duk_get_prop_index(ctx, 0, 1);
nsec0 = duk_require_uint(ctx, -1);
duk_pop(ctx);
t0 = sec0 * NANOS_PER_SEC + nsec0;
t -= t0;
}
sec = t / NANOS_PER_SEC;
nsec = t % NANOS_PER_SEC;
duk_push_array(ctx);
duk_push_uint(ctx, sec);
duk_put_prop_index(ctx, -2, 0);
duk_push_uint(ctx, nsec);
duk_put_prop_index(ctx, -2, 1);
return 1;
}
开发者ID:Iced-Tea,项目名称:sjs,代码行数:30,代码来源:_time.c
示例2: es_gumbo_node_childs
static int
es_gumbo_node_childs(duk_context *ctx)
{
es_gumbo_node_t *egn = es_get_native_obj(ctx, 0, &es_native_gumbo_node);
int all = duk_get_boolean(ctx, 1);
const GumboNode *node = egn->node;
duk_push_array(ctx);
if(node->type == GUMBO_NODE_ELEMENT || node->type == GUMBO_NODE_TEMPLATE) {
const GumboElement *e = &node->v.element;
int num = 0;
for(int i = 0; i < e->children.length; i++) {
GumboNode *child = e->children.data[i];
if(child->type == GUMBO_NODE_WHITESPACE)
continue;
if(!all) {
if(child->type == GUMBO_NODE_TEXT ||
child->type == GUMBO_NODE_CDATA ||
child->type == GUMBO_NODE_COMMENT)
continue;
}
push_gumbo_node(ctx, child, egn->output);
duk_put_prop_index(ctx, -2, num++);
}
}
return 1;
}
开发者ID:Cy-4AH,项目名称:showtime,代码行数:27,代码来源:es_gumbo.c
示例3: duk_push_array
void StyleContext::initFunctions(const Scene& _scene) {
if (_scene.id == m_sceneId) {
return;
}
m_sceneId = _scene.id;
auto arr_idx = duk_push_array(m_ctx);
int id = 0;
for (auto& function : _scene.functions()) {
//logMsg("compile '%s'\n", function.c_str());
duk_push_string(m_ctx, function.c_str());
duk_push_string(m_ctx, "");
if (duk_pcompile(m_ctx, DUK_COMPILE_FUNCTION) == 0) {
duk_put_prop_index(m_ctx, arr_idx, id);
} else {
logMsg("Error: compile failed: %s\n", duk_safe_to_string(m_ctx, -1));
duk_pop(m_ctx);
}
id++;
}
if (!duk_put_global_string(m_ctx, FUNC_ID)) {
logMsg("Error: 'fns' object not set\n");
}
DUMP("setScene - %d functions\n", id);
}
开发者ID:xvilan,项目名称:tangram-es,代码行数:30,代码来源:styleContext.cpp
示例4: duk_push_array
bool StyleContext::setFunctions(const std::vector<std::string>& _functions) {
auto arr_idx = duk_push_array(m_ctx);
int id = 0;
bool ok = true;
for (auto& function : _functions) {
duk_push_string(m_ctx, function.c_str());
duk_push_string(m_ctx, "");
if (duk_pcompile(m_ctx, DUK_COMPILE_FUNCTION) == 0) {
duk_put_prop_index(m_ctx, arr_idx, id);
} else {
LOGW("Compile failed: %s\n%s\n---",
duk_safe_to_string(m_ctx, -1),
function.c_str());
duk_pop(m_ctx);
ok = false;
}
id++;
}
if (!duk_put_global_string(m_ctx, FUNC_ID)) {
LOGE("'fns' object not set");
}
DUMP("setFunctions\n");
return ok;
}
开发者ID:NabilNoaman,项目名称:tangram-es,代码行数:30,代码来源:styleContext.cpp
示例5: AssetDatabase_GetAssetsByImporterType
static int AssetDatabase_GetAssetsByImporterType(duk_context* ctx)
{
JSVM* vm = JSVM::GetJSVM(ctx);
ToolSystem* ts = vm->GetSubsystem<ToolSystem>();
AssetDatabase* db = vm->GetSubsystem<AssetDatabase>();
Project* project = ts->GetProject();
StringHash type = duk_require_string(ctx, 0);
String resourceType = duk_require_string(ctx, 1);
duk_push_array(ctx);
if (!project)
return 1;
PODVector<Asset*> assets;
db->GetAssetsByImporterType(type, resourceType, assets);
for(unsigned i = 0; i < assets.Size(); i++)
{
js_push_class_object_instance(ctx, assets[i], 0);
duk_put_prop_index(ctx, -2, i);
}
return 1;
}
开发者ID:GREYFOXRGR,项目名称:AtomicGameEngine,代码行数:26,代码来源:ToolCoreJS.cpp
示例6: test_2a
static duk_ret_t test_2a(duk_context *ctx, void *udata) {
(void) udata;
/* Test first with nothing on stack index -3. */
duk_safe_call(ctx, test__null, NULL, 0, 1); printf("%s\n", duk_safe_to_string(ctx, 0));
duk_pop(ctx);
duk_set_top(ctx, 0); duk_push_undefined(ctx); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_null(ctx); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_true(ctx); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_false(ctx); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_number(ctx, 123.0); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_string(ctx, "foo\x00" "bar"); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_fixed_buffer(ctx, 16); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_pointer(ctx, NULL); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_pointer(ctx, (void *) 0xdeadbeefUL); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_object(ctx); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_array(ctx); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_c_function(ctx, dummy_func, 0); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_c_lightfunc(ctx, dummy_func, 0, 0, 0); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_eval_string(ctx, "(function dummy(){})"); test__require_calls(ctx);
duk_set_top(ctx, 0); duk_push_thread(ctx); test__require_calls(ctx);
printf("done\n");
return 0;
}
开发者ID:fatcerberus,项目名称:duktape,代码行数:26,代码来源:test-dev-api-verbose-error-messages-gh441.c
示例7: dukzip_unz_listfiles
static duk_ret_t dukzip_unz_listfiles(duk_context *ctx) {
unzFile archive = dukzip_unz_from_this(ctx);
unzGoToFirstFile(archive);
int i = 0, res;
duk_idx_t arr_idx = duk_push_array(ctx);
do {
// unz_file_info fileInfo;
// unzGetCurrentFileInfo(archive, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
unz_file_info64 fileInfo;
unzGetCurrentFileInfo64(archive, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
#if defined(__GNUC__) && !defined(DUK_NO_VLA)
char fileName[fileInfo.size_filename];
#else
char *fileName = malloc(fileInfo.size_filename);
#endif
// unzGetCurrentFileInfo(archive, &fileInfo, fileName, fileInfo.size_filename, NULL, 0, NULL, 0);
unzGetCurrentFileInfo64(archive, &fileInfo, fileName, fileInfo.size_filename, NULL, 0, NULL, 0);
duk_push_lstring(ctx, fileName, fileInfo.size_filename);
duk_put_prop_index(ctx, arr_idx, i++);
#if !defined(__GNUC__) || defined(DUK_NO_VLA)
free(fileName);
#endif
res = unzGoToNextFile(archive);
} while (res != UNZ_END_OF_LIST_OF_FILE || res == UNZ_OK);
return 1;
}
开发者ID:armornick,项目名称:duktape-misc,代码行数:35,代码来源:zip.c
示例8: duk_push_context_dump
DUK_EXTERNAL void duk_push_context_dump(duk_context *ctx) {
duk_idx_t idx;
duk_idx_t top;
/* We don't duk_require_stack() here now, but rely on the caller having
* enough space.
*/
top = duk_get_top(ctx);
duk_push_array(ctx);
for (idx = 0; idx < top; idx++) {
duk_dup(ctx, idx);
duk_put_prop_index(ctx, -2, idx);
}
/* XXX: conversion errors should not propagate outwards.
* Perhaps values need to be coerced individually?
*/
duk_bi_json_stringify_helper(ctx,
duk_get_top_index(ctx), /*idx_value*/
DUK_INVALID_INDEX, /*idx_replacer*/
DUK_INVALID_INDEX, /*idx_space*/
DUK_JSON_FLAG_EXT_CUSTOM |
DUK_JSON_FLAG_ASCII_ONLY |
DUK_JSON_FLAG_AVOID_KEY_QUOTES /*flags*/);
duk_push_sprintf(ctx, "ctx: top=%ld, stack=%s", (long) top, (const char *) duk_safe_to_string(ctx, -1));
duk_replace(ctx, -3); /* [ ... arr jsonx(arr) res ] -> [ ... res jsonx(arr) ] */
duk_pop(ctx);
DUK_ASSERT(duk_is_string(ctx, -1));
}
开发者ID:CarterTsai,项目名称:duktape,代码行数:31,代码来源:duk_api_debug.c
示例9: FileSystem_ScanDir
static int FileSystem_ScanDir(duk_context* ctx)
{
duk_push_this(ctx);
FileSystem* fs = js_to_class_instance<FileSystem>(ctx, -1, 0);
if ( !duk_is_string(ctx, 0) || !duk_is_string(ctx, 1) ||
!duk_is_number(ctx, 2) || !duk_is_boolean(ctx, 3))
{
duk_push_string(ctx, "FileSystem::ScanDir bad args");
duk_throw(ctx);
}
const char* pathName = duk_to_string(ctx, 0);
const char* filter = duk_to_string(ctx, 1);
unsigned flags = duk_to_number(ctx, 2);
bool recursive = duk_to_boolean(ctx, 3) ? true : false;
Vector<String> result;
fs->ScanDir(result, pathName, filter, flags, recursive);
duk_push_array(ctx);
for (unsigned i = 0; i < result.Size(); i++)
{
duk_push_string(ctx, result[i].CString());
duk_put_prop_index(ctx, -2, i);
}
return 1;
}
开发者ID:adebgamesoft,项目名称:AtomicGameEngine,代码行数:32,代码来源:JSFileSystem.cpp
示例10: test
void test(duk_context *ctx) {
int i, n;
duk_push_c_function(ctx, func, 0);
duk_push_undefined(ctx);
duk_push_null(ctx);
duk_push_true(ctx);
duk_push_false(ctx);
duk_push_number(ctx, 123.456);
duk_push_string(ctx, "foo");
duk_push_object(ctx);
duk_push_array(ctx);
duk_push_fixed_buffer(ctx, 16);
duk_push_pointer(ctx, (void *) 0xdeadbeef);
n = duk_get_top(ctx);
printf("top: %d\n", n);
for (i = 1; i < n; i++) {
duk_dup(ctx, 0);
duk_dup(ctx, i);
duk_call_method(ctx, 0); /* [ ... func this ] -> [ ret ] */
duk_pop(ctx);
}
}
开发者ID:BpLife,项目名称:duktape,代码行数:25,代码来源:test-push-this.c
示例11: Material_GetShaderParameters
static int Material_GetShaderParameters(duk_context* ctx)
{
duk_push_this(ctx);
Material* material = js_to_class_instance<Material>(ctx, -1, 0);
const HashMap<StringHash, MaterialShaderParameter>& params = material->GetShaderParameters();
duk_push_array(ctx);
unsigned j = 0;
for (HashMap<StringHash, MaterialShaderParameter>::ConstIterator i = params.Begin(); i != params.End(); ++i)
{
duk_push_object(ctx);
duk_push_string(ctx, i->second_.name_.CString());
duk_put_prop_string(ctx, -2, "name");
js_push_variant(ctx, i->second_.value_);
duk_put_prop_string(ctx, -2, "value");
duk_push_string(ctx, i->second_.value_.ToString().CString());
duk_put_prop_string(ctx, -2, "valueString");
duk_push_string(ctx, i->second_.value_.GetTypeName().CString());
duk_put_prop_string(ctx, -2, "typeName");
duk_push_number(ctx, (double) i->second_.value_.GetType());
duk_put_prop_string(ctx, -2, "type");
duk_put_prop_index(ctx, -2, j++);
}
return 1;
}
开发者ID:AliAkbarMontazeri,项目名称:AtomicGameEngine,代码行数:34,代码来源:JSGraphics.cpp
示例12: js_Font_wordWrapString
static duk_ret_t
js_Font_wordWrapString(duk_context* ctx)
{
const char* text = duk_to_string(ctx, 0);
int width = duk_require_int(ctx, 1);
font_t* font;
int num_lines;
wraptext_t* wraptext;
int i;
duk_push_this(ctx);
font = duk_require_sphere_obj(ctx, -1, "Font");
duk_pop(ctx);
wraptext = word_wrap_text(font, text, width);
num_lines = get_wraptext_line_count(wraptext);
duk_push_array(ctx);
for (i = 0; i < num_lines; ++i) {
duk_push_string(ctx, get_wraptext_line(wraptext, i));
duk_put_prop_index(ctx, -2, i);
}
free_wraptext(wraptext);
return 1;
}
开发者ID:svaarala,项目名称:minisphere,代码行数:25,代码来源:font.c
示例13: OnSignal
void OnSignal(Entity * param0, Entity * param1, const float3 & param2, const float3 & param3, float param4, float param5, bool param6)
{
duk_context* ctx = ctx_;
duk_push_global_object(ctx);
duk_get_prop_string(ctx, -1, "_OnSignal");
duk_remove(ctx, -2);
duk_push_number(ctx, (size_t)key_);
duk_push_array(ctx);
PushWeakObject(ctx, param0);
duk_put_prop_index(ctx, -2, 0);
PushWeakObject(ctx, param1);
duk_put_prop_index(ctx, -2, 1);
PushValueObjectCopy<float3>(ctx, param2, float3_ID, float3_Finalizer);
duk_put_prop_index(ctx, -2, 2);
PushValueObjectCopy<float3>(ctx, param3, float3_ID, float3_Finalizer);
duk_put_prop_index(ctx, -2, 3);
duk_push_number(ctx, param4);
duk_put_prop_index(ctx, -2, 4);
duk_push_number(ctx, param5);
duk_put_prop_index(ctx, -2, 5);
duk_push_boolean(ctx, param6);
duk_put_prop_index(ctx, -2, 6);
bool success = duk_pcall(ctx, 2) == 0;
if (!success) LogError("[JavaScript] OnSignal: " + GetErrorString(ctx));
duk_pop(ctx);
}
开发者ID:realXtend,项目名称:tundra-urho3d,代码行数:26,代码来源:PhysicsWorldBindings.cpp
示例14: AJS_RegisterIO
AJ_Status AJS_RegisterIO(duk_context* ctx, duk_idx_t ioIdx)
{
duk_idx_t pinIdx;
duk_idx_t i;
uint16_t numPins = AJS_TargetIO_GetNumPins();
/*
* Create base pin protoype
*/
pinIdx = duk_push_object(ctx);
AJS_SetPropertyAccessors(ctx, pinIdx, "functions", NULL, NativeFunctionsGetter);
AJS_SetPropertyAccessors(ctx, pinIdx, "info", NULL, NativeInfoGetter);
/*
* Create the pin objects
*/
duk_push_array(ctx);
for (i = 0; i < numPins; ++i) {
AJS_CreateObjectFromPrototype(ctx, pinIdx);
duk_push_int(ctx, i);
duk_put_prop_string(ctx, -2, "id");
duk_put_prop_index(ctx, -2, i);
}
duk_put_prop_string(ctx, ioIdx, "pin");
duk_pop(ctx);
/*
* Register the native functions
*/
AJS_PutFunctionList(ctx, ioIdx, io_native_functions, TRUE);
/*
* GPIO attribute constants
*/
duk_put_number_list(ctx, ioIdx, io_constants);
/*
* A hidden property for keeping track of triggers
*/
duk_push_string(ctx, AJS_HIDDEN_PROP("trigs"));
duk_push_array(ctx);
duk_def_prop(ctx, ioIdx, DUK_DEFPROP_HAVE_VALUE | DUK_DEFPROP_HAVE_WRITABLE);
/*
* Compact the IO object and set it on the global object
*/
duk_compact(ctx, ioIdx);
duk_dup(ctx, ioIdx);
duk_put_global_string(ctx, AJS_IOObjectName);
return AJ_OK;
}
开发者ID:avernon,项目名称:asl_distribution,代码行数:47,代码来源:ajs_io.c
示例15: duk_bi_array_prototype_slice
DUK_INTERNAL duk_ret_t duk_bi_array_prototype_slice(duk_context *ctx) {
duk_uint32_t len;
duk_int_t start, end;
duk_int_t i;
duk_uarridx_t idx;
duk_uint32_t res_length = 0;
/* XXX: len >= 0x80000000 won't work below because we need to be
* able to represent -len.
*/
len = duk__push_this_obj_len_u32_limited(ctx);
duk_push_array(ctx);
/* stack[0] = start
* stack[1] = end
* stack[2] = ToObject(this)
* stack[3] = ToUint32(length)
* stack[4] = result array
*/
start = duk_to_int_clamped(ctx, 0, -((duk_int_t) len), (duk_int_t) len);
if (start < 0) {
start = len + start;
}
/* XXX: could duk_is_undefined() provide defaulting undefined to 'len'
* (the upper limit)?
*/
if (duk_is_undefined(ctx, 1)) {
end = len;
} else {
end = duk_to_int_clamped(ctx, 1, -((duk_int_t) len), (duk_int_t) len);
if (end < 0) {
end = len + end;
}
}
DUK_ASSERT(start >= 0 && (duk_uint32_t) start <= len);
DUK_ASSERT(end >= 0 && (duk_uint32_t) end <= len);
idx = 0;
for (i = start; i < end; i++) {
DUK_ASSERT_TOP(ctx, 5);
if (duk_get_prop_index(ctx, 2, (duk_uarridx_t) i)) {
duk_xdef_prop_index_wec(ctx, 4, idx);
res_length = idx + 1;
} else {
duk_pop(ctx);
}
idx++;
DUK_ASSERT_TOP(ctx, 5);
}
duk_push_u32(ctx, res_length);
duk_xdef_prop_stridx(ctx, 4, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_W);
DUK_ASSERT_TOP(ctx, 5);
return 1;
}
开发者ID:OakLabsInc,项目名称:duktape,代码行数:57,代码来源:duk_bi_array.c
示例16: switch
void StyleContext::parseSceneGlobals(const YAML::Node& node, const std::string& key, int seqIndex,
duk_idx_t dukObject) {
switch(node.Type()) {
case YAML::NodeType::Scalar:
if (key.size() == 0) {
duk_push_string(m_ctx, node.Scalar().c_str());
duk_put_prop_index(m_ctx, dukObject, seqIndex);
} else {
auto nodeValue = node.Scalar();
if (nodeValue.compare(0, 8, "function") == 0) {
duk_push_string(m_ctx, key.c_str()); // push property key
duk_push_string(m_ctx, nodeValue.c_str()); // push function string
duk_push_string(m_ctx, "");
if (duk_pcompile(m_ctx, DUK_COMPILE_FUNCTION) == 0) { // compile function
duk_put_prop(m_ctx, -3); // put {key: function()}
} else {
LOGW("Compile failed in global function: %s\n%s\n---",
duk_safe_to_string(m_ctx, -1),
nodeValue.c_str());
duk_pop(m_ctx); //pop error
duk_pop(m_ctx); //pop key
// push property as a string
duk_push_string(m_ctx, nodeValue.c_str());
duk_put_prop_string(m_ctx, dukObject, key.c_str());
}
} else {
duk_push_string(m_ctx, nodeValue.c_str());
duk_put_prop_string(m_ctx, dukObject, key.c_str());
}
}
break;
case YAML::NodeType::Sequence:
{
auto seqObj = duk_push_array(m_ctx);
for (int i = 0; i < node.size(); i++) {
parseSceneGlobals(node[i], "", i, seqObj);
}
duk_put_prop_string(m_ctx, seqObj-1, key.c_str());
break;
}
case YAML::NodeType::Map:
{
//duk_push_string(m_ctx, key.c_str());
auto mapObj = duk_push_object(m_ctx);
for (auto& mapNode : node) {
auto itemKey = mapNode.first.Scalar();
parseSceneGlobals(mapNode.second, itemKey, 0, mapObj);
}
duk_put_prop_string(m_ctx, mapObj-1, key.c_str());
}
default:
break;
}
return;
}
开发者ID:NabilNoaman,项目名称:tangram-es,代码行数:57,代码来源:styleContext.cpp
示例17: PushStringVector
void PushStringVector(duk_context* ctx, const Vector<String>& vector)
{
duk_push_array(ctx);
for (unsigned i = 0; i < vector.Size(); ++i)
{
duk_push_string(ctx, vector[i].CString());
duk_put_prop_index(ctx, -2, i);
}
}
开发者ID:realXtend,项目名称:tundra-urho3d,代码行数:10,代码来源:BindingsHelpers.cpp
示例18: test
void test(duk_context *ctx) {
duk_idx_t i, n;
duk_push_undefined(ctx);
duk_push_null(ctx);
duk_push_boolean(ctx, 0);
duk_push_boolean(ctx, 123);
duk_push_number(ctx, 234);
duk_push_string(ctx, "foo");
duk_push_object(ctx);
duk_push_array(ctx);
duk_push_c_function(ctx, my_c_func, DUK_VARARGS);
duk_push_fixed_buffer(ctx, 1024);
duk_push_dynamic_buffer(ctx, 1024);
duk_push_pointer(ctx, (void *) 0xdeadbeefUL);
n = duk_get_top(ctx);
for (i = 0; i < n + 1; i++) { /* end on invalid index on purpose */
duk_int_t typeval, typemask;
typeval = duk_get_type(ctx, i);
typemask = duk_get_type_mask(ctx, i);
printf("stack[%ld] --> type=%ld mask=0x%08lx ",
(long) i, (long) typeval, (long) typemask);
switch(duk_get_type(ctx, i)) {
case DUK_TYPE_NONE: printf("none"); break;
case DUK_TYPE_UNDEFINED: printf("undefined"); break;
case DUK_TYPE_NULL: printf("null"); break;
case DUK_TYPE_BOOLEAN: printf("boolean"); break;
case DUK_TYPE_NUMBER: printf("number"); break;
case DUK_TYPE_STRING: printf("string"); break;
case DUK_TYPE_OBJECT: printf("object"); break;
case DUK_TYPE_BUFFER: printf("buffer"); break;
case DUK_TYPE_POINTER: printf("pointer"); break;
default: printf("unknown(%d)", (int) duk_get_type(ctx, i)); break;
}
printf(" bool=%d num=%lf str=%s buf-is-null=%d ptr=%p",
(int) duk_get_boolean(ctx, i),
(double) duk_get_number(ctx, i),
duk_get_string(ctx, i),
(duk_get_buffer(ctx, i, NULL) == NULL ? 1 : 0),
duk_get_pointer(ctx, i));
printf(" isobj=%d isarr=%d isfunc=%d",
(int) duk_is_object(ctx, i),
(int) duk_is_array(ctx, i),
(int) duk_is_function(ctx, i));
printf("\n");
}
}
开发者ID:fatcerberus,项目名称:duktape,代码行数:54,代码来源:test-types.c
示例19: duk_bi_array_prototype_slice
int duk_bi_array_prototype_slice(duk_context *ctx) {
unsigned int len;
int start, end;
int idx;
int i;
duk_uint32_t res_length = 0;
len = duk__push_this_obj_len_u32(ctx);
duk_push_array(ctx);
/* stack[0] = start
* stack[1] = end
* stack[2] = ToObject(this)
* stack[3] = ToUint32(length)
* stack[4] = result array
*/
start = duk_to_int_clamped(ctx, 0, -len, len); /* FIXME: does not support full 32-bit range */
if (start < 0) {
start = len + start;
}
/* FIXME: could duk_is_undefined() provide defaulting undefined to 'len'
* (the upper limit)?
*/
if (duk_is_undefined(ctx, 1)) {
end = len;
} else {
end = duk_to_int_clamped(ctx, 1, -len, len);
if (end < 0) {
end = len + end;
}
}
DUK_ASSERT(start >= 0 && (duk_uint32_t) start <= len);
DUK_ASSERT(end >= 0 && (duk_uint32_t) end <= len);
idx = 0;
for (i = start; i < end; i++) {
DUK_ASSERT_TOP(ctx, 5);
if (duk_get_prop_index(ctx, 2, i)) {
duk_def_prop_index(ctx, 4, idx, DUK_PROPDESC_FLAGS_WEC);
res_length = idx + 1;
} else {
duk_pop(ctx);
}
idx++;
DUK_ASSERT_TOP(ctx, 5);
}
duk_push_int(ctx, res_length); /* FIXME */
duk_def_prop_stridx(ctx, 4, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_W);
DUK_ASSERT_TOP(ctx, 5);
return 1;
}
开发者ID:andoma,项目名称:duktape,代码行数:54,代码来源:duk_bi_array.c
示例20: ncurses_getmaxyx
static int ncurses_getmaxyx(duk_context *ctx) {
int row, col;
getmaxyx(stdscr, row, col);
duk_push_array(ctx);
duk_push_int(ctx, row);
duk_put_prop_index(ctx, -2, 0);
duk_push_int(ctx, col);
duk_put_prop_index(ctx, -2, 1);
return 1;
}
开发者ID:BpLife,项目名称:duktape,代码行数:12,代码来源:ncurses.c
注:本文中的duk_push_array函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论