Example #1
0
File: blob.c Project: gvx/deja
V new_blob(int size)
{
	V t = make_new_value(T_BLOB, true, sizeof(Blob));
	toBlob(t)->size = size;
	toBlob(t)->data = calloc(size, 1); //TODO: check return value
	return t;
}
Example #2
0
V new_pair(V first, V second)
{
	V t = make_new_value(T_PAIR, true, sizeof(V) * 2);
	toFirst(t) = first;
	toSecond(t) = second;
	return t;
}
Example #3
0
File: blob.c Project: gvx/deja
V clone_blob(V blob)
{
	V t = make_new_value(T_BLOB, true, sizeof(Blob));
	toBlob(t)->size = toBlob(blob)->size;
	toBlob(t)->data = malloc(toBlob(blob)->size); //TODO: check return value
	memcpy(toBlob(t)->data, toBlob(blob)->data, toBlob(blob)->size);
	return t;
}
Example #4
0
V new_list(void)
{
	V t = make_new_value(T_LIST, false, sizeof(Stack));
	toStack(t)->size = 0;
	toStack(t)->used = 0;
	toStack(t)->nodes = NULL;
	return t;
}
Example #5
0
V empty_string_to_value(size_t max, utf8 *adr)
{
	V t = make_new_value(T_STR, true, sizeof(NewString) + max);
	NewString *s = toNewString(t);
	s->size = max;
	s->hash = 0;
	s->length = -1;
	s->text[max] = '\0';
	*adr = s->text;
	return t;
}
Example #6
0
V a_to_string(char* str)
{
	size_t size = strlen(str);
	V t = make_new_value(T_STR, true, sizeof(NewString) + size);
	NewString *s = toNewString(t);
	s->size = size;
	s->hash = 0;
	s->length = -1;
	memcpy(s->text, str, size + 1);
	return t;
}
Example #7
0
V str_to_string(size_t max, char *str)
{
	V t = make_new_value(T_STR, true, sizeof(NewString) + max);
	NewString *s = toNewString(t);
	s->size = max;
	s->hash = 0;
	s->length = -1;
	memcpy(s->text, str, max);
	s->text[max] = '\0';
	return t;
}
Example #8
0
File: scope.c Project: gvx/deja
V create_scope()
{
	if (MAXSCOPE < MAXCACHE)
	{
		ValueScope *sc = &SCOPECACHE[MAXSCOPE];
		sc->v.buffered = false;
		sc->v.type = T_SCOPE;
		sc->v.refs = 1;
		sc->v.color = Black;
		sc->sc.index = ++MAXSCOPE;
		return (V)sc;
	}
	else
	{
		V val = make_new_value(T_SCOPE, false, sizeof(Scope));
		toScope(val)->index = 0;
		return val;
	}
}
Example #9
0
V new_sized_dict(int size)
{
	V t = make_new_value(T_DICT, false, sizeof(HashMap));
	hashmap_from_value(t, size);
	return t;
}