mirror of
https://github.com/carp-lang/Carp.git
synced 2024-11-04 01:25:04 +03:00
core: add a byte type
This commit is contained in:
parent
16e9418d25
commit
f1f252639f
61
core/Byte.carp
Normal file
61
core/Byte.carp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
(system-include "carp_byte.h")
|
||||||
|
|
||||||
|
(defmodule Byte
|
||||||
|
(register + (λ [Byte Byte] Byte))
|
||||||
|
(register - (λ [Byte Byte] Byte))
|
||||||
|
(register * (λ [Byte Byte] Byte))
|
||||||
|
(register / (λ [Byte Byte] Byte))
|
||||||
|
(register < (λ [Byte Byte] Bool))
|
||||||
|
(register > (λ [Byte Byte] Bool))
|
||||||
|
(register = (λ [Byte Byte] Bool))
|
||||||
|
(register mod (λ [Byte Byte] Byte))
|
||||||
|
(register bit-shift-left (λ [Byte Byte] Byte))
|
||||||
|
(register bit-shift-right (λ [Byte Byte] Byte))
|
||||||
|
(register bit-and (λ [Byte Byte] Byte))
|
||||||
|
(register bit-or (λ [Byte Byte] Byte))
|
||||||
|
(register bit-xor (λ [Byte Byte] Byte))
|
||||||
|
(register bit-not (λ [Byte] Byte))
|
||||||
|
(register inc (λ [Byte] Byte))
|
||||||
|
(register dec (λ [Byte] Byte))
|
||||||
|
(register copy (λ [&Byte] Byte))
|
||||||
|
(register to-int (λ [Byte] Int))
|
||||||
|
(register from-int (λ [Int] Byte))
|
||||||
|
|
||||||
|
(defn even? [a] (= (mod a 2b) 0b))
|
||||||
|
(defn odd? [a] (not (even? a)))
|
||||||
|
|
||||||
|
(defn zero [] 0b)
|
||||||
|
|
||||||
|
(defn add-ref [x y]
|
||||||
|
(Byte.+ @x @y))
|
||||||
|
|
||||||
|
;; Move to generic math module?
|
||||||
|
(defn clamp [min, max, val]
|
||||||
|
(if (> val max)
|
||||||
|
max
|
||||||
|
(if (< val min)
|
||||||
|
min
|
||||||
|
val)))
|
||||||
|
|
||||||
|
(doc pow "Raise x to the power of y.")
|
||||||
|
(defn pow [x y]
|
||||||
|
(let-do [r 1b]
|
||||||
|
(while (/= y 0b)
|
||||||
|
(do
|
||||||
|
(when (/= (bit-and y 1b) 0b)
|
||||||
|
(set! r (* r x)))
|
||||||
|
(set! y (/ y 2b))
|
||||||
|
(set! x (* x x))))
|
||||||
|
r))
|
||||||
|
)
|
||||||
|
|
||||||
|
(defmodule ByteRef
|
||||||
|
(defn = [a b]
|
||||||
|
(Byte.= @a @b))
|
||||||
|
|
||||||
|
(defn < [a b]
|
||||||
|
(Byte.< @a @b))
|
||||||
|
|
||||||
|
(defn > [a b]
|
||||||
|
(Byte.> @a @b))
|
||||||
|
)
|
@ -23,6 +23,7 @@
|
|||||||
(load "Result.carp")
|
(load "Result.carp")
|
||||||
(load "Dynamic.carp")
|
(load "Dynamic.carp")
|
||||||
(load "Format.carp")
|
(load "Format.carp")
|
||||||
|
(load "Byte.carp")
|
||||||
(load "Int.carp")
|
(load "Int.carp")
|
||||||
(load "Long.carp")
|
(load "Long.carp")
|
||||||
(load "Double.carp")
|
(load "Double.carp")
|
||||||
|
@ -179,6 +179,12 @@
|
|||||||
(register from-string (λ [&String] Int))
|
(register from-string (λ [&String] Int))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(defmodule Byte
|
||||||
|
(register str (Fn [Byte] String))
|
||||||
|
(register format (Fn [&String Byte] String))
|
||||||
|
(register from-string (λ [&String] Byte))
|
||||||
|
)
|
||||||
|
|
||||||
(defmodule Float
|
(defmodule Float
|
||||||
(register str (Fn [Float] String))
|
(register str (Fn [Float] String))
|
||||||
(register format (Fn [&String Float] String))
|
(register format (Fn [&String Float] String))
|
||||||
|
36
core/carp_byte.h
Normal file
36
core/carp_byte.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
typedef uint8_t byte;
|
||||||
|
|
||||||
|
uint8_t Byte__PLUS_(uint8_t x, uint8_t y) { return x + y; }
|
||||||
|
uint8_t Byte__MINUS_(uint8_t x, uint8_t y) { return x - y; }
|
||||||
|
uint8_t Byte__MUL_(uint8_t x, uint8_t y) { return x * y; }
|
||||||
|
uint8_t Byte__DIV_(uint8_t x, uint8_t y) { return x / y; }
|
||||||
|
bool Byte__EQ_(uint8_t x, uint8_t y) { return x == y; }
|
||||||
|
bool Byte__LT_(uint8_t x, uint8_t y) { return x < y; }
|
||||||
|
bool Byte__GT_(uint8_t x, uint8_t y) { return x > y; }
|
||||||
|
|
||||||
|
uint8_t Byte_inc(uint8_t x) { return x + 1; }
|
||||||
|
uint8_t Byte_dec(uint8_t x) { return x - 1; }
|
||||||
|
uint8_t Byte_bit_MINUS_shift_MINUS_left(uint8_t x, uint8_t y) { return x << y; }
|
||||||
|
uint8_t Byte_bit_MINUS_shift_MINUS_right(uint8_t x, uint8_t y) { return x >> y; }
|
||||||
|
uint8_t Byte_bit_MINUS_and(uint8_t x, uint8_t y) { return x & y; }
|
||||||
|
uint8_t Byte_bit_MINUS_or(uint8_t x, uint8_t y) { return x | y; }
|
||||||
|
uint8_t Byte_bit_MINUS_xor(uint8_t x, uint8_t y) { return x ^ y; }
|
||||||
|
uint8_t Byte_bit_MINUS_not(uint8_t x) { return ~x; }
|
||||||
|
|
||||||
|
uint8_t Byte_copy(const uint8_t *x) { return *x; }
|
||||||
|
|
||||||
|
uint8_t Byte_mod(uint8_t x, uint8_t divider) {
|
||||||
|
return x % divider;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Byte_mask(uint8_t a, uint8_t b) {
|
||||||
|
return a & b;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Byte_to_MINUS_int(uint8_t a) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Byte_from_MINUS_int(int a) {
|
||||||
|
return a;
|
||||||
|
}
|
@ -243,6 +243,24 @@ long Long_from_MINUS_string(const String *s) {
|
|||||||
return atol(*s);
|
return atol(*s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String Byte_str(uint8_t x) {
|
||||||
|
int size = snprintf(NULL, 0, "%ub", x)+1;
|
||||||
|
String buffer = CARP_MALLOC(size);
|
||||||
|
snprintf(buffer, size, "%ub", x);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
String Byte_format(const String* str, uint8_t x) {
|
||||||
|
int size = snprintf(NULL, 0, *str, x)+1;
|
||||||
|
String buffer = CARP_MALLOC(size);
|
||||||
|
snprintf(buffer, size, *str, x);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Byte_from_MINUS_string(const String *s) {
|
||||||
|
return atoi(*s);
|
||||||
|
}
|
||||||
|
|
||||||
int String_index_MINUS_of_MINUS_from(const String *s, char c, int i) {
|
int String_index_MINUS_of_MINUS_from(const String *s, char c, int i) {
|
||||||
/* Return index of first occurrence of `c` in `s` AFTER index i
|
/* Return index of first occurrence of `c` in `s` AFTER index i
|
||||||
* Returns -1 if not found
|
* Returns -1 if not found
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
684
docs/core/Byte.html
Normal file
684
docs/core/Byte.html
Normal file
@ -0,0 +1,684 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||||
|
<link rel="stylesheet" href="carp_style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="content">
|
||||||
|
<div class="logo">
|
||||||
|
<a href="http://github.com/carp-lang/Carp">
|
||||||
|
<img src="logo.png">
|
||||||
|
</a>
|
||||||
|
<div class="title">
|
||||||
|
core
|
||||||
|
</div>
|
||||||
|
<div class="index">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="Dynamic.html">
|
||||||
|
Dynamic
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Int.html">
|
||||||
|
Int
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Long.html">
|
||||||
|
Long
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Bool.html">
|
||||||
|
Bool
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Float.html">
|
||||||
|
Float
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Double.html">
|
||||||
|
Double
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Vector2.html">
|
||||||
|
Vector2
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Vector3.html">
|
||||||
|
Vector3
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="VectorN.html">
|
||||||
|
VectorN
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Geometry.html">
|
||||||
|
Geometry
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Statistics.html">
|
||||||
|
Statistics
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="String.html">
|
||||||
|
String
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Char.html">
|
||||||
|
Char
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Pattern.html">
|
||||||
|
Pattern
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Array.html">
|
||||||
|
Array
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="IO.html">
|
||||||
|
IO
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="System.html">
|
||||||
|
System
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Debug.html">
|
||||||
|
Debug
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Test.html">
|
||||||
|
Test
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Bench.html">
|
||||||
|
Bench
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Map.html">
|
||||||
|
Map
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Maybe.html">
|
||||||
|
Maybe
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Result.html">
|
||||||
|
Result
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
Byte
|
||||||
|
</h1>
|
||||||
|
<div class="module-description">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#*">
|
||||||
|
<h3 id="*">
|
||||||
|
*
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#+">
|
||||||
|
<h3 id="+">
|
||||||
|
+
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#-">
|
||||||
|
<h3 id="-">
|
||||||
|
-
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#/">
|
||||||
|
<h3 id="/">
|
||||||
|
/
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#<">
|
||||||
|
<h3 id="<">
|
||||||
|
<
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Bool)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#=">
|
||||||
|
<h3 id="=">
|
||||||
|
=
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Bool)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#>">
|
||||||
|
<h3 id=">">
|
||||||
|
>
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Bool)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#add-ref">
|
||||||
|
<h3 id="add-ref">
|
||||||
|
add-ref
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
defn
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [&Byte, &Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<pre class="args">
|
||||||
|
(add-ref x y)
|
||||||
|
</pre>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#bit-and">
|
||||||
|
<h3 id="bit-and">
|
||||||
|
bit-and
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#bit-not">
|
||||||
|
<h3 id="bit-not">
|
||||||
|
bit-not
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#bit-or">
|
||||||
|
<h3 id="bit-or">
|
||||||
|
bit-or
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#bit-shift-left">
|
||||||
|
<h3 id="bit-shift-left">
|
||||||
|
bit-shift-left
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#bit-shift-right">
|
||||||
|
<h3 id="bit-shift-right">
|
||||||
|
bit-shift-right
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#bit-xor">
|
||||||
|
<h3 id="bit-xor">
|
||||||
|
bit-xor
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#clamp">
|
||||||
|
<h3 id="clamp">
|
||||||
|
clamp
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
defn
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [a, a, a] a)
|
||||||
|
</p>
|
||||||
|
<pre class="args">
|
||||||
|
(clamp min max val)
|
||||||
|
</pre>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#copy">
|
||||||
|
<h3 id="copy">
|
||||||
|
copy
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [&Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#dec">
|
||||||
|
<h3 id="dec">
|
||||||
|
dec
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#even?">
|
||||||
|
<h3 id="even?">
|
||||||
|
even?
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
defn
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] Bool)
|
||||||
|
</p>
|
||||||
|
<pre class="args">
|
||||||
|
(even? a)
|
||||||
|
</pre>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#format">
|
||||||
|
<h3 id="format">
|
||||||
|
format
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [&String, Byte] String)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#from-int">
|
||||||
|
<h3 id="from-int">
|
||||||
|
from-int
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Int] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#from-string">
|
||||||
|
<h3 id="from-string">
|
||||||
|
from-string
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [&String] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#inc">
|
||||||
|
<h3 id="inc">
|
||||||
|
inc
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#mod">
|
||||||
|
<h3 id="mod">
|
||||||
|
mod
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#odd?">
|
||||||
|
<h3 id="odd?">
|
||||||
|
odd?
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
defn
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] Bool)
|
||||||
|
</p>
|
||||||
|
<pre class="args">
|
||||||
|
(odd? a)
|
||||||
|
</pre>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#pow">
|
||||||
|
<h3 id="pow">
|
||||||
|
pow
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
defn
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte, Byte] Byte)
|
||||||
|
</p>
|
||||||
|
<pre class="args">
|
||||||
|
(pow x y)
|
||||||
|
</pre>
|
||||||
|
<p class="doc">
|
||||||
|
<p>Raise x to the power of y.</p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#str">
|
||||||
|
<h3 id="str">
|
||||||
|
str
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] String)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#to-int">
|
||||||
|
<h3 id="to-int">
|
||||||
|
to-int
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
external
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [Byte] Int)
|
||||||
|
</p>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="binder">
|
||||||
|
<a class="anchor" href="#zero">
|
||||||
|
<h3 id="zero">
|
||||||
|
zero
|
||||||
|
</h3>
|
||||||
|
</a>
|
||||||
|
<div class="description">
|
||||||
|
defn
|
||||||
|
</div>
|
||||||
|
<p class="sig">
|
||||||
|
(λ [] Byte)
|
||||||
|
</p>
|
||||||
|
<pre class="args">
|
||||||
|
(zero)
|
||||||
|
</pre>
|
||||||
|
<p class="doc">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -23,6 +23,11 @@
|
|||||||
Int
|
Int
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="Byte.html">
|
||||||
|
Byte
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="Long.html">
|
<a href="Long.html">
|
||||||
Long
|
Long
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
(save-docs Dynamic
|
(save-docs Dynamic
|
||||||
Int
|
Int
|
||||||
|
Byte
|
||||||
Long
|
Long
|
||||||
Bool
|
Bool
|
||||||
Float
|
Float
|
||||||
|
@ -98,6 +98,7 @@ toC toCMode (Binder meta root) = emitterSrc (execState (visit startingIndent roo
|
|||||||
Arr _ -> visitArray indent xobj
|
Arr _ -> visitArray indent xobj
|
||||||
Num IntTy num -> return (show (round num :: Int))
|
Num IntTy num -> return (show (round num :: Int))
|
||||||
Num LongTy num -> return (show (round num :: Int) ++ "l")
|
Num LongTy num -> return (show (round num :: Int) ++ "l")
|
||||||
|
Num ByteTy num -> return (show (round num :: Int))
|
||||||
Num FloatTy num -> return (show num ++ "f")
|
Num FloatTy num -> return (show num ++ "f")
|
||||||
Num DoubleTy num -> return (show num)
|
Num DoubleTy num -> return (show num)
|
||||||
Num _ _ -> error "Can't emit invalid number type."
|
Num _ _ -> error "Can't emit invalid number type."
|
||||||
|
@ -257,6 +257,7 @@ pretty = visit 0
|
|||||||
Dict dict -> "{" ++ joinWithSpace (map (visit indent) (concatMap (\(a, b) -> [a, b]) (Map.toList dict))) ++ "}"
|
Dict dict -> "{" ++ joinWithSpace (map (visit indent) (concatMap (\(a, b) -> [a, b]) (Map.toList dict))) ++ "}"
|
||||||
Num IntTy num -> show (round num :: Int)
|
Num IntTy num -> show (round num :: Int)
|
||||||
Num LongTy num -> show num ++ "l"
|
Num LongTy num -> show num ++ "l"
|
||||||
|
Num ByteTy num -> show num
|
||||||
Num FloatTy num -> show num ++ "f"
|
Num FloatTy num -> show num ++ "f"
|
||||||
Num DoubleTy num -> show num
|
Num DoubleTy num -> show num
|
||||||
Num _ _ -> error "Invalid number type."
|
Num _ _ -> error "Invalid number type."
|
||||||
@ -600,6 +601,7 @@ xobjToTy (XObj (Sym (SymPath _ "Int") _) _ _) = Just IntTy
|
|||||||
xobjToTy (XObj (Sym (SymPath _ "Float") _) _ _) = Just FloatTy
|
xobjToTy (XObj (Sym (SymPath _ "Float") _) _ _) = Just FloatTy
|
||||||
xobjToTy (XObj (Sym (SymPath _ "Double") _) _ _) = Just DoubleTy
|
xobjToTy (XObj (Sym (SymPath _ "Double") _) _ _) = Just DoubleTy
|
||||||
xobjToTy (XObj (Sym (SymPath _ "Long") _) _ _) = Just LongTy
|
xobjToTy (XObj (Sym (SymPath _ "Long") _) _ _) = Just LongTy
|
||||||
|
xobjToTy (XObj (Sym (SymPath _ "Byte") _) _ _) = Just ByteTy
|
||||||
xobjToTy (XObj (Sym (SymPath _ "String") _) _ _) = Just StringTy
|
xobjToTy (XObj (Sym (SymPath _ "String") _) _ _) = Just StringTy
|
||||||
xobjToTy (XObj (Sym (SymPath _ "Pattern") _) _ _) = Just PatternTy
|
xobjToTy (XObj (Sym (SymPath _ "Pattern") _) _ _) = Just PatternTy
|
||||||
xobjToTy (XObj (Sym (SymPath _ "Char") _) _ _) = Just CharTy
|
xobjToTy (XObj (Sym (SymPath _ "Char") _) _ _) = Just CharTy
|
||||||
|
@ -58,6 +58,12 @@ integer :: Parsec.Parsec String ParseState XObj
|
|||||||
integer = do (i, num) <- maybeSigned
|
integer = do (i, num) <- maybeSigned
|
||||||
return (XObj (Num IntTy (read num)) i Nothing)
|
return (XObj (Num IntTy (read num)) i Nothing)
|
||||||
|
|
||||||
|
byte :: Parsec.Parsec String ParseState XObj
|
||||||
|
byte = do (i, num) <- maybeSigned
|
||||||
|
_ <- Parsec.char 'b'
|
||||||
|
incColumn 1
|
||||||
|
return (XObj (Num ByteTy (read num)) i Nothing)
|
||||||
|
|
||||||
long :: Parsec.Parsec String ParseState XObj
|
long :: Parsec.Parsec String ParseState XObj
|
||||||
long = do (i, num) <- maybeSigned
|
long = do (i, num) <- maybeSigned
|
||||||
_ <- Parsec.char 'l'
|
_ <- Parsec.char 'l'
|
||||||
@ -67,6 +73,7 @@ long = do (i, num) <- maybeSigned
|
|||||||
number :: Parsec.Parsec String ParseState XObj
|
number :: Parsec.Parsec String ParseState XObj
|
||||||
number = Parsec.try float <|>
|
number = Parsec.try float <|>
|
||||||
Parsec.try floatNoPeriod <|>
|
Parsec.try floatNoPeriod <|>
|
||||||
|
Parsec.try byte <|>
|
||||||
Parsec.try double <|>
|
Parsec.try double <|>
|
||||||
Parsec.try long <|>
|
Parsec.try long <|>
|
||||||
Parsec.try integer
|
Parsec.try integer
|
||||||
|
@ -27,6 +27,7 @@ import Util
|
|||||||
-- | Carp types.
|
-- | Carp types.
|
||||||
data Ty = IntTy
|
data Ty = IntTy
|
||||||
| LongTy
|
| LongTy
|
||||||
|
| ByteTy
|
||||||
| BoolTy
|
| BoolTy
|
||||||
| FloatTy
|
| FloatTy
|
||||||
| DoubleTy
|
| DoubleTy
|
||||||
@ -60,6 +61,7 @@ instance Show Ty where
|
|||||||
show FloatTy = "Float"
|
show FloatTy = "Float"
|
||||||
show DoubleTy = "Double"
|
show DoubleTy = "Double"
|
||||||
show LongTy = "Long"
|
show LongTy = "Long"
|
||||||
|
show ByteTy = "Byte"
|
||||||
show BoolTy = "Bool"
|
show BoolTy = "Bool"
|
||||||
show StringTy = "String"
|
show StringTy = "String"
|
||||||
show PatternTy = "Pattern"
|
show PatternTy = "Pattern"
|
||||||
@ -107,6 +109,7 @@ tyToCManglePtr _ BoolTy = "bool"
|
|||||||
tyToCManglePtr _ FloatTy = "float"
|
tyToCManglePtr _ FloatTy = "float"
|
||||||
tyToCManglePtr _ DoubleTy = "double"
|
tyToCManglePtr _ DoubleTy = "double"
|
||||||
tyToCManglePtr _ LongTy = "long"
|
tyToCManglePtr _ LongTy = "long"
|
||||||
|
tyToCManglePtr _ ByteTy = "uint8_t"
|
||||||
tyToCManglePtr _ StringTy = "String"
|
tyToCManglePtr _ StringTy = "String"
|
||||||
tyToCManglePtr _ PatternTy = "Pattern"
|
tyToCManglePtr _ PatternTy = "Pattern"
|
||||||
tyToCManglePtr _ CharTy = "char"
|
tyToCManglePtr _ CharTy = "char"
|
||||||
|
50
test/byte_math.carp
Normal file
50
test/byte_math.carp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
(load "Test.carp")
|
||||||
|
|
||||||
|
(use-all Byte Test)
|
||||||
|
|
||||||
|
(deftest test
|
||||||
|
(assert-equal test
|
||||||
|
1b
|
||||||
|
(min 1b 2b)
|
||||||
|
"min works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
2b
|
||||||
|
(max 1b 2b)
|
||||||
|
"max works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
false
|
||||||
|
(even? 3b)
|
||||||
|
"even? works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
true
|
||||||
|
(odd? 3b)
|
||||||
|
"odd? works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
1b
|
||||||
|
(bit-and 3b 5b)
|
||||||
|
"bit-and works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
5b
|
||||||
|
(bit-or 1b 4b)
|
||||||
|
"bit-or works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
4b
|
||||||
|
(bit-xor 1b 5b)
|
||||||
|
"bit-xor works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
1b
|
||||||
|
(bit-not 254b)
|
||||||
|
"bit-not works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
8b
|
||||||
|
(bit-shift-left 2b 2b)
|
||||||
|
"bit-shift-left works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
2b
|
||||||
|
(bit-shift-right 16b 3b)
|
||||||
|
"bit-shift-right works as expected")
|
||||||
|
(assert-equal test
|
||||||
|
1
|
||||||
|
(/ 3 2)
|
||||||
|
"integer division truncates as expected")
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user