当前位置: 首页>>代码示例>>C++>>正文


C++ CallArgs::length方法代码示例

本文整理汇总了C++中js::CallArgs::length方法的典型用法代码示例。如果您正苦于以下问题:C++ CallArgs::length方法的具体用法?C++ CallArgs::length怎么用?C++ CallArgs::length使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在js::CallArgs的用法示例。


在下文中一共展示了CallArgs::length方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: InitBlob

NS_IMETHODIMP
nsDOMMultipartFile::Initialize(nsISupports* aOwner,
                               JSContext* aCx,
                               JSObject* aObj,
                               const JS::CallArgs& aArgs)
{
  if (!mIsFile) {
    return InitBlob(aCx, aArgs.length(), aArgs.array(), GetXPConnectNative);
  }

  if (!nsContentUtils::IsCallerChrome()) {
    return InitFile(aCx, aArgs.length(), aArgs.array());
  }

  if (aArgs.length() > 0) {
    JS::Value* argv = aArgs.array();
    if (argv[0].isObject()) {
      JS::Rooted<JSObject*> obj(aCx, &argv[0].toObject());
      if (JS_IsArrayObject(aCx, obj)) {
        return InitFile(aCx, aArgs.length(), aArgs.array());
      }
    }
  }

  return InitChromeFile(aCx, aArgs.length(), aArgs.array());
}
开发者ID:ConradIrwin,项目名称:gecko-dev,代码行数:26,代码来源:nsDOMBlobBuilder.cpp

示例2: construct

void CodeInfo::construct(JSContext* cx, JS::CallArgs args) {
    uassert(ErrorCodes::BadValue,
            "Code needs 0, 1 or 2 arguments",
            args.length() == 0 || args.length() == 1 || args.length() == 2);
    auto scope = getScope(cx);

    JS::RootedObject thisv(cx);

    scope->getProto<CodeInfo>().newObject(&thisv);
    ObjectWrapper o(cx, thisv);

    if (args.length() == 0) {
        o.setString(InternedString::code, "");
    } else if (args.length() == 1) {
        JS::HandleValue codeArg = args.get(0);
        if (!codeArg.isString())
            uasserted(ErrorCodes::BadValue, "code must be a string");

        o.setValue(InternedString::code, codeArg);
    } else {
        if (!args.get(0).isString())
            uasserted(ErrorCodes::BadValue, "code must be a string");
        if (!args.get(1).isObject())
            uasserted(ErrorCodes::BadValue, "scope must be an object");

        o.setValue(InternedString::code, args.get(0));
        o.setValue(InternedString::scope, args.get(1));
    }

    args.rval().setObjectOrNull(thisv);
}
开发者ID:AlexOreshkevich,项目名称:mongo,代码行数:31,代码来源:code.cpp

示例3: construct

void TimestampInfo::construct(JSContext* cx, JS::CallArgs args) {
    auto scope = getScope(cx);

    JS::RootedObject thisv(cx);
    scope->getProto<TimestampInfo>().newObject(&thisv);
    ObjectWrapper o(cx, thisv);

    if (args.length() == 0) {
        o.setNumber("t", 0);
        o.setNumber("i", 0);
    } else if (args.length() == 2) {
        if (!args.get(0).isNumber())
            uasserted(ErrorCodes::BadValue, "Timestamp time must be a number");
        if (!args.get(1).isNumber())
            uasserted(ErrorCodes::BadValue, "Timestamp increment must be a number");

        int64_t t = ValueWriter(cx, args.get(0)).toInt64();
        int64_t largestVal = int64_t(Timestamp::max().getSecs());
        if (t > largestVal)
            uasserted(ErrorCodes::BadValue,
                      str::stream() << "The first argument must be in seconds; " << t
                                    << " is too large (max " << largestVal << ")");

        o.setValue("t", args.get(0));
        o.setValue("i", args.get(1));
    } else {
        uasserted(ErrorCodes::BadValue, "Timestamp needs 0 or 2 arguments");
    }

    args.rval().setObjectOrNull(thisv);
}
开发者ID:nicopoliakov,项目名称:mongo,代码行数:31,代码来源:timestamp.cpp

示例4: construct

void DBInfo::construct(JSContext* cx, JS::CallArgs args) {
    auto scope = getScope(cx);

    if (args.length() != 2)
        uasserted(ErrorCodes::BadValue, "db constructor requires 2 arguments");

    for (unsigned i = 0; i < args.length(); ++i) {
        uassert(ErrorCodes::BadValue,
                "db initializer called with undefined argument",
                !args.get(i).isUndefined());
    }

    JS::RootedObject thisv(cx);
    scope->getProto<DBInfo>().newObject(&thisv);
    ObjectWrapper o(cx, thisv);

    o.setValue(InternedString::_mongol, args.get(0));
    o.setValue(InternedString::_name, args.get(1));

    std::string dbName = ValueWriter(cx, args.get(1)).toString();

    if (!NamespaceString::validDBName(dbName))
        uasserted(ErrorCodes::BadValue,
                  str::stream() << "[" << dbName << "] is not a valid database name");

    args.rval().setObjectOrNull(thisv);
}
开发者ID:stevelyall,项目名称:mongol-db,代码行数:27,代码来源:db.cpp

示例5: InitBlob

NS_IMETHODIMP
nsDOMMultipartFile::Initialize(nsISupports* aOwner,
                               JSContext* aCx,
                               JSObject* aObj,
                               const JS::CallArgs& aArgs)
{
  if (!mIsFile) {
    return InitBlob(aCx, aArgs.length(), aArgs.array(), GetXPConnectNative);
  }
  return InitFile(aCx, aArgs.length(), aArgs.array());
}
开发者ID:PinZhang,项目名称:up-central,代码行数:11,代码来源:nsDOMBlobBuilder.cpp

示例6: funobj

bool
XPC_WN_CallMethod(JSContext* cx, unsigned argc, Value* vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
    MOZ_ASSERT(JS_TypeOfValue(cx, args.calleev()) == JSTYPE_FUNCTION, "bad function");
    RootedObject funobj(cx, &args.callee());

    RootedObject obj(cx, JS_THIS_OBJECT(cx, vp));
    if (!obj)
        return false;

    obj = FixUpThisIfBroken(obj, funobj);
    XPCCallContext ccx(cx, obj, funobj, JSID_VOIDHANDLE, args.length(),
                       args.array(), vp);
    XPCWrappedNative* wrapper = ccx.GetWrapper();
    THROW_AND_RETURN_IF_BAD_WRAPPER(cx, wrapper);

    RefPtr<XPCNativeInterface> iface;
    XPCNativeMember*    member;

    if (!XPCNativeMember::GetCallInfo(funobj, &iface, &member))
        return Throw(NS_ERROR_XPC_CANT_GET_METHOD_INFO, cx);
    ccx.SetCallInfo(iface, member, false);
    return XPCWrappedNative::CallMethod(ccx);
}
开发者ID:mephisto41,项目名称:gecko-dev,代码行数:25,代码来源:XPCWrappedNativeJSOps.cpp

示例7: thisObj

bool
FieldSetterImpl(JSContext *cx, JS::CallArgs args)
{
  const JS::Value &thisv = args.thisv();
  MOZ_ASSERT(ValueHasISupportsPrivate(thisv));

  JS::Rooted<JSObject*> thisObj(cx, &thisv.toObject());

  // We should be in the compartment of |this|. If we got here via nativeCall,
  // |this| is not same-compartment with |callee|, and it's possible via
  // asymmetric security semantics that |args.calleev()| is actually a security
  // wrapper. In this case, we know we want to do an unsafe unwrap, and
  // InstallXBLField knows how to handle cross-compartment pointers.
  bool installed = false;
  JS::Rooted<JSObject*> callee(cx, js::UncheckedUnwrap(&args.calleev().toObject()));
  JS::Rooted<jsid> id(cx);
  if (!InstallXBLField(cx, callee, thisObj, &id, &installed)) {
    return false;
  }

  if (installed) {
    JS::Rooted<JS::Value> v(cx,
                            args.length() > 0 ? args[0] : JS::UndefinedValue());
    if (!::JS_SetPropertyById(cx, thisObj, id, v.address())) {
      return false;
    }
  }
  args.rval().setUndefined();
  return true;
}
开发者ID:vitillo,项目名称:mozilla-central,代码行数:30,代码来源:nsXBLProtoImplField.cpp

示例8:

static JSBool
AfxGlobal_modReplaceOnGlEnd(JSContext *cx, unsigned argc, JS::Value *vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
	if(4 > args.length())
		return JS_FALSE;

	GLint oldActiveTextureArb;
	GLboolean oldTexture2d;
	GLint oldTextureBinding2d;
	GLint oldTextureEnvMode;

	if(!JS::ToInt32(cx, args[0], &oldActiveTextureArb))
		return JS_FALSE;

	oldTexture2d = JS::ToBoolean(args[1]);

	if(!JS::ToInt32(cx, args[2], &oldTextureBinding2d))
		return JS_FALSE;
	if(!JS::ToInt32(cx, args[3], &oldTextureEnvMode))
		return JS_FALSE;

	
	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, oldTextureEnvMode);
	glBindTexture(GL_TEXTURE_2D, oldTextureBinding2d);
	if(!oldTexture2d) glDisable(GL_TEXTURE_2D);

	glActiveTextureARB(oldActiveTextureArb);
	
	args.rval().set(JSVAL_VOID);
    return JS_TRUE;
}
开发者ID:YaLTeR,项目名称:advancedfx,代码行数:32,代码来源:scripting.cpp

示例9: strCvar

static JSBool
AfxGlobal_hlCvarSetValue(JSContext *cx, unsigned argc, JS::Value *vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
	if(2 > args.length())
		return JS_FALSE;

    JSString *str = JS_ValueToString(cx, args[0]);
    if (!str)
        return JS_FALSE;

    char * cvar = JS_EncodeString(cx, str);
	if(!cvar)
		return JS_FALSE;

	std::string strCvar(cvar);

	JS_free(cx, cvar);

	double value;

	if(!JS::ToNumber(cx, args[1], &value))
		return JS_FALSE;

	pEngfuncs->Cvar_SetValue(const_cast<char *>(strCvar.c_str()), (float)value);

	args.rval().set(JSVAL_VOID);
	return JS_TRUE;
}
开发者ID:YaLTeR,项目名称:advancedfx,代码行数:29,代码来源:scripting.cpp

示例10: strFile

static JSBool
AfxGlobal_load(JSContext *cx, unsigned argc, JS::Value *vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
	if(1 > args.length())
		return JS_FALSE;

    JSString *str = JS_ValueToString(cx, args[0]);
    if (!str)
        return JS_FALSE;

    char *filename = JS_EncodeString(cx, str);
	if(!filename)
		return JS_FALSE;

	std::string strFile(filename);

	JS_free(cx, filename);

    JS::RootedObject thisobj(cx, JS_THIS_OBJECT(cx, vp));
    if (!thisobj)
        return false;

	JSScript *script = JS::Compile(cx, thisobj, JS::CompileOptions(cx), strFile.c_str());
	if(!script)
		return JS_FALSE;

	jsval result;

	if(!JS_ExecuteScript(cx, thisobj, script, &result))
		return JS_FALSE;

	args.rval().set(result);
	return JS_TRUE;
}
开发者ID:YaLTeR,项目名称:advancedfx,代码行数:35,代码来源:scripting.cpp

示例11: CreatePath

static JSBool
AfxGlobal_createPath(JSContext *cx, unsigned argc, JS::Value *vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
	if(1 > args.length())
		return JS_FALSE;

    JSString *str = JS_ValueToString(cx, args[0]);
    if (!str)
        return JS_FALSE;

    char *c_str = JS_EncodeString(cx, str);
	if(!c_str)
		return JS_FALSE;

	bool bOk = false;

	std::wstring wPath;
	std::string path;

	if(AnsiStringToWideString(c_str, wPath)
		&& CreatePath(wPath.c_str(), wPath)
		&& WideStringToAnsiString(wPath.c_str(), path))
	{
		JSString * str = JS_NewStringCopyZ(cx, path.c_str());

		args.rval().set(STRING_TO_JSVAL(str));
	}
	else
		args.rval().set(JSVAL_NULL);

	JS_free(cx, c_str);

    return JS_TRUE;
}
开发者ID:YaLTeR,项目名称:advancedfx,代码行数:35,代码来源:scripting.cpp

示例12: AnsiStringToWideString

static JSBool
AfxGlImage_writeBitmap(JSContext *cx, unsigned argc, JS::Value *vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
	if(1 > args.length())
		return JS_FALSE;

	JSObject * jsObj;
	if(!JS_ValueToObject(cx, args.thisv(), &jsObj))
		return JS_FALSE;

	AfxGlImage *afxGlImage = (AfxGlImage *)JS_GetPrivate(jsObj);

    JSString *str = JS_ValueToString(cx, args[0]);
    if (!str)
        return JS_FALSE;

    char *c_str = JS_EncodeString(cx, str);
	if(!c_str)
		return JS_FALSE;

	std::wstring wFileName;

	bool bOk = AnsiStringToWideString(c_str, wFileName);

	JS_free(cx, c_str);

	if(!(bOk
		&& AfxImageUtils::WriteBitmap(afxGlImage, wFileName.c_str())))
		return JS_FALSE;

	args.rval().set(JSVAL_VOID);
    return JS_TRUE;
}
开发者ID:YaLTeR,项目名称:advancedfx,代码行数:34,代码来源:scripting.cpp

示例13: CallArgsFromVp

JS_BINDED_FUNC_IMPL(FakeAudio, removeEventListener) {
	JS::CallArgs args = CallArgsFromVp(argc, vp);
	if (args.length() >= 2) {
		// need to think this through
	}
	return JS_TRUE;
}
开发者ID:funkaster,项目名称:FakeWebGL,代码行数:7,代码来源:FakeAudio.cpp

示例14: WrapJS

static bool
RegisterAppManifest(JSContext* cx, unsigned argc, jsval* vp)
{
    JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
    if (args.length() != 1) {
        JS_ReportError(cx, "Wrong number of arguments");
        return false;
    }
    if (!args[0].isObject()) {
        JS_ReportError(cx, "Expected object as argument 1 to registerAppManifest");
        return false;
    }

    Rooted<JSObject*> arg1(cx, &args[0].toObject());
    nsCOMPtr<nsIFile> file;
    nsresult rv = nsXPConnect::XPConnect()->
        WrapJS(cx, arg1, NS_GET_IID(nsIFile), getter_AddRefs(file));
    if (NS_FAILED(rv)) {
        XPCThrower::Throw(rv, cx);
        return false;
    }
    rv = XRE_AddManifestLocation(NS_APP_LOCATION, file);
    if (NS_FAILED(rv)) {
        XPCThrower::Throw(rv, cx);
        return false;
    }
    return true;
}
开发者ID:haasn,项目名称:gecko-dev,代码行数:28,代码来源:XPCShellImpl.cpp

示例15: getHolder

void SessionInfo::Functions::getTxnNumber::call(JSContext* cx, JS::CallArgs args) {
    auto holder = getHolder(args);
    invariant(holder);
    uassert(ErrorCodes::BadValue, "getTxnNumber takes no arguments", args.length() == 0);

    ValueReader(cx, args.rval()).fromInt64(holder->txnNumber);
}
开发者ID:ShaneHarvey,项目名称:mongo,代码行数:7,代码来源:session.cpp


注:本文中的js::CallArgs::length方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。