Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: misc.cpp
- Revision:
- 0:4ab1392a0142
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/misc.cpp Sun Oct 07 11:49:09 2012 +0000
@@ -0,0 +1,70 @@
+#include "misc.h"
+
+tp_obj *tp_ptr(tp_obj o) {
+ tp_obj *ptr = (tp_obj*)tp_malloc(sizeof(tp_obj)); *ptr = o;
+ return ptr;
+}
+
+tp_obj _tp_dcall(TP,tp_obj fnc(TP)) {
+ return fnc(tp);
+}
+tp_obj _tp_tcall(TP,tp_obj fnc) {
+ if (fnc.fnc.ftype&2) {
+ _tp_list_insert(tp,tp->params.list.val,0,fnc.fnc.info->self);
+ }
+ return _tp_dcall(tp,(tp_obj (*)(tp_vm *))fnc.fnc.val);
+}
+
+tp_obj tp_fnc_new(TP,int t, void *v, tp_obj s, tp_obj g) {
+ tp_obj r = {TP_FNC};
+ _tp_fnc *info = (_tp_fnc*)tp_malloc(sizeof(_tp_fnc));
+ info->self = s;
+ info->globals = g;
+ r.fnc.ftype = t;
+ r.fnc.info = info;
+ r.fnc.val = v;
+ return tp_track(tp,r);
+}
+
+tp_obj tp_def(TP,void *v, tp_obj g) {
+ return tp_fnc_new(tp,1,v,tp_None,g);
+}
+
+tp_obj tp_fnc(TP,tp_obj v(TP)) {
+ return tp_fnc_new(tp,0,(void*)v,tp_None,tp_None);
+}
+
+tp_obj tp_method(TP,tp_obj self,tp_obj v(TP)) {
+ return tp_fnc_new(tp,2,(void*)v,self,tp_None);
+}
+
+tp_obj tp_data(TP,int magic,void *v) {
+ tp_obj r = {TP_DATA};
+ r.data.info = (_tp_data*)tp_malloc(sizeof(_tp_data));
+ r.data.val = v;
+ r.data.magic = magic;
+ return tp_track(tp,r);
+}
+
+tp_obj tp_params(TP) {
+ tp_obj r;
+ tp->params = tp->_params.list.val->items[tp->cur];
+ r = tp->_params.list.val->items[tp->cur];
+ r.list.val->len = 0;
+ return r;
+}
+tp_obj tp_params_n(TP,int n, tp_obj argv[]) {
+ tp_obj r = tp_params(tp);
+ int i; for (i=0; i<n; i++) { _tp_list_append(tp,r.list.val,argv[i]); }
+ return r;
+}
+tp_obj tp_params_v(TP,int n,...) {
+ int i;
+ tp_obj r = tp_params(tp);
+ va_list a; va_start(a,n);
+ for (i=0; i<n; i++) {
+ _tp_list_append(tp,r.list.val,va_arg(a,tp_obj));
+ }
+ va_end(a);
+ return r;
+}