Skip to content

Commit fe38e95

Browse files
committed
[[ Library ]] Various tweaks to start seeing things work.
1 parent e3890a4 commit fe38e95

10 files changed

Lines changed: 91 additions & 121 deletions

File tree

modular/library/src/arithmetic.mlc

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ module com.livecode.arithmetic
22

33
--
44

5-
foreign handler ExecAddIntegerToInteger(in Value, inout Target) as undefined binds to "<builtin>"
6-
foreign handler ExecAddRealToReal(in Value as real, inout Target as real) as undefined binds to "<builtin>"
7-
foreign handler ExecAddNumberToNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
8-
foreign handler ExecSubtractIntegerFromInteger(in Value as integer, inout Target as integer) as undefined binds to "<builtin>"
9-
foreign handler ExecSubtractRealFromReal(in Value as real, inout Target as real) as undefined binds to "<builtin>"
10-
foreign handler ExecSubtractNumberFromNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
11-
foreign handler ExecMultiplyIntegerByInteger(in Value as integer, inout Target as integer) as undefined binds to "<builtin>"
12-
foreign handler ExecMultiplyRealByReal(in Value as real, inout Target as real) as undefined binds to "<builtin>"
13-
foreign handler ExecMultiplyNumberByNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
14-
foreign handler ExecDivideIntegerByInteger(in Value as integer, inout Target as integer) as undefined binds to "<builtin>"
15-
foreign handler ExecDivideRealByReal(in Value as real, inout Target as real) as undefined binds to "<builtin>"
16-
foreign handler ExecDivideNumberByNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
5+
foreign handler MCArithmeticExecAddIntegerToInteger(in Value as int, inout Target as int) as undefined binds to "<builtin>"
6+
foreign handler MCArithmeticExecAddRealToReal(in Value as double, inout Target as double) as undefined binds to "<builtin>"
7+
foreign handler MCArithmeticExecAddNumberToNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
8+
foreign handler MCArithmeticExecSubtractIntegerFromInteger(in Value as int, inout Target as int) as undefined binds to "<builtin>"
9+
foreign handler MCArithmeticExecSubtractRealFromReal(in Value as real, inout Target as real) as undefined binds to "<builtin>"
10+
foreign handler MCArithmeticExecSubtractNumberFromNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
11+
foreign handler MCArithmeticExecMultiplyIntegerByInteger(in Value as int, inout Target as int) as undefined binds to "<builtin>"
12+
foreign handler MCArithmeticExecMultiplyRealByReal(in Value as double, inout Target as double) as undefined binds to "<builtin>"
13+
foreign handler MCArithmeticExecMultiplyNumberByNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
14+
foreign handler MCArithmeticExecDivideIntegerByInteger(in Value as int, inout Target as int) as undefined binds to "<builtin>"
15+
foreign handler MCArithmeticExecDivideRealByReal(in Value as double, inout Target as double) as undefined binds to "<builtin>"
16+
foreign handler MCArithmeticExecDivideNumberByNumber(in Value as number, inout Target as number) as undefined binds to "<builtin>"
1717

1818
foreign handler EvalPlusInteger(in Operand as integer, out Value as integer) as undefined binds to "<builtin>"
1919
foreign handler EvalPlusReal(in Operand as real, out Value as real) as undefined binds to "<builtin>"
@@ -67,9 +67,7 @@ Value: An expression that evaluates to a number.
6767
syntax AddNumberTo is statement
6868
"add" <Value: Expression> "to" <Target: Expression>
6969
begin
70-
ExecAddIntegerToInteger(Value, Target)
71-
ExecAddRealToReal(Value, Target)
72-
ExecAddNumberToNumber(Value, Target)
70+
MCArithmeticExecAddNumberToNumber(Value, Target)
7371
end syntax
7472

7573

@@ -83,9 +81,9 @@ Value: An expression that evaluates to a number.
8381
syntax SubtractNumberFrom is statement
8482
"subtract" <Value: Expression> "from" <Target: Expression>
8583
begin
86-
ExecSubtractIntegerFromInteger(Value, Target)
87-
ExecSubtractRealFromReal(Value, Target)
88-
ExecSubtractNumberFromNumber(Value, Target)
84+
MCArithmeticExecSubtractIntegerFromInteger(Value, Target)
85+
MCArithmeticExecSubtractRealFromReal(Value, Target)
86+
MCArithmeticExecSubtractNumberFromNumber(Value, Target)
8987
end syntax
9088

9189
/*
@@ -98,9 +96,9 @@ Value: An expression that evaluates to a number.
9896
syntax MultiplyNumberBy is statement
9997
"multiply" <Value: Expression> "by" <Target: Expression>
10098
begin
101-
ExecMultiplyIntegerByInteger(Value, Target)
102-
ExecMultiplyRealByReal(Value, Target)
103-
ExecMultiplyNumberByNumber(Value, Target)
99+
MCArithmeticExecMultiplyIntegerByInteger(Value, Target)
100+
MCArithmeticExecMultiplyRealByReal(Value, Target)
101+
MCArithmeticExecMultiplyNumberByNumber(Value, Target)
104102
end syntax
105103

106104
/*
@@ -113,9 +111,9 @@ Value: An expression that evaluates to a number.
113111
syntax DivideNumberBy is statement
114112
"divide" <Value: Expression> "by" <Target: Expression>
115113
begin
116-
ExecDivideIntegerByInteger(Value, Target)
117-
ExecDivideRealByReal(Value, Target)
118-
ExecDivideNumberByNumber(Value, Target)
114+
MCArithmeticExecDivideIntegerByInteger(Value, Target)
115+
MCArithmeticExecDivideRealByReal(Value, Target)
116+
MCArithmeticExecDivideNumberByNumber(Value, Target)
119117
end syntax
120118

121119
--

modular/library/src/byte.mlc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ output: True if <Needle> is among the bytes of <Target>, and false o
110110
syntax IsAmongTheBytesOf is neutral binary operator with precedence 1
111111
<Needle: Expression> "is" "in" <Target: Expression>
112112
begin
113-
EvalIsInBytes(Target, Needle, output)
113+
EvalContainsBytes(Target, Needle, output)
114114
end syntax
115115

116116
--

modular/library/src/char.mlc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ output: True if the chars of <Needle> occur as a subsequence of the
176176
syntax ContainsChars is neutral binary operator with precedence 1
177177
<Target: Expression> "contains" <Needle: Expression>
178178
begin
179-
EvalContainsChars(Target, Needle, output)
179+
EvalIsAmongTheCharsOf(Target, Needle, output)
180180
end syntax
181181

182182
--
@@ -190,9 +190,9 @@ output: Returns true if the characters in <Prefix> occur at the star
190190
*/
191191

192192
syntax BeginsWithString is neutral binary operator with precedence 1
193-
<Source: Expression> "begins" "with" <Prefix: Expression>
193+
<Source: Expression> "begins" <Foo: Expression> "and" <Bar: Expression> "with" <Prefix: Expression>
194194
begin
195-
EvalBeginsWith(Source, Prefix, output)
195+
//EvalBeginsWith(Source, Prefix, output)
196196
end syntax
197197

198198
/*
@@ -207,7 +207,7 @@ output: Returns true if the characters in <Prefix> occur at the end
207207
syntax EndsWithString is neutral binary operator with precedence 1
208208
<Source: Expression> "ends" "with" <Suffix: Expression>
209209
begin
210-
EvalEndsWith(Source, Suffix, output)
210+
//EvalEndsWith(Source, Suffix, output)
211211
end syntax
212212

213213
--

modular/library/src/list.mlc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,12 @@ Target: An expression which evaluates to binary data.
150150
output: Either locates the element containers between the given indices for use as a
151151
single container for the target of another operation, or evaluates the elements
152152
between the given indices as a list.
153-
153+
*/
154154

155155
syntax RangeElementsOf is prefix operator with precedence 1
156156
"element" <Start: Expression> "to" <Finish: Expression> "of" <Target: Expression>
157157
begin
158-
FetchElementRangeOf(Start, Finish, Target, output)
158+
FetchElementRangeOf(Start, Finish, Target, output)
159159
StoreElementRangeOf(input, Start, Finish, Target)
160160
end syntax
161161

modular/library/src/module-arithmetic.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#include <foundation.h>
1818
#include <foundation-auto.h>
1919

20-
void MCArithmeticExecAddIntegerToInteger(integer_t p_number, integer_t& x_target)
20+
extern "C" void MCArithmeticExecAddIntegerToInteger(integer_t p_number, integer_t& x_target)
2121
{
2222
if (p_number > 0 && INTEGER_MAX - p_number < x_target)
2323
// overflow
@@ -29,7 +29,7 @@ void MCArithmeticExecAddIntegerToInteger(integer_t p_number, integer_t& x_target
2929
x_target += p_number;
3030
}
3131

32-
void MCArithmeticExecAddRealToReal(double p_number, double& x_target)
32+
extern "C" void MCArithmeticExecAddRealToReal(double p_number, double& x_target)
3333
{
3434
if (p_number > 0 && MAXFLOAT - p_number > x_target)
3535
// overflow
@@ -38,7 +38,7 @@ void MCArithmeticExecAddRealToReal(double p_number, double& x_target)
3838
x_target += p_number;
3939
}
4040

41-
void MCArithmeticExecAddNumberToNumber(MCNumberRef p_number, MCNumberRef& x_target)
41+
extern "C" void MCArithmeticExecAddNumberToNumber(MCNumberRef p_number, MCNumberRef& x_target)
4242
{
4343
double t_target, t_number;
4444
t_target = MCNumberFetchAsReal(x_target);
@@ -52,7 +52,7 @@ void MCArithmeticExecAddNumberToNumber(MCNumberRef p_number, MCNumberRef& x_targ
5252
MCNumberCreateWithReal(t_target, x_target);
5353
}
5454

55-
void MCArithmeticExecSubtractIntegerFromInteger(integer_t p_number, integer_t& x_target)
55+
extern "C" void MCArithmeticExecSubtractIntegerFromInteger(integer_t p_number, integer_t& x_target)
5656
{
5757
if (p_number > 0 && INTEGER_MIN + p_number > x_target)
5858
// overflow
@@ -64,7 +64,7 @@ void MCArithmeticExecSubtractIntegerFromInteger(integer_t p_number, integer_t& x
6464
x_target -= p_number;
6565
}
6666

67-
void MCArithmeticExecSubtractRealFromReal(double p_number, double& x_target)
67+
extern "C" void MCArithmeticExecSubtractRealFromReal(double p_number, double& x_target)
6868
{
6969
if (p_number < 0 && MAXFLOAT + p_number < x_target)
7070
// overflow
@@ -73,7 +73,7 @@ void MCArithmeticExecSubtractRealFromReal(double p_number, double& x_target)
7373
x_target -= p_number;
7474
}
7575

76-
void MCArithmeticExecSubtractNumberFromNumber(MCNumberRef p_number, MCNumberRef& x_target)
76+
extern "C" void MCArithmeticExecSubtractNumberFromNumber(MCNumberRef p_number, MCNumberRef& x_target)
7777
{
7878
double t_target, t_number;
7979
t_target = MCNumberFetchAsReal(x_target);
@@ -87,7 +87,7 @@ void MCArithmeticExecSubtractNumberFromNumber(MCNumberRef p_number, MCNumberRef&
8787
MCNumberCreateWithReal(t_target, x_target);
8888
}
8989

90-
void MCArithmeticExecMultiplyIntegerByInteger(integer_t p_number, integer_t& x_target)
90+
extern "C" void MCArithmeticExecMultiplyIntegerByInteger(integer_t p_number, integer_t& x_target)
9191
{
9292
if (p_number > 0 && INTEGER_MAX / p_number < x_target)
9393
// overflow
@@ -99,7 +99,7 @@ void MCArithmeticExecMultiplyIntegerByInteger(integer_t p_number, integer_t& x_t
9999
x_target *= p_number;
100100
}
101101

102-
void MCArithmeticExecMultiplyRealByReal(double p_number, double& x_target)
102+
extern "C" void MCArithmeticExecMultiplyRealByReal(double p_number, double& x_target)
103103
{
104104
if (p_number < 0 && MAXFLOAT / p_number < x_target)
105105
// overflow
@@ -108,7 +108,7 @@ void MCArithmeticExecMultiplyRealByReal(double p_number, double& x_target)
108108
x_target *= p_number;
109109
}
110110

111-
void MCArithmeticExecMultiplyNumberByNumber(MCNumberRef p_number, MCNumberRef& x_target)
111+
extern "C" void MCArithmeticExecMultiplyNumberByNumber(MCNumberRef p_number, MCNumberRef& x_target)
112112
{
113113
double t_target, t_number;
114114
t_target = MCNumberFetchAsReal(x_target);
@@ -122,20 +122,20 @@ void MCArithmeticExecMultiplyNumberByNumber(MCNumberRef p_number, MCNumberRef& x
122122
MCNumberCreateWithReal(t_target, x_target);
123123
}
124124

125-
void MCArithmeticExecDivideIntegerByInteger(integer_t p_number, integer_t& x_target)
125+
extern "C" void MCArithmeticExecDivideIntegerByInteger(integer_t p_number, integer_t& x_target)
126126
{
127127
x_target /= p_number;
128128
}
129129

130-
void MCArithmeticExecDivideRealByReal(double p_number, double& x_target)
130+
extern "C" void MCArithmeticExecDivideRealByReal(double p_number, double& x_target)
131131
{
132132
if (p_number > 0 && p_number < 1 && MAXFLOAT * p_number < x_target)
133133
// overflow
134134
return;
135135
x_target /= p_number;
136136
}
137137

138-
void MCArithmeticExecDivideNumberByNumber(MCNumberRef p_number, MCNumberRef& x_target)
138+
extern "C" void MCArithmeticExecDivideNumberByNumber(MCNumberRef p_number, MCNumberRef& x_target)
139139
{
140140
double t_target, t_number;
141141
t_target = MCNumberFetchAsReal(x_target);

modular/library/src/module-byte.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void MCByteEvalContainsBytes(MCDataRef p_target, MCDataRef p_needle, bool& r_out
4141
{
4242
r_output = MCDataContains(p_target, p_needle);
4343
}
44-
44+
4545
void MCByteEvalBeginsWithBytes(MCDataRef p_target, MCDataRef p_needle, bool& r_output)
4646
{
4747
r_output = MCDataBeginsWith(p_target, p_needle);

modular/library/src/module-char.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ void MCCharEvalNumberOfCharsIn(MCStringRef p_target, index_t& r_output)
2323
r_output = MCStringGetLength(p_target);
2424
}
2525

26+
#if 0
2627
void MCCharEvalIsAmongTheCharsOf(MCHandlerContext& ctxt, MCStringRef p_needle, MCStringRef p_target, bool& r_output)
2728
{
2829
// Error if there is more than one char in needle.
@@ -32,19 +33,20 @@ void MCCharEvalIsAmongTheCharsOf(MCHandlerContext& ctxt, MCStringRef p_needle, M
3233
uindex_t t_dummy;
3334
r_output = MCStringFirstIndexOfChar(p_target, MCStringGetCodepointAtIndex(p_needle, 0), 0, ctxt . GetStringComparisonOptions(), t_dummy);
3435
}
36+
#endif
3537

3638
void MCCharFetchCharRangeOf(index_t p_start, index_t p_finish, MCStringRef p_target, MCStringRef& r_output)
3739
{
3840
uindex_t t_start, t_count;
39-
MCChunkGetExtentsOfCodeunitChunkByRange(p_target, p_start, p_finish, t_start, t_count);
41+
MCChunkGetExtentsOfCodepointChunkByRange(p_target, p_start, p_finish, t_start, t_count);
4042
if (!MCStringCopySubstring(p_target, MCRangeMake(t_start, t_count), r_output))
4143
return;
4244
}
4345

4446
void MCCharStoreCharRangeOf(MCStringRef p_value, index_t p_start, index_t p_finish, MCStringRef& x_target)
4547
{
4648
uindex_t t_start, t_count;
47-
MCChunkGetExtentsOfCodeunitChunkByRange(x_target, p_start, p_finish, t_start, t_count);
49+
MCChunkGetExtentsOfCodepointChunkByRange(x_target, p_start, p_finish, t_start, t_count);
4850

4951
MCAutoStringRef t_data;
5052
if (!MCStringMutableCopy(x_target, &t_data))
@@ -60,18 +62,18 @@ void MCCharStoreCharRangeOf(MCStringRef p_value, index_t p_start, index_t p_fini
6062

6163
void MCCharFetchCharOf(index_t p_index, MCStringRef p_target, MCStringRef& r_output)
6264
{
63-
MCCharChunkFetchCharRangeOf(p_index, p_index, p_target, r_output);
65+
MCCharFetchCharRangeOf(p_index, p_index, p_target, r_output);
6466
}
6567

6668
void MCCharStoreCharOf(MCStringRef p_value, index_t p_index, MCStringRef& x_target)
6769
{
68-
MCCharChunkStoreCharRangeOf(p_value, p_index, p_index, x_target);
70+
MCCharStoreCharRangeOf(p_value, p_index, p_index, x_target);
6971
}
7072

7173
void MCCharStoreAfterCharOf(MCStringRef p_value, index_t p_index, MCStringRef& x_target)
7274
{
7375
uindex_t t_start, t_count;
74-
MCChunkGetExtentsOfCodeunitChunkByRange(x_target, p_index, p_index, t_start, t_count);
76+
MCChunkGetExtentsOfCodepointChunkByRange(x_target, p_index, p_index, t_start, t_count);
7577

7678
MCAutoStringRef t_data;
7779
if (!MCStringMutableCopy(x_target, &t_data))
@@ -88,7 +90,7 @@ void MCCharStoreAfterCharOf(MCStringRef p_value, index_t p_index, MCStringRef& x
8890
void MCCharStoreBeforeCharOf(MCStringRef p_value, index_t p_index, MCStringRef& x_target)
8991
{
9092
uindex_t t_start, t_count;
91-
MCChunkGetExtentsOfCodeunitChunkByRange(x_target, p_index, p_index, t_start, t_count);
93+
MCChunkGetExtentsOfCodepointChunkByRange(x_target, p_index, p_index, t_start, t_count);
9294

9395
MCAutoStringRef t_data;
9496
if (!MCStringMutableCopy(x_target, &t_data))
@@ -102,6 +104,7 @@ void MCCharStoreBeforeCharOf(MCStringRef p_value, index_t p_index, MCStringRef&
102104
return;
103105
}
104106

107+
#if 0
105108
void MCCharEvalOffsetOfCharsInRange(MCHandlerContext ctxt, MCStringRef p_needle, MCStringRef p_target, bool p_is_last, MCRange p_range, uindex_t& r_output)
106109
{
107110
uindex_t t_offset;
@@ -143,6 +146,7 @@ void MCCharEvalEndsWith(MCHandlerContext& ctxt, MCStringRef p_source, MCStringRe
143146
{
144147
r_result = MCStringBeginsWith(p_source, p_prefix, ctxt . GetStringComparisonOptions());
145148
}
149+
#endif
146150

147151
////////////////////////////////////////////////////////////////////////////////////////////////////
148152

modular/library/src/module-string.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,35 +17,36 @@
1717
#include <foundation.h>
1818
#include <foundation-auto.h>
1919

20-
void MCStringEvalConcatenate(MCStringRef p_left, MCStringRef p_right, MCStringRef& r_output)
20+
extern "C" void MCStringEvalConcatenate(MCStringRef p_left, MCStringRef p_right, MCStringRef& r_output)
2121
{
2222
if (!MCStringFormat(r_output, "%@%@", p_left, p_right))
2323
return;
2424
}
2525

26-
void MCStringExecPutStringBefore(MCStringRef p_source, MCStringRef& x_target)
26+
extern "C" void MCStringExecPutStringBefore(MCStringRef p_source, MCStringRef& x_target)
2727
{
2828
MCAutoStringRef t_string;
2929
MCStringEvalConcatenate(p_source, x_target, &t_string);
3030

3131
MCValueAssign(x_target, *t_string);
3232
}
3333

34-
void MCStringExecPutStringAfter(MCStringRef p_source, MCStringRef& x_target)
34+
extern "C" void MCStringExecPutStringAfter(MCStringRef p_source, MCStringRef& x_target)
3535
{
3636
MCAutoStringRef t_string;
3737
MCStringEvalConcatenate(x_target, p_source, &t_string);
3838

3939
MCValueAssign(x_target, *t_string);
4040
}
4141

42-
void MCStringEvalConcatenateWithSpace(MCStringRef p_left, MCStringRef p_right, MCStringRef& r_output)
42+
extern "C" void MCStringEvalConcatenateWithSpace(MCStringRef p_left, MCStringRef p_right, MCStringRef& r_output)
4343
{
4444
if (!MCStringFormat(r_output, "%@ %@", p_left, p_right))
4545
return;
4646
}
4747

48-
void MCStringEvalLowercaseOf(MCStringRef p_source, MCStringRef& r_output)
48+
#if 0
49+
extern "C" void MCStringEvalLowercaseOf(MCStringRef p_source, MCStringRef& r_output)
4950
{
5051
MCAutoStringRef t_string;
5152
if (!MCStringMutableCopy(p_source, &t_string))
@@ -58,7 +59,7 @@ void MCStringEvalLowercaseOf(MCStringRef p_source, MCStringRef& r_output)
5859
return;
5960
}
6061

61-
void MCStringEvalUppercaseOf(MCStringRef p_source, MCStringRef& r_output)
62+
extern "C" void MCStringEvalUppercaseOf(MCStringRef p_source, MCStringRef& r_output)
6263
{
6364
MCAutoStringRef t_string;
6465
if (!MCStringMutableCopy(p_source, &t_string))
@@ -70,3 +71,4 @@ void MCStringEvalUppercaseOf(MCStringRef p_source, MCStringRef& r_output)
7071
if (!MCStringCopy(*t_string, r_output))
7172
return;
7273
}
74+
#endif

0 commit comments

Comments
 (0)