Compare commits
2 commits
21bb33193a
...
d98afc294d
Author | SHA1 | Date | |
---|---|---|---|
d98afc294d | |||
bce52e9fcf |
8 changed files with 146 additions and 38 deletions
|
@ -3,16 +3,16 @@
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_angle_as_degrees_to_turns_float ()
|
morph_angle_as_degrees_to_turns_float ()
|
||||||
Angle ~ Degrees ~ ℝ ~ native.Float
|
Angle ~ Degrees ~ ℝ ~ native.Float32
|
||||||
--> Angle ~ Turns ~ ℝ ~ native.Float
|
--> Angle ~ Turns ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = *src / 360.0;
|
*dst = *src / 360.0;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_angle_as_degrees_to_turns_double ()
|
morph_angle_as_degrees_to_turns_double ()
|
||||||
Angle ~ Degrees ~ ℝ ~ native.Double
|
Angle ~ Degrees ~ ℝ ~ native.Float64
|
||||||
--> Angle ~ Turns ~ ℝ ~ native.Double
|
--> Angle ~ Turns ~ ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
*dst = *src / 360.0;
|
*dst = *src / 360.0;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -20,16 +20,16 @@ morph_angle_as_degrees_to_turns_double ()
|
||||||
|
|
||||||
|
|
||||||
morph_angle_as_turns_to_degrees_float ()
|
morph_angle_as_turns_to_degrees_float ()
|
||||||
Angle ~ Turns ~ ℝ ~ native.Float
|
Angle ~ Turns ~ ℝ ~ native.Float32
|
||||||
--> Angle ~ Degrees ~ ℝ ~ native.Float
|
--> Angle ~ Degrees ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = *src * 360.0;
|
*dst = *src * 360.0;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_angle_as_turns_to_degrees_double ()
|
morph_angle_as_turns_to_degrees_double ()
|
||||||
Angle ~ Turns ~ ℝ ~ native.Double
|
Angle ~ Turns ~ ℝ ~ native.Float64
|
||||||
--> Angle ~ Degrees ~ ℝ ~ native.Double
|
--> Angle ~ Degrees ~ ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
*dst = *src * 360.0;
|
*dst = *src * 360.0;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -39,16 +39,16 @@ morph_angle_as_turns_to_degrees_double ()
|
||||||
|
|
||||||
|
|
||||||
morph_angle_as_radians_to_turns_float ()
|
morph_angle_as_radians_to_turns_float ()
|
||||||
Angle ~ Radians ~ ℝ ~ native.Float
|
Angle ~ Radians ~ ℝ ~ native.Float32
|
||||||
--> Angle ~ Turns ~ ℝ ~ native.Float
|
--> Angle ~ Turns ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = *src / PHI;
|
*dst = *src / PHI;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_angle_as_radians_to_turns_double ()
|
morph_angle_as_radians_to_turns_double ()
|
||||||
Angle ~ Radians ~ ℝ ~ native.Double
|
Angle ~ Radians ~ ℝ ~ native.Float64
|
||||||
--> Angle ~ Turns ~ ℝ ~ native.Double
|
--> Angle ~ Turns ~ ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
*dst = *src / PHI;
|
*dst = *src / PHI;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -56,16 +56,16 @@ morph_angle_as_radians_to_turns_double ()
|
||||||
|
|
||||||
|
|
||||||
morph_angle_as_turns_to_radians_float ()
|
morph_angle_as_turns_to_radians_float ()
|
||||||
Angle ~ Turns ~ ℝ ~ native.Float
|
Angle ~ Turns ~ ℝ ~ native.Float32
|
||||||
--> Angle ~ Radians ~ ℝ ~ native.Float
|
--> Angle ~ Radians ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = *src * PHI;
|
*dst = *src * PHI;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_angle_as_degrees_to_radians_double ()
|
morph_angle_as_degrees_to_radians_double ()
|
||||||
Angle ~ Turns ~ ℝ ~ native.Double
|
Angle ~ Turns ~ ℝ ~ native.Float64
|
||||||
--> Angle ~ Radians ~ ℝ ~ native.Double
|
--> Angle ~ Radians ~ ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
*dst = *src * PHI;
|
*dst = *src * PHI;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
morph_real_as_decimalstr_to_float ()
|
morph_real_as_decimalstr_to_float ()
|
||||||
ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
||||||
--> ℝ ~ native.Float
|
--> ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
sscanf(src, "%f", dst);
|
sscanf(src, "%f", dst);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -12,14 +12,14 @@ morph_real_as_decimalstr_to_float ()
|
||||||
|
|
||||||
morph_real_as_decimalstr_to_double ()
|
morph_real_as_decimalstr_to_double ()
|
||||||
ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
||||||
--> ℝ ~ native.Double
|
--> ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
sscanf(src, "%lf", dst);
|
sscanf(src, "%lf", dst);
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_real_as_float_to_decimalstr ()
|
morph_real_as_float_to_decimalstr ()
|
||||||
ℝ ~ native.Float
|
ℝ ~ native.Float32
|
||||||
--> ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
--> ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
||||||
```
|
```
|
||||||
sprintf(dst, "%f", *src);
|
sprintf(dst, "%f", *src);
|
||||||
|
@ -27,7 +27,7 @@ morph_real_as_float_to_decimalstr ()
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_real_as_double_to_decimalstr ()
|
morph_real_as_double_to_decimalstr ()
|
||||||
ℝ ~ native.Double
|
ℝ ~ native.Float64
|
||||||
--> ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
--> ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>
|
||||||
```
|
```
|
||||||
sprintf(dst, "%f", *src);
|
sprintf(dst, "%f", *src);
|
||||||
|
@ -36,16 +36,16 @@ morph_real_as_double_to_decimalstr ()
|
||||||
|
|
||||||
|
|
||||||
morph_real_as_float_to_double ()
|
morph_real_as_float_to_double ()
|
||||||
ℝ ~ native.Float
|
ℝ ~ native.Float32
|
||||||
--> ℝ ~ native.Double
|
--> ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
*dst = *src;
|
*dst = *src;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_real_as_double_to_float ()
|
morph_real_as_double_to_float ()
|
||||||
ℝ ~ native.Double
|
ℝ ~ native.Float64
|
||||||
--> ℝ ~ native.Float
|
--> ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
fprintf(stderr, "Warning: morphin Double -> Float. Precision loss!");
|
fprintf(stderr, "Warning: morphin Double -> Float. Precision loss!");
|
||||||
*dst = *src;
|
*dst = *src;
|
||||||
|
@ -54,7 +54,7 @@ morph_real_as_double_to_float ()
|
||||||
|
|
||||||
morph_real_as_u64_to_float ()
|
morph_real_as_u64_to_float ()
|
||||||
ℝ ~ ℕ ~ native.UInt64
|
ℝ ~ ℕ ~ native.UInt64
|
||||||
--> ℝ ~ native.Float
|
--> ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
fprintf(stderr, "Warning: morphin UInt64 -> Float. Precision loss!");
|
fprintf(stderr, "Warning: morphin UInt64 -> Float. Precision loss!");
|
||||||
*dst = *src;
|
*dst = *src;
|
||||||
|
@ -63,7 +63,7 @@ morph_real_as_u64_to_float ()
|
||||||
|
|
||||||
morph_real_as_u64_to_double ()
|
morph_real_as_u64_to_double ()
|
||||||
ℝ ~ ℕ ~ native.UInt64
|
ℝ ~ ℕ ~ native.UInt64
|
||||||
--> ℝ ~ native.Double
|
--> ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
fprintf(stderr, "Warning: morphin UInt64 -> Double. Precision loss!");
|
fprintf(stderr, "Warning: morphin UInt64 -> Double. Precision loss!");
|
||||||
*dst = *src;
|
*dst = *src;
|
||||||
|
@ -72,14 +72,14 @@ morph_real_as_u64_to_double ()
|
||||||
|
|
||||||
morph_real_as_quantized_linear_to_float (Begin: ℝ, End: ℝ, Steps: ℤ)
|
morph_real_as_quantized_linear_to_float (Begin: ℝ, End: ℝ, Steps: ℤ)
|
||||||
ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
||||||
--> ℝ ~ native.Float
|
--> ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = (float)Begin + ( *src * ((float)End - (float)Begin) ) / (float)Steps;
|
*dst = (float)Begin + ( *src * ((float)End - (float)Begin) ) / (float)Steps;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_real_as_float_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ)
|
morph_real_as_float_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ)
|
||||||
ℝ ~ native.Float
|
ℝ ~ native.Float32
|
||||||
--> ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
--> ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
||||||
```
|
```
|
||||||
*dst = ((*src - (float)Begin) * (float)Steps) / ((float)End - (float)Begin);
|
*dst = ((*src - (float)Begin) * (float)Steps) / ((float)End - (float)Begin);
|
||||||
|
@ -90,14 +90,14 @@ morph_real_as_float_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ)
|
||||||
|
|
||||||
morph_real_as_quantized_linear_to_double (Begin: ℝ, End: ℝ, Steps: ℤ)
|
morph_real_as_quantized_linear_to_double (Begin: ℝ, End: ℝ, Steps: ℤ)
|
||||||
ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
||||||
--> ℝ ~ native.Double
|
--> ℝ ~ native.Float64
|
||||||
```
|
```
|
||||||
*dst = (double)Begin + ( *src * ((double)End - (double)Begin) ) / (double)Steps;
|
*dst = (double)Begin + ( *src * ((double)End - (double)Begin) ) / (double)Steps;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_real_as_double_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ)
|
morph_real_as_double_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ)
|
||||||
ℝ ~ native.Double
|
ℝ ~ native.Float64
|
||||||
--> ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
--> ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64
|
||||||
```
|
```
|
||||||
*dst = ((*src - (double)Begin) * (double)Steps) / ((double)End - (double)Begin);
|
*dst = ((*src - (double)Begin) * (double)Steps) / ((double)End - (double)Begin);
|
||||||
|
|
|
@ -2,32 +2,32 @@
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_celsius_to_kelvin ()
|
morph_celsius_to_kelvin ()
|
||||||
Temperature ~ Celsius ~ ℝ ~ native.Float
|
Temperature ~ Celsius ~ ℝ ~ native.Float32
|
||||||
--> Temperature ~ Kelvin ~ ℝ ~ native.Float
|
--> Temperature ~ Kelvin ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = *src + 273.15;
|
*dst = *src + 273.15;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_kelvin_to_celsius ()
|
morph_kelvin_to_celsius ()
|
||||||
Temperature ~ Kelvin ~ ℝ ~ native.Float
|
Temperature ~ Kelvin ~ ℝ ~ native.Float32
|
||||||
--> Temperature ~ Celsius ~ ℝ ~ native.Float
|
--> Temperature ~ Celsius ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = *src - 273.15;
|
*dst = *src - 273.15;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_celsius_to_fahrenheit ()
|
morph_celsius_to_fahrenheit ()
|
||||||
Temperature ~ Celsius ~ ℝ ~ native.Float
|
Temperature ~ Celsius ~ ℝ ~ native.Float32
|
||||||
--> Temperature ~ Fahrenheit ~ ℝ ~ native.Float
|
--> Temperature ~ Fahrenheit ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = (*src * 9.0 / 5.0) + 32.0;
|
*dst = (*src * 9.0 / 5.0) + 32.0;
|
||||||
return 0;
|
return 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
morph_fahrenheit_to_celsius ()
|
morph_fahrenheit_to_celsius ()
|
||||||
Temperature ~ Fahrenheit ~ ℝ ~ native.Float
|
Temperature ~ Fahrenheit ~ ℝ ~ native.Float32
|
||||||
--> Temperature ~ Celsius ~ ℝ ~ native.Float
|
--> Temperature ~ Celsius ~ ℝ ~ native.Float32
|
||||||
```
|
```
|
||||||
*dst = (*src - 32.0) * 5.0 / 9.0;
|
*dst = (*src - 32.0) * 5.0 / 9.0;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
100
platforms/json.lt
Normal file
100
platforms/json.lt
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
|
||||||
|
type UTF8-String = <Seq Char~Unicode> ~ UTF-8 ~ <Seq~<ValueTerminated 0> native.UInt8> ;
|
||||||
|
|
||||||
|
type SerializedJson.Value = json.Value
|
||||||
|
~ <Enum
|
||||||
|
<Null json.Null ~ SerializedJson.Null >
|
||||||
|
<String json.String ~ SerializedJson.String >
|
||||||
|
<Number json.Number ~ SerializedJson.Number >
|
||||||
|
<Bool json.Bool ~ SerializedJson.Bool >
|
||||||
|
<Array json.Array ~ SerializedJson.Array >
|
||||||
|
<Object json.Object ~ SerializedJson.Object >>
|
||||||
|
~ <Seq Char> ;
|
||||||
|
|
||||||
|
type SerializedJson.Null = < Struct~<Seq Char> "\"null\"" > ;
|
||||||
|
|
||||||
|
type SerializedJson.String = <Seq Char>
|
||||||
|
~ <Struct~<Seq Char> "\"" <Seq Char> "\"">
|
||||||
|
~ <Seq Char> ;
|
||||||
|
|
||||||
|
type SerializedJson.Number = ℝ
|
||||||
|
~ <PosInt 10 BigEndian>
|
||||||
|
~ <Seq <Digit 10> ~ Char> ;
|
||||||
|
|
||||||
|
type SerializedJson.Bool = Bool
|
||||||
|
~ <Enum~<Seq Char>
|
||||||
|
<True~"\"true\"" <>>
|
||||||
|
<False~"\"false\"" <>>>
|
||||||
|
~ <Seq Char> ;
|
||||||
|
|
||||||
|
type SerializedJson.Array = <Struct~<Seq Char>
|
||||||
|
"["
|
||||||
|
<Seq json.Value>
|
||||||
|
~ <ValueSep ',' Char>
|
||||||
|
~ <Seq Char>
|
||||||
|
"]" >
|
||||||
|
~ <Seq Char> ;
|
||||||
|
|
||||||
|
type SerializedJson.Object = <Struct~<Seq Char>
|
||||||
|
"{"
|
||||||
|
<members <Seq
|
||||||
|
<Struct~<Seq Char>
|
||||||
|
<key json.String>
|
||||||
|
":"
|
||||||
|
<value json.Value>>>>
|
||||||
|
"}"
|
||||||
|
>
|
||||||
|
~ <Seq Char>;
|
||||||
|
|
||||||
|
type parsedJson.Value = json.Value ~ <Enum~native.UInt8
|
||||||
|
< parsedJson_Null~0 <> >
|
||||||
|
< parsedJson_String~1 <Ref UTF8-String> ~ native.Address >
|
||||||
|
< parsedJson_Int~2 ℝ~ℕ~native.UInt64 >
|
||||||
|
< parsedJson_Float~2 ℝ~native.Float64 >
|
||||||
|
< parsedJson_Bool~3 Bool ~ native.UInt8 >
|
||||||
|
|
||||||
|
< parsedJson_Array~4 <Ref <Seq ~ <LengthPrefix native.UInt64>
|
||||||
|
parsedJsonValue
|
||||||
|
>
|
||||||
|
>
|
||||||
|
~ native.Address >
|
||||||
|
|
||||||
|
< parsedJson_Object~5 <Ref <Seq ~ <LengthPrefix native.UInt64>
|
||||||
|
<Struct
|
||||||
|
<key <Ref UTF8-String> ~ native.Address>
|
||||||
|
<val parsedJsonValue>
|
||||||
|
>
|
||||||
|
>
|
||||||
|
~ native.Address >>
|
||||||
|
~ <Struct
|
||||||
|
<tag native.UInt8>
|
||||||
|
native.UInt64 >;
|
||||||
|
|
||||||
|
parse_json_value ()
|
||||||
|
json.Value ~ UTF8-String
|
||||||
|
--> json.Value ~ parsedJsonValue
|
||||||
|
```
|
||||||
|
|
||||||
|
{
|
||||||
|
dst->tag = PARSED_JSON_NULL;
|
||||||
|
dst->parsedJson_Null;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
dst->tag = PARSED_JSON_STRING;
|
||||||
|
dst->parsedJson_String = malloc(len);
|
||||||
|
strncpy(dst->parsedJson_String, src, len);
|
||||||
|
src += len;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
dst->tag = PARSED_JSON_NUMBER;
|
||||||
|
|
||||||
|
MORPH(
|
||||||
|
"ℝ ~ ℕ ~ <PosInt 10 BigEndian> ~ <Seq <Digit 10> ~ Char> ~ UTF8-String",
|
||||||
|
"ℝ ~ ℕ ~ native.UInt64",
|
||||||
|
src,
|
||||||
|
&dst->parsedJson_Number
|
||||||
|
);
|
||||||
|
}
|
||||||
|
```
|
0
platforms/json5.lt
Normal file
0
platforms/json5.lt
Normal file
3
platforms/protobuf.lt
Normal file
3
platforms/protobuf.lt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
type protobuf.Varint = ℕ ~ <PosInt 128 LittleEndian> ~ <Seq~MsbCont <Digit 128> ~ ℤ_128 ~ native.UInt8> ;
|
||||||
|
type protobuf.String = <Seq Char ~ Unicode> ~ UTF-8 ~ <Seq ~ <LengthPrefix protobuf.Varint> Byte> ;
|
0
platforms/spapod.lt
Normal file
0
platforms/spapod.lt
Normal file
5
platforms/x86.lt
Normal file
5
platforms/x86.lt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
type x86.UInt64 = ℤ_2/\64 ~ <PosInt 256 LittleEndian> ~ <Seq~<StaticLength 8> <Digit 256> ~ x86.UInt8 >;
|
||||||
|
type x86.UInt32 = ℤ_2/\32 ~ <PosInt 256 LittleEndian> ~ <Seq~<StaticLength 4> <Digit 256> ~ x86.UInt8 >;
|
||||||
|
type x86.UInt16 = ℤ_2^16 ~ <PosInt 256 LittleEndian> ~ <Seq~<StaticLength 2> <Digit 256> ~ x86.UInt8 >;
|
||||||
|
type x86.UInt8 = ℤ_256 ~ <Posint 2 BigEndian> ~ <Seq~<StaticLength 8> <Digit 2> ~ Bit>;
|
Loading…
Add table
Add a link
Reference in a new issue