Esempio n. 1
0
File: main.c Progetto: xtao/c
static Val *
randstruct(int depth)
{
	Val *r, *p;
	int i, n; 
	char buff[1024];

	r = gcmalloc(sizeof(Val));
	r->t = STRUCT;
	r->Cstruct.members = vec();
	n = rand() % MAXSTRUCTM;
	for(i = 0; i < n; i++)
		vecappend(r->Cstruct.members, randval(depth + 1));
	snprintf(buff, sizeof buff, "s%d", structcount++);
	r->Cstruct.name = gcstrdup(buff);
	printf("struct %s {\n", r->Cstruct.name);
	for(i = 0; i < r->Cstruct.members->len; i++) {
		p = vecget(r->Cstruct.members, i);
		printf("\t");
		printvaltype(p);
		printf(" m%d;\n", i);
	}
	printf("};\n");
	return r;
}
Esempio n. 2
0
void thThrow(char *name)
{
	struct bgbgc_handler_s *ctx;

	if(dyex_handler_tls<0)dyex_handler_tls=thAllocTls();

	ctx=thGetTlsValue(dyex_handler_tls);

	if(ctx->final_f)
		ctx->final_f(ctx->data);

	ctx->str=gcstrdup(name);
	longjmp(ctx->jmp, -1);
}