diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-07-27 16:06:51 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-07-27 16:06:51 +0000 |
commit | 527b069653bf06661b8a9650e1f5eb2c6e7cc2bf (patch) | |
tree | 14e5bf14908825218f31ddc713be99be2b2be7e3 /apps/plugins/lua/rockaux.c | |
parent | 74d4d0db0c667887476e825fde274120591ff6e7 (diff) | |
download | rockbox-527b069653bf06661b8a9650e1f5eb2c6e7cc2bf.tar.gz rockbox-527b069653bf06661b8a9650e1f5eb2c6e7cc2bf.zip |
Lua: implement the ^ and % operators
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22070 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lua/rockaux.c')
-rw-r--r-- | apps/plugins/lua/rockaux.c | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/apps/plugins/lua/rockaux.c b/apps/plugins/lua/rockaux.c index 95f2ab169b..ea95f232ab 100644 --- a/apps/plugins/lua/rockaux.c +++ b/apps/plugins/lua/rockaux.c | |||
@@ -31,29 +31,41 @@ int errno = 0; | |||
31 | char *strerror(int errnum) | 31 | char *strerror(int errnum) |
32 | { | 32 | { |
33 | (void) errnum; | 33 | (void) errnum; |
34 | 34 | ||
35 | DEBUGF("strerror()\n"); | 35 | DEBUGF("strerror(%d)\n", errnum); |
36 | 36 | ||
37 | return NULL; | 37 | return NULL; |
38 | } | 38 | } |
39 | 39 | ||
40 | long floor(long x) | 40 | long rb_pow(long x, long n) |
41 | { | 41 | { |
42 | (void) x; | 42 | long pow = 1; |
43 | 43 | unsigned long u; | |
44 | DEBUGF("floor()\n"); | ||
45 | |||
46 | return 0; | ||
47 | } | ||
48 | 44 | ||
49 | long pow(long x, long y) | 45 | if(n <= 0) |
50 | { | 46 | { |
51 | (void) x; | 47 | if(n == 0 || x == 1) |
52 | (void) y; | 48 | return 1; |
53 | 49 | ||
54 | DEBUGF("pow()\n"); | 50 | if(x != -1) |
55 | 51 | return x != 0 ? 1/x : 0; | |
56 | return 0; | 52 | |
53 | n = -n; | ||
54 | } | ||
55 | |||
56 | u = n; | ||
57 | while(1) | ||
58 | { | ||
59 | if(u & 01) | ||
60 | pow *= x; | ||
61 | |||
62 | if(u >>= 1) | ||
63 | x *= x; | ||
64 | else | ||
65 | break; | ||
66 | } | ||
67 | |||
68 | return pow; | ||
57 | } | 69 | } |
58 | 70 | ||
59 | int strcoll(const char * str1, const char * str2) | 71 | int strcoll(const char * str1, const char * str2) |
@@ -91,4 +103,3 @@ const char* get_current_path(lua_State *L, int level) | |||
91 | 103 | ||
92 | return NULL; | 104 | return NULL; |
93 | } | 105 | } |
94 | |||