Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 2149ffa

Browse files
Revert "[[ Script ]] Tweaks to iterators"
This reverts commit eab3813. Conflicts: libscript/src/codeunit.lcb
1 parent 8c05a62 commit 2149ffa

10 files changed

Lines changed: 27 additions & 38 deletions

File tree

libscript/src/array.lcb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public foreign handler MCArrayStoreElementOfCaseless(in Value as optional any, i
3737

3838
public foreign handler MCArrayEvalEmpty(out Value as Array) returns nothing binds to "<builtin>"
3939

40-
public foreign handler MCArrayRepeatForEachElement(inout Iterator as optional Pointer, inout Iterand as optional any, in Container as Array) returns CBool binds to "<builtin>"
41-
public foreign handler MCArrayRepeatForEachKey(inout Iterator as optional Pointer, inout Iterand as optional String, in Container as Array) returns CBool binds to "<builtin>"
40+
public foreign handler MCArrayRepeatForEachElement(inout Iterator as optional Pointer, out Iterand as optional any, in Container as Array) returns CBool binds to "<builtin>"
41+
public foreign handler MCArrayRepeatForEachKey(inout Iterator as optional Pointer, out Iterand as String, in Container as Array) returns CBool binds to "<builtin>"
4242

4343
public foreign handler MCArrayDeleteElementOfCaseless(inout Target as Array, in Key as String) returns nothing binds to "<builtin>"
4444

libscript/src/byte.lcb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public foreign handler MCByteStoreByteOf(in Value as Data, in Index as LCIndex,
4040
public foreign handler MCByteFetchByteRangeOf(in Start as LCIndex, in Finish as LCIndex, in Target as Data, out Value as Data) returns nothing binds to "<builtin>"
4141
public foreign handler MCByteStoreByteRangeOf(in Value as Data, in Start as LCIndex, in Finish as LCIndex, inout Target as Data) returns nothing binds to "<builtin>"
4242

43-
public foreign handler MCByteRepeatForEachByte(inout Iterator as optional Pointer, inout Iterand as Data, in Container as Data) returns CBool binds to "<builtin>"
43+
public foreign handler MCByteRepeatForEachByte(inout Iterator as optional Pointer, out Iterand as Data, in Container as Data) returns CBool binds to "<builtin>"
4444

4545
public foreign handler MCByteFetchFirstByteOf(in Target as Data, out Value as Data) returns nothing binds to "<builtin>"
4646
public foreign handler MCByteStoreFirstByteOf(in Value as Data, inout Target as Data) returns nothing binds to "<builtin>"

libscript/src/char.lcb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public foreign handler MCCharEvalEndsWith(in Source as String, in Suffix as Stri
4444

4545
public foreign handler MCCharEvalNewlineCharacter(out Value as String) returns nothing binds to "<builtin>"
4646

47-
public foreign handler MCCharRepeatForEachChar(inout Iterator as optional Pointer, inout Iterand as String, in Container as String) returns CBool binds to "<builtin>"
47+
public foreign handler MCCharRepeatForEachChar(inout Iterator as optional Pointer, out Iterand as String, in Container as String) returns CBool binds to "<builtin>"
4848

4949
public foreign handler MCCharFetchFirstCharOf(in Target as String, out Value as String) returns nothing binds to "<builtin>"
5050
public foreign handler MCCharStoreFirstCharOf(in Value as String, inout Target as String) returns nothing binds to "<builtin>"

libscript/src/codeunit.lcb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public foreign handler MCCodeunitEvalContains(in Source as String, in Needle as
4040
public foreign handler MCCodeunitEvalBeginsWith(in Source as String, in Prefix as String, out Result as CBool) returns nothing binds to "<builtin>"
4141
public foreign handler MCCodeunitEvalEndsWith(in Source as String, in Suffix as String, out Result as CBool) returns nothing binds to "<builtin>"
4242

43-
public foreign handler MCCodeunitRepeatForEachCodeunit(inout Iterator as optional Pointer, inout Iterand as optional String, in Container as String) returns CBool binds to "<builtin>"
43+
public foreign handler MCCodeunitRepeatForEachCodeunit(inout Iterator as optional Pointer, out Iterand as String, in Container as String) returns CBool binds to "<builtin>"
4444

4545
public foreign handler MCCodeunitFetchFirstCodeunitOf(in Target as String, out Value as String) returns nothing binds to "<builtin>"
4646
public foreign handler MCCodeunitStoreFirstCodeunitOf(in Value as String, inout Target as String) returns nothing binds to "<builtin>"

libscript/src/list.lcb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public foreign handler MCListSpliceAfter(in Source as List, inout Target as List
6060

6161
public foreign handler MCListEvalEmpty(out Value as List) returns nothing binds to "<builtin>"
6262

63-
public foreign handler MCListRepeatForEachElement(inout Iterator as optional Pointer, inout Iterand as optional any, in Container as List) returns CBool binds to "<builtin>"
63+
public foreign handler MCListRepeatForEachElement(inout Iterator as optional Pointer, out Iterand as optional any, in Container as List) returns CBool binds to "<builtin>"
6464

6565
public foreign handler MCListFetchFirstElementOf(in Target as List, out Value as optional any) returns nothing binds to "<builtin>"
6666
public foreign handler MCListStoreFirstElementOf(in Value as optional any, inout Target as List) returns nothing binds to "<builtin>"

libscript/src/module-array.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ extern "C" MC_DLLEXPORT_DEF void MCArrayEvalEmpty(MCArrayRef& r_output)
163163
r_output = MCValueRetain(kMCEmptyArray);
164164
}
165165

166-
extern "C" bool MC_DLLEXPORT_DEF MCArrayRepeatForEachElement(void*& x_iterator, MCValueRef& x_iterand, MCArrayRef p_array)
166+
extern "C" bool MC_DLLEXPORT_DEF MCArrayRepeatForEachElement(void*& x_iterator, MCValueRef& r_iterand, MCArrayRef p_array)
167167
{
168168
MCValueRef t_value;
169169
// If this is a numerical array, do it in order
@@ -190,13 +190,12 @@ extern "C" bool MC_DLLEXPORT_DEF MCArrayRepeatForEachElement(void*& x_iterator,
190190

191191
x_iterator = (void *)(t_ptr);
192192
}
193-
194-
MCValueAssign(x_iterand, t_value);
195-
193+
194+
r_iterand = MCValueRetain(t_value);
196195
return true;
197196
}
198197

199-
extern "C" bool MC_DLLEXPORT_DEF MCArrayRepeatForEachKey(void*& x_iterator, MCStringRef& x_iterand, MCArrayRef p_array)
198+
extern "C" bool MC_DLLEXPORT_DEF MCArrayRepeatForEachKey(void*& x_iterator, MCStringRef& r_iterand, MCArrayRef p_array)
200199
{
201200
MCNameRef t_key;
202201
MCValueRef t_value;
@@ -206,8 +205,8 @@ extern "C" bool MC_DLLEXPORT_DEF MCArrayRepeatForEachKey(void*& x_iterator, MCSt
206205

207206
if (!MCArrayIterate(p_array, t_offset, t_key, t_value))
208207
return false;
209-
210-
MCValueAssign(x_iterand, MCNameGetString(t_key));
208+
209+
r_iterand = MCValueRetain(MCNameGetString(t_key));
211210

212211
x_iterator = (void *)(t_offset);
213212

libscript/src/module-byte.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -197,19 +197,16 @@ extern "C" MC_DLLEXPORT_DEF void MCByteExecDeleteLastByteOf(MCDataRef& x_target)
197197
MCByteExecDeleteByteOf(-1, x_target);
198198
}
199199

200-
extern "C" MC_DLLEXPORT_DEF bool MCByteRepeatForEachByte(void*& x_iterator, MCDataRef& x_iterand, MCDataRef p_data)
200+
extern "C" MC_DLLEXPORT_DEF bool MCByteRepeatForEachByte(void*& x_iterator, MCDataRef& r_iterand, MCDataRef p_data)
201201
{
202202
uintptr_t t_offset;
203203
t_offset = (uintptr_t)x_iterator;
204204

205205
if (t_offset == MCDataGetLength(p_data))
206206
return false;
207-
208-
MCDataRef t_byte;
209-
if (!MCDataCopyRange(p_data, MCRangeMake(t_offset, 1), t_byte))
207+
208+
if (!MCDataCopyRange(p_data, MCRangeMake(t_offset, 1), r_iterand))
210209
return false;
211-
212-
MCValueAssign(x_iterand, t_byte);
213210

214211
x_iterator = (void *)(t_offset + 1);
215212

libscript/src/module-char.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ extern "C" MC_DLLEXPORT_DEF void MCCharExecDeleteLastCharOf(MCStringRef& x_targe
245245
// repeat for each char tChar in tVar
246246
// end repeat
247247
// Will result in tChar containing the value it had at the point of end repeat.
248-
extern "C" MC_DLLEXPORT_DEF bool MCCharRepeatForEachChar(void*& x_iterator, MCStringRef& x_iterand, MCStringRef p_string)
248+
extern "C" MC_DLLEXPORT_DEF bool MCCharRepeatForEachChar(void*& x_iterator, MCStringRef& r_iterand, MCStringRef p_string)
249249
{
250250
MCTextChunkIterator *t_iterator;
251251
bool t_first;
@@ -258,18 +258,15 @@ extern "C" MC_DLLEXPORT_DEF bool MCCharRepeatForEachChar(void*& x_iterator, MCSt
258258
}
259259
else
260260
t_iterator = (MCTextChunkIterator *)x_iterator;
261-
262-
MCStringRef t_char;
261+
263262
if (t_iterator -> Next())
264-
t_iterator -> CopyString(t_char);
263+
t_iterator -> CopyString(r_iterand);
265264
else
266265
{
267266
delete t_iterator;
268267
return false;
269268
}
270-
271-
MCValueAssign(x_iterand, t_char);
272-
269+
273270
x_iterator = (void *)(t_iterator);
274271

275272
return true;

libscript/src/module-codeunit.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,20 +186,17 @@ extern "C" MC_DLLEXPORT_DEF void MCCodeunitExecDeleteLastCodeunitOf(MCStringRef&
186186
// repeat for each char tCodeunit in tVar
187187
// end repeat
188188
// Will result in tCodeunit containing the value it had at the point of end repeat.
189-
extern "C" MC_DLLEXPORT_DEF bool MCCodeunitRepeatForEachCodeunit(void*& x_iterator, MCStringRef& x_iterand, MCStringRef p_string)
189+
extern "C" MC_DLLEXPORT_DEF bool MCCodeunitRepeatForEachCodeunit(void*& x_iterator, MCStringRef& r_iterand, MCStringRef p_string)
190190
{
191191
uintptr_t t_offset;
192192
t_offset = (uintptr_t)x_iterator;
193193

194194
if (t_offset == MCStringGetLength(p_string))
195195
return false;
196-
197-
MCStringRef t_codeunit;
198-
if (!MCStringCopySubstring(p_string, MCRangeMake(t_offset, 1), t_codeunit))
196+
197+
if (!MCStringCopySubstring(p_string, MCRangeMake(t_offset, 1), r_iterand))
199198
return false;
200-
201-
MCValueAssign(x_iterand, t_codeunit);
202-
199+
203200
x_iterator = (void *)(t_offset + 1);
204201

205202
return true;

libscript/src/module-list.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -406,17 +406,16 @@ extern "C" MC_DLLEXPORT_DEF void MCListEvalEmpty(MCProperListRef& r_output)
406406
r_output = MCValueRetain(kMCEmptyProperList);
407407
}
408408

409-
extern "C" MC_DLLEXPORT_DEF bool MCListRepeatForEachElement(void*& x_iterator, MCValueRef& x_iterand, MCProperListRef p_list)
409+
extern "C" MC_DLLEXPORT_DEF bool MCListRepeatForEachElement(void*& x_iterator, MCValueRef& r_iterand, MCProperListRef p_list)
410410
{
411411
uintptr_t t_offset;
412412
t_offset = (uintptr_t)x_iterator;
413413

414414
if (t_offset == MCProperListGetLength(p_list))
415415
return false;
416-
417-
418-
MCValueAssign(x_iterand, MCProperListFetchElementAtIndex(p_list, t_offset));
419-
416+
417+
r_iterand = MCValueRetain(MCProperListFetchElementAtIndex(p_list, t_offset));
418+
420419
x_iterator = (void *)(t_offset + 1);
421420

422421
return true;

0 commit comments

Comments
 (0)