summaryrefslogtreecommitdiff
path: root/test/colm.d/ext1.lm
blob: 913501ff86fbe765cc3169dd56adde81dafae0e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
str alphcount( Str: str )
= c_alphcount

print "[alphcount( " hello friend " )]

##### CALL #####
#include <colm/tree.h>
#include <colm/bytecode.h>
#include <stdio.h>
#include <string.h>

value_t c_alphcount( program_t *prg, tree_t **sp, value_t a1 )
{
	int p, count = 0;
	for ( p = 0; p < ( (str_t*)a1 )->value->length; p++ ) {
		char c = ( (str_t*)a1 )->value->data[p];
		if ( 'a' <= c && c <= 'z' )
			count++;
	}

	char strc[64];
	sprintf( strc, "%d", count );

	head_t *h = string_alloc_full( prg, strc, strlen( strc ) );
	tree_t *s = construct_string( prg, h );
	colm_tree_upref( prg, s );
	colm_tree_downref( prg, sp, (tree_t*)a1 );
	return (value_t)s;
}
##### EXP #####
11