Mercurial > pub > dyncall > bindings
diff erlang/erldc/c_src/erldctesttargets.c @ 0:0cfcc391201f
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:26:28 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/erlang/erldc/c_src/erldctesttargets.c Thu Mar 19 22:26:28 2015 +0100 @@ -0,0 +1,112 @@ +/* + Copyright (c) 2014 Erik Mackdanz <erikmack@gmail.com> + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#include <stdlib.h> +#include <stdio.h> + +char get_next_char(char in) { + return in+1; +} + +unsigned char get_next_char_u(unsigned char in) { + /* printf("In c, sum is %d\n",in+1); */ + return in+1; +} + +int is_false(int in) { + return !in; +} + +unsigned int dual_increment_u(unsigned int in) { + in++; + in++; + return in; +} + +short times_three(short in) { + return in * 3; +} + +unsigned short times_three_u(unsigned short in) { + return in * 3; +} + +long add_nineteen(long in) { + return in + 19; +} + +unsigned long add_nineteen_u(unsigned long in) { + return in + 19; +} + +long long subtract_four(long long in) { + return in - 4; +} + +unsigned long long subtract_four_u(unsigned long long in) { + return in - 4; +} + +int add_seven(int in) { + return in + 7; +} + +int add_one(int in) { + return in + 1; +} + +void* coolmalloc(int sz) { + void* ptr = malloc(sz); + /* printf("I've allocated at addr %p\n",ptr); */ + return ptr; +} + +void* coolidentity(void* in) { + return in; +} + +void coolsetstr(void* buf, char* val) { + sprintf(buf,"%s",val); +} + +void coolfree(void* ptr) { + /* printf("The value to free is %s\n", ptr); */ + free(ptr); +} + +void noop() {} + +float calculate_pi(float precision) { + return 21.0 / (7.0 * precision); // closer... +} + +double times_pi(double multiplicand) { + return multiplicand * 3.1; // nerd rage! +} + +char* interested_reply(char* yourname) { + int totalmax = 256; + char* buf = malloc(totalmax); + snprintf(buf,totalmax,"Really, %s? My name is Erik.",yourname); + return buf; +} + +char* several_args(long one, char two, char* three, float four) { + char* reply = malloc(100); + snprintf(reply, 100,"Your args were %ld, %c, %s, %.1f", + one,two,three,four); + return reply; +}