Exemplo n.º 1
0
Arquivo: xml.c Projeto: matsuu/konoha
METHOD XmlNode_addChild(Ctx *ctx, knh_sfp_t *sfp)
{
    xmlNodePtr parent = (xmlNodePtr) p_cptr(sfp[0]);
    xmlNodePtr child  = (xmlNodePtr) p_cptr(sfp[1]);
    xmlAddChild(parent,child);
    KNH_RETURN_void(ctx,sfp);
}
Exemplo n.º 2
0
METHOD AOBench_close(Ctx *ctx, knh_sfp_t *sfp)
{
    fwrite(img, 256 * 256 * 3, 1, fp);
    fclose(fp);
    free(img);
    KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 3
0
METHOD AOBench_write(Ctx *ctx, knh_sfp_t *sfp)
{
    int index = p_int(sfp[1]);
    int value = p_int(sfp[2]);

    img[index] = (unsigned char)value;
    KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 4
0
Arquivo: xml.c Projeto: matsuu/konoha
METHOD XmlNode_setAttr(Ctx *ctx, knh_sfp_t *sfp)
{
    xmlNodePtr node= (xmlNodePtr) p_cptr(sfp[0]);
    xmlChar *name = (xmlChar *) p_char(sfp[1]);
    xmlChar *val  = (xmlChar *) p_char(sfp[2]);
    xmlSetProp(node,name,val);
    KNH_RETURN_void(ctx,sfp);
}
Exemplo n.º 5
0
METHOD System_segLed(Ctx *ctx, knh_sfp_t *sfp)
{
    int x = p_int(sfp[1]);
    int dd, asize;
    dd = tk_opn_dev("led", TD_UPDATE);
    tk_swri_dev(dd, DN_LEDEC, &x, sizeof(x), &asize);
    KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 6
0
METHOD System_led(Ctx *ctx, knh_sfp_t *sfp)
{
    int v = p_int(sfp[1]);
    int ddl, asize;
    ddl = tk_opn_dev("led_test",TD_UPDATE);
    tk_swri_dev(ddl, DN_LEMode, &v, sizeof(v), &asize);
    KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 7
0
METHOD AOBench_open(Ctx *ctx, knh_sfp_t *sfp)
{
    fp = fopen("test.ppm", "wb");
    fprintf(fp, "P6\n");
    fprintf(fp, "%d %d\n", 256,256);
    fprintf(fp, "255\n");
    img = (unsigned char *)malloc(256 * 256 * 3);
    counter = 0;
    KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 8
0
METHOD Kernel_insmod(Ctx* ctx, knh_sfp_t* sfp)
{
  char *cmd = alloca(sizeof(char*));
  char *str = "insmod";
  char *filename = p_char(sfp[1]);
  int len = strlen(str)+strlen(filename)+2;
  snprintf(cmd, len, "%s %s", str, filename);
  system(cmd);

  KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 9
0
static METHOD knh__HashMap_set(Ctx *ctx, knh_sfp_t *sfp)
{
	if(IS_IMM(sfp[0].o)) {
		if(IS_NULL(sfp[2].o)) {
			knh__HashMap_remove(ctx, sfp);
			return ;
		}

		knh_Hash_t *o = (knh_Hash_t*)sfp[0].o;
		knh_hcode_t hcode = knh_stack_hashCode(ctx, sfp + 1);
		knh_uintptr_t h =  hcode % DP(o)->hmax;
		knh_hashentry_t *e = DP(o)->array[h];

		while(e != NULL) {
			if(e->hcode == hcode
					&& knh_Object_cid(sfp[1].o) == knh_Object_cid(e->key)
					&& knh_stack_equals(ctx, sfp + 1, e->key)) {
				knh_sfp_boxing(ctx, sfp+2);
				KNH_SETv(ctx, e->value, sfp[2].o);
				KNH_RETURN_void(ctx, sfp);
			}
			e = e->next;
		}

		/* add newentry */ {
			e = new_hashentry(ctx, o);
			e->hcode = hcode;
			knh_sfp_boxing(ctx, sfp+1);
			KNH_INITv(e->key, sfp[1].o);
			knh_sfp_boxing(ctx, sfp+2);
			KNH_INITv(e->value, sfp[2].o);
			e->next = DP(o)->array[h];
			DP(o)->array[h] = e;
			DP(o)->size++;
		}
	}
	KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 10
0
METHOD knh__Script_eval(Ctx *ctx, knh_sfp_t *sfp)
{
	if(IS_NOTNULL(sfp[1].s)) {
		knh_sfp_t *lsfp = KNH_LOCAL(ctx);
		knh_cwb_t cwbbuf, *cwb = knh_cwb_open(ctx, &cwbbuf);
		knh_cwb_write(ctx, cwb, knh_String_tobytes(sfp[1].s));
		knh_cwb_putc(ctx, cwb, '\n');
		InputStream *in = new_BytesInputStream(ctx, cwb->ba, cwb->pos, knh_Bytes_size(cwb->ba));
		KNH_LPUSH(ctx, in);
		DP(in)->uri = URI_EVAL;
		DP(in)->line = 0;
		knh_NameSpace_load(ctx, ctx->share->mainns, in, 1/*isEval*/,0/*isThrowable*/);
		knh_cwb_close(cwb);
		KNH_LOCALBACK(ctx, lsfp);
	}
	KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 11
0
METHOD knh__System_setMethodCompilationListener(Ctx *ctx, knh_sfp_t *sfp)
{
	String *key;
	if(IS_NULL(sfp[2].s)) {
		key = T__("MethodC");
	}
	else {
		knh_cwb_t cwbbuf, *cwb = knh_cwb_openinit(ctx, &cwbbuf, STEXT("MethodC"));
		knh_bytes_t anno = knh_String_tobytes(sfp[2].s);
		if(anno.buf[0] != '@') {
			knh_cwb_putc(ctx, cwb, '@');
		}
		knh_cwb_write(ctx, cwb, anno);
		key = knh_cwb_newString(ctx, cwb);
	}
	KNH_LOCK(ctx, LOCK_SYSTBL, NULL);
	{
		DictMap *dm = DP(ctx->sys)->listenerDictMap;
		knh_DictMap_set(ctx, dm, key, sfp[1].o);
	}
	KNH_UNLOCK(ctx, LOCK_SYSTBL, NULL);
	KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 12
0
static METHOD knh__HashMap_remove(Ctx *ctx, knh_sfp_t *sfp)
{
	if(IS_IMM(sfp[0].o)) {
		knh_Hash_t *o = (knh_Hash_t*)sfp[0].o;
		knh_hcode_t hcode = knh_stack_hashCode(ctx, sfp + 1);
		knh_uintptr_t h =  hcode % DP(o)->hmax;
		knh_hashentry_t *e = DP(o)->array[h];
		knh_hashentry_t **prev_next = &(DP(o)->array[h]);

		while(e != NULL) {
			if(e->hcode == hcode
					&& knh_Object_cid(sfp[1].o) == knh_Object_cid(e->key)
					&& knh_stack_equals(ctx, sfp + 1, e->key)) {
				prev_next[0] = e->next;
				knh_hashentry_collect(ctx, o, e);
				DP(o)->size--;
			}
			prev_next = &(e->next);
			e = e->next;
		}
	}
	KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 13
0
METHOD knh__Script_addHistory(Ctx *ctx, knh_sfp_t *sfp)
{
	knh_add_history(knh_String_tochar(sfp[1].s));
	KNH_RETURN_void(ctx, sfp);
}
Exemplo n.º 14
0
/* @method void XmlReader.close() */
METHOD XmlReader_close(Ctx *ctx, knh_sfp_t *sfp)
{
    xmlTextReaderPtr reader = (xmlTextReaderPtr) p_cptr(sfp[0]);
    xmlTextReaderClose(reader);
    KNH_RETURN_void(ctx,sfp);
}