28#include "../base/Variant.h"
29#include "../base/PComplexData.h"
30#include "../base/PList.h"
32#include "../utility/PEBLUtility.h"
33#include "../utility/PError.h"
34#include "../utility/rc_ptrs.h"
69 for(
unsigned int i = 0; i < dataList->
Length(); i++)
102 int number = (int)round(numDouble);
106 for(
int i=0;i<number;i++)
141 vector<Variant>::iterator p;
142 vector<Variant>::iterator pstart = arglist->
Begin();
143 vector<Variant>::iterator pend = arglist->
End();
150 int number = (int)round(numDouble);
159 for(
int i=0; i<number; i++)
222 PError::SignalFatalError(
"For positive <step>s, <end> must be greater than <start> in [Sequence(<start>, <end>, <step>)]");
226 for(current = start; current <= end + tolerance; current = current + step)
236 PError::SignalFatalError(
"For negative <step>s, <end> must be less than <start> in [Sequence(<start>, <end>, <step>)]");
240 for(current = start; current >= end - tolerance ; current = current + step)
291 vector<Variant>::iterator p1 = arglist1->
Begin();
292 vector<Variant>::iterator p1end = arglist1->
End();
300 vector<Variant>::iterator p2start = arglist2->
Begin();
301 vector<Variant>::iterator p2;
302 vector<Variant>::iterator p2end = arglist2->
End();
319 tmpList =
new PList();
361 vector<Variant>::iterator p1 = arglist->
Begin();
362 vector<Variant>::iterator p2;
363 vector<Variant>::iterator pstart = p1;
364 vector<Variant>::iterator pend = arglist->
End();
386 tmpList =
new PList();
431 vector<Variant>::iterator pi = arglist->
Begin();
432 vector<Variant>::iterator pStart = pi;
433 vector<Variant>::iterator pListStart = pi;
434 vector<Variant>::iterator pEnd = arglist->
End();
438 int rotation = (int)v2;
440 long int length = arglist->
Length();
445 int rem1 = rotation % length;
449 rem1 = rem1 + (length);
451 pListStart += (rem1);
473 while(pi != pListStart)
531 return myList->
Nth(2);
545 return myList->
Nth(3);
558 return myList->
Nth(4);
571 return myList->
Nth(5);
588 int n = plist->
Nth(2);
616 vector<Variant>::iterator p1start = tmpList->
Begin();
617 vector<Variant>::iterator p1 = p1start;
618 vector<Variant>::iterator p1end = tmpList->
End();
627 vector<Variant>::iterator p2start = tmpList->
Begin();
628 vector<Variant>::iterator p2 = p2start;
629 vector<Variant>::iterator p2end = tmpList->
End();
680 vector<Variant>::iterator p1 = tmpList->
Begin();
681 vector<Variant>::iterator p1end = tmpList->
End();
819 vector<Variant>::iterator p = tmpList->
Begin();
820 vector<Variant>::iterator pEnd = tmpList->
End();
867 vector<Variant>::iterator pstart = tmpList->
Begin();
868 vector<Variant>::iterator p;
871 unsigned long int outerLength = tmpList->
Length();
872 unsigned long int innerLength=0;
875 std::vector<vector<Variant>::iterator> listIterators(outerLength,pstart);
879 for(
unsigned int j = 0; j < outerLength; j++)
883 tmpList = (
PList*)((*p).GetComplexData()->GetObject().get());
886 innerLength = tmpList->
Length();
890 if(tmpList->
Length() != innerLength)
897 listIterators[j] = tmpList->
Begin();
910 for(
unsigned int i = 0; i < innerLength; i++)
912 tmpList =
new PList();
914 for(
unsigned int j = 0; j < outerLength; j++)
916 tmpList->
PushBack(*listIterators[j]);
949 vector<Variant>::iterator pstart = tmpList->
Begin();
950 vector<Variant>::iterator p;
951 vector<Variant>::iterator pend = tmpList->
End();
955 int start = plist->
Nth(2);
958 int end = plist->
Nth(3);
963 || end > (
int)(tmpList->
Length())
967 message =
Variant(
"[SubList] tried to extract items ")+
1030 PError::AssertType(v1,
PEAT_LIST,
"Argument error in first parameter of function [ListToString(<list>, <sep>, <pre>, <post>)]: ");
1035 vector<Variant>::iterator pstart = tmpList->
Begin();
1036 vector<Variant>::iterator p;
1037 vector<Variant>::iterator pend = tmpList->
End();
1044 if(plist->
Length()>=2) sep1 = plist->
Nth(2);
1045 if(plist->
Length()>=3) pre = plist->
Nth(3);
1046 if(plist->
Length()>=4) post = plist->
Nth(4);
1055 out = out + sep + pre+
Variant(*p) + post;
1078 vector<Variant>::iterator pstart = newList->
Begin();
1079 vector<Variant>::iterator p;
1080 vector<Variant>::iterator pend = newList->
End();
1086 if(plist->
Length()>=2) pre = plist->
Nth(2);
1087 if(plist->
Length()>=3) post = plist->
Nth(3);
1092 *p = (pre + *p + post);
counted_ptr< PEBLObjectBase > GetObject() const
std::vector< Variant >::const_iterator End() const
void SetElement(unsigned int n, Variant value)
counted_ptr< PEBLObjectBase > SortBy(const PList &key)
std::vector< Variant >::const_iterator Begin() const
Variant Nth(unsigned int n)
unsigned long Length() const
void PushBack(const Variant &v)
PComplexData * GetComplexData() const
Variant Append(Variant v)
Variant Transpose(Variant v)
Variant SortBy(Variant v)
This sorts the list by another list.
Variant Sequence(Variant v)
Variant Rotate(Variant v)
Variant Shuffle(Variant v)
Variant CrossFactorWithoutDuplicates(Variant v)
Variant Sort(Variant v)
This just sorts the list.
Variant Second(Variant v)
Variant IsMember(Variant v)
Variant MakeMap(Variant v)
Variant PushOnEnd(Variant v)
Given Merge([a,b,c],d), will return [a,b,c,d].
Variant SetElement(Variant v)
Variant RepeatList(Variant v)
Variant RemoveDuplicates(Variant v)
Variant List(Variant v)
This creates a list functionally, rather than syntactically using the [] operators.
Variant Repeat(Variant v)
Variant SubList(Variant v)
This makes a list out of a sublist of a list. Or something like that.
Variant RepeatExpression(Variant v)
Variant Length(Variant v)
This returns the number of items in the list.
Variant ListToString(Variant v)
Variant ModList(Variant v)
Variant Remove(Variant v)
Variant Fourth(Variant v)
Variant DesignFullCounterbalance(Variant v)
void AssertType(Variant v, int type, const std::string &outsidemessage)
void SignalFatalError(const std::string &message)