コード例 #1
0
ファイル: xs6Host.c プロジェクト: dadongdong/kinomajs
void fx_xs_debug_setBreakpoint(txMachine* the)
{
	if ((mxArgc < 1) || (!mxIsStringPrimitive(mxArgv(0))))
		mxTypeError("file is no string");
	if ((mxArgc < 2) || (!mxIsStringPrimitive(mxArgv(1))))
		mxTypeError("line is no string");
	fxSetBreakpoint(the, mxArgv(0)->value.string, mxArgv(1)->value.string);
}
コード例 #2
0
ファイル: xs6JSON.c プロジェクト: basuke/kinomajs
void fxSerializeJSON(txMachine* the, txJSONSerializer* theSerializer)
{
	txSlot* aSlot;
	txInteger aFlag;
	
	aSlot = fxGetInstance(the, mxThis);
	theSerializer->offset = 0;
	theSerializer->size = 1024;
	theSerializer->buffer = c_malloc(1024);
	if (!theSerializer->buffer)
		mxUnknownError("out of memory");

	if (mxArgc > 1) {
		aSlot = mxArgv(1);
		if (mxIsReference(aSlot)) {
			aSlot = fxGetInstance(the, aSlot);
			if (mxIsFunction(aSlot))
				theSerializer->replacer = mxArgv(1);
			else if (mxIsArray(aSlot))
				mxSyntaxError("not yet implememented");
		}
	}
	if (mxArgc > 2) {
		aSlot = mxArgv(2);
		if (mxIsReference(aSlot)) {
			aSlot = fxGetInstance(the, aSlot);
			if (mxIsNumber(aSlot) || mxIsString(aSlot))
				aSlot = aSlot->next;
		}
		if ((aSlot->kind == XS_INTEGER_KIND) || (aSlot->kind == XS_NUMBER_KIND)) {
			txInteger aCount = fxToInteger(the, aSlot), anIndex;
			if (aCount < 0)
				aCount = 0;
			else if (aCount > 10)
				aCount = 10;
			for (anIndex = 0; anIndex < aCount; anIndex++)
				theSerializer->indent[anIndex] = ' ';
		}
		else if (mxIsStringPrimitive(aSlot))
			c_strncpy((char *)theSerializer->indent, aSlot->value.string, 10);
	}

	theSerializer->stack = the->stack;
	mxPush(mxObjectPrototype);
	fxNewObjectInstance(the);
	aFlag = 0;
	if (mxArgc > 0)
		mxPushSlot(mxArgv(0));
	else
		mxPushUndefined();
	mxPush(mxEmptyString);
	fxSerializeJSONProperty(the, theSerializer, &aFlag);
	the->stack++;
}
コード例 #3
0
ファイル: xs6Host.c プロジェクト: dadongdong/kinomajs
void fx_xs_debug_setAddress(txMachine* the)
{
	if ((mxArgc < 1) || (!mxIsStringPrimitive(mxArgv(0))))
		mxTypeError("address is no string");
	fxSetAddress(the, mxArgv(0)->value.string);
}