mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
Core: Id is now String based, Sql: SqlCol erradicated
git-svn-id: svn://ultimatepp.org/upp/trunk@4276 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
910902fe7e
commit
437c7f58cf
16 changed files with 232 additions and 363 deletions
|
|
@ -617,65 +617,6 @@ const Value& ValueMap::operator[](const Value& key) const
|
|||
|
||||
// ----------------------------------
|
||||
|
||||
#ifdef _MULTITHREADED
|
||||
struct IdList : public ArrayIndex<String> {
|
||||
IdList() { Add(String()); }
|
||||
};
|
||||
|
||||
ArrayIndex<String>& Id::Ids() {
|
||||
return Single<IdList>();
|
||||
}
|
||||
|
||||
static StaticCriticalSection s_ids;
|
||||
|
||||
void Id::Set(const String& s) {
|
||||
CriticalSection::Lock __(s_ids);
|
||||
ndx = Ids().FindAdd(s);
|
||||
}
|
||||
|
||||
const String& Id::AsString(int n) {
|
||||
static thread__ const String *h[1024];
|
||||
if(n < 1024) {
|
||||
if(!h[n]) {
|
||||
CriticalSection::Lock __(s_ids);
|
||||
h[n] = &Ids()[n];
|
||||
}
|
||||
return *h[n];
|
||||
}
|
||||
CriticalSection::Lock __(s_ids);
|
||||
return Ids()[n];
|
||||
}
|
||||
|
||||
Id Id::Find(const String& s) {
|
||||
CriticalSection::Lock __(s_ids);
|
||||
int i = Ids().Find(s);
|
||||
if(i < 0) return Id();
|
||||
return Id(i);
|
||||
}
|
||||
#else
|
||||
struct IdList : public Index<String> {
|
||||
IdList() { Add(String()); }
|
||||
};
|
||||
|
||||
Index<String>& Id::Ids() {
|
||||
return Single<IdList>();
|
||||
}
|
||||
|
||||
void Id::Set(const String& s) {
|
||||
ndx = Ids().FindAdd(s);
|
||||
}
|
||||
|
||||
const String& Id::AsString(int n) {
|
||||
return Ids()[n];
|
||||
}
|
||||
|
||||
Id Id::Find(const String& s) {
|
||||
int i = Ids().Find(s);
|
||||
if(i < 0) return Id();
|
||||
return Id(i);
|
||||
}
|
||||
#endif
|
||||
|
||||
int StdValueCompare(const Value& a, const Value& b, int language)
|
||||
{
|
||||
LTIMING("StdValueCompare");
|
||||
|
|
|
|||
|
|
@ -2,37 +2,23 @@
|
|||
class Value;
|
||||
|
||||
class Id : Moveable<Id> {
|
||||
int ndx;
|
||||
|
||||
#ifdef _MULTITHREADED
|
||||
static ArrayIndex<String>& Ids();
|
||||
#else
|
||||
static Index<String>& Ids();
|
||||
#endif
|
||||
void Set(const String& s);
|
||||
String id;
|
||||
|
||||
public:
|
||||
static Id Find(const String& s);
|
||||
static const String& AsString(int n);
|
||||
const String& ToString() const { return id; }
|
||||
dword GetHashValue() const { return UPP::GetHashValue(id); }
|
||||
bool IsNull() const { return UPP::IsNull(id); }
|
||||
|
||||
int AsNdx() const { return ndx; }
|
||||
String ToString() const { return AsString(ndx); }
|
||||
dword GetHashValue() const { return ndx; }
|
||||
bool IsNull() const { return ndx == 0; }
|
||||
operator const String&() const { return ToString(); }
|
||||
const String& operator~() const { return ToString(); }
|
||||
bool operator==(const Id& b) const { return id == b.id; }
|
||||
bool operator!=(const Id& b) const { return id != b.id; }
|
||||
|
||||
void Serialize(Stream& s);
|
||||
operator bool() const { return id.GetCount(); }
|
||||
|
||||
operator String() const { return ToString(); }
|
||||
String operator~() const { return ToString(); }
|
||||
bool operator==(Id b) const { return ndx == b.ndx; }
|
||||
bool operator!=(Id b) const { return ndx != b.ndx; }
|
||||
|
||||
operator bool() const { return ndx; }
|
||||
|
||||
Id() { ndx = 0; }
|
||||
Id(const String& s) { Set(s); }
|
||||
Id(const char *s) { Set(s); }
|
||||
explicit Id(int n) { ASSERT(n >= 0 && n < Ids().GetCount()); ndx = n; }
|
||||
Id() {}
|
||||
Id(const String& s) { id = s; }
|
||||
Id(const char *s) { id = s; }
|
||||
};
|
||||
|
||||
template<> inline bool IsNull(const Date& d) { return d.year == -32768; }
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ const Display& ArrayCtrl::GetDisplay(int j)
|
|||
|
||||
int ArrayCtrl::Pos(int pos) const {
|
||||
if(pos >= 0) return pos;
|
||||
pos = idx.Find(Id(-pos));
|
||||
pos = idx.Find(id_ndx[-pos]);
|
||||
ASSERT(pos >= 0);
|
||||
return pos;
|
||||
}
|
||||
|
|
@ -341,7 +341,7 @@ Value ArrayCtrl::Get(int ii) const {
|
|||
return Get0(cursor, ii);
|
||||
}
|
||||
|
||||
Value ArrayCtrl::Get(Id id) const {
|
||||
Value ArrayCtrl::Get(const Id& id) const {
|
||||
return Get(GetPos(id));
|
||||
}
|
||||
|
||||
|
|
@ -349,7 +349,7 @@ Value ArrayCtrl::GetOriginal(int ii) const {
|
|||
return Get0(cursor, ii);
|
||||
}
|
||||
|
||||
Value ArrayCtrl::GetOriginal(Id id) const {
|
||||
Value ArrayCtrl::GetOriginal(const Id& id) const {
|
||||
return GetOriginal(GetPos(id));
|
||||
}
|
||||
|
||||
|
|
@ -380,7 +380,7 @@ bool ArrayCtrl::IsModified(int ii) const {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool ArrayCtrl::IsModified(Id id) const {
|
||||
bool ArrayCtrl::IsModified(const Id& id) const {
|
||||
return IsModified(GetPos(id));
|
||||
}
|
||||
|
||||
|
|
@ -441,7 +441,7 @@ void ArrayCtrl::Set(int ii, const Value& v) {
|
|||
RefreshRow(cursor);
|
||||
}
|
||||
|
||||
void ArrayCtrl::Set(Id id, const Value& v) {
|
||||
void ArrayCtrl::Set(const Id& id, const Value& v) {
|
||||
Set(GetPos(id), v);
|
||||
}
|
||||
|
||||
|
|
@ -468,7 +468,7 @@ void ArrayCtrl::Set(int i, int ii, const Value& v)
|
|||
AfterSet(i);
|
||||
}
|
||||
|
||||
void ArrayCtrl::Set(int i, Id id, const Value& v) {
|
||||
void ArrayCtrl::Set(int i, const Id& id, const Value& v) {
|
||||
Set(i, GetPos(id), v);
|
||||
}
|
||||
|
||||
|
|
@ -476,7 +476,7 @@ Value ArrayCtrl::Get(int i, int ii) const {
|
|||
return i == cursor ? Get(ii) : Get0(i, ii);
|
||||
}
|
||||
|
||||
Value ArrayCtrl::Get(int i, Id id) const {
|
||||
Value ArrayCtrl::Get(int i, const Id& id) const {
|
||||
return Get(i, GetPos(id));
|
||||
}
|
||||
|
||||
|
|
@ -941,11 +941,11 @@ ArrayCtrl::IdInfo& ArrayCtrl::IndexInfo(int i) {
|
|||
return idx[i];
|
||||
}
|
||||
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::IndexInfo(Id id) {
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::IndexInfo(const Id& id) {
|
||||
return idx.Get(id);
|
||||
}
|
||||
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::AddIndex(Id id) {
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::AddIndex(const Id& id) {
|
||||
return idx.Add(id);
|
||||
}
|
||||
|
||||
|
|
@ -953,7 +953,7 @@ ArrayCtrl::IdInfo& ArrayCtrl::AddIndex() {
|
|||
return idx.Add(Id());
|
||||
}
|
||||
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::SetId(int i, Id id) {
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::SetId(int i, const Id& id) {
|
||||
while(idx.GetCount() < i + 1)
|
||||
idx.Add(Id());
|
||||
idx.SetKey(i, id);
|
||||
|
|
@ -965,7 +965,7 @@ ArrayCtrl::Column& ArrayCtrl::AddColumn(const char *text, int w) {
|
|||
return AddColumnAt(idx.GetCount() - 1, text, w);
|
||||
}
|
||||
|
||||
ArrayCtrl::Column& ArrayCtrl::AddColumn(Id id, const char *text, int w) {
|
||||
ArrayCtrl::Column& ArrayCtrl::AddColumn(const Id& id, const char *text, int w) {
|
||||
AddIndex(id);
|
||||
return AddColumnAt(idx.GetCount() - 1, text, w);
|
||||
}
|
||||
|
|
@ -981,7 +981,7 @@ ArrayCtrl::Column& ArrayCtrl::AddColumnAt(int pos, const char *text, int w) {
|
|||
return m;
|
||||
}
|
||||
|
||||
ArrayCtrl::Column& ArrayCtrl::AddColumnAt(Id id, const char *text, int w) {
|
||||
ArrayCtrl::Column& ArrayCtrl::AddColumnAt(const Id& id, const char *text, int w) {
|
||||
header.Add(text, w);
|
||||
Column& m = column.Add();
|
||||
m.arrayctrl = this;
|
||||
|
|
@ -1012,7 +1012,7 @@ int ArrayCtrl::FindColumnWithPos(int pos) const
|
|||
return -1;
|
||||
}
|
||||
|
||||
int ArrayCtrl::FindColumnWithId(Id id) const
|
||||
int ArrayCtrl::FindColumnWithId(const Id& id) const
|
||||
{
|
||||
return FindColumnWithPos(GetPos(id));
|
||||
}
|
||||
|
|
@ -1023,7 +1023,7 @@ ArrayCtrl::IdInfo& ArrayCtrl::AddCtrl(Ctrl& ctrl) {
|
|||
return f;
|
||||
}
|
||||
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::AddCtrl(Id id, Ctrl& ctrl) {
|
||||
ArrayCtrl::IdInfo& ArrayCtrl::AddCtrl(const Id& id, Ctrl& ctrl) {
|
||||
IdInfo& f = AddIndex(id);
|
||||
AddCtrlAt(idx.GetCount() - 1, ctrl);
|
||||
return f;
|
||||
|
|
@ -1037,8 +1037,8 @@ void ArrayCtrl::AddCtrlAt(int ii, Ctrl& ctrl) {
|
|||
ctrl <<= Null;
|
||||
}
|
||||
|
||||
void ArrayCtrl::AddCtrlAt(Id id, Ctrl& ctrl) {
|
||||
AddCtrlAt(-id.AsNdx(), ctrl);
|
||||
void ArrayCtrl::AddCtrlAt(const Id& id, Ctrl& ctrl) {
|
||||
AddCtrlAt(-AsNdx(id), ctrl);
|
||||
}
|
||||
|
||||
void ArrayCtrl::AddRowNumCtrl(Ctrl& ctrl) {
|
||||
|
|
@ -2180,7 +2180,7 @@ int ArrayCtrl::Find(const Value& v, int ii, int i) const {
|
|||
return -1;
|
||||
}
|
||||
|
||||
int ArrayCtrl::Find(const Value& v, Id id, int i) const {
|
||||
int ArrayCtrl::Find(const Value& v, const Id& id, int i) const {
|
||||
return Find(v, GetPos(id), i);
|
||||
}
|
||||
|
||||
|
|
@ -2191,7 +2191,7 @@ bool ArrayCtrl::FindSetCursor(const Value& val, int ii, int i) {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool ArrayCtrl::FindSetCursor(const Value& val, Id id, int i) {
|
||||
bool ArrayCtrl::FindSetCursor(const Value& val, const Id& id, int i) {
|
||||
return FindSetCursor(val, idx.Find(id), i);
|
||||
}
|
||||
|
||||
|
|
@ -2396,7 +2396,7 @@ void ArrayCtrl::Sort(int ii, int (*compare)(const Value& v1, const Value& v2)) {
|
|||
Sort(io);
|
||||
}
|
||||
|
||||
void ArrayCtrl::Sort(Id id, int (*compare)(const Value& v1, const Value& v2)) {
|
||||
void ArrayCtrl::Sort(const Id& id, int (*compare)(const Value& v1, const Value& v2)) {
|
||||
Sort(idx.Find(id), compare);
|
||||
}
|
||||
|
||||
|
|
@ -2868,7 +2868,7 @@ ArrayCtrl::Column& ArrayOption::AddColumn(ArrayCtrl& ac, const char *text, int w
|
|||
return AddColumn(ac, Id(), text, w).NoClickEdit();
|
||||
}
|
||||
|
||||
ArrayCtrl::Column& ArrayOption::AddColumn(ArrayCtrl& ac, Id id, const char *text, int w)
|
||||
ArrayCtrl::Column& ArrayOption::AddColumn(ArrayCtrl& ac, const Id& id, const char *text, int w)
|
||||
{
|
||||
Connect(ac, ac.GetIndexCount());
|
||||
return ac.AddColumn(id, text, w).SetDisplay(*this).InsertValue(f).NoClickEdit();
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ public:
|
|||
|
||||
public:
|
||||
Column& Add(int _pos) { pos.Add(_pos); return *this; }
|
||||
Column& Add(Id id) { pos.Add(-id.AsNdx()); return *this; }
|
||||
Column& AddIndex(Id id) { arrayctrl->AddIndex(id); return Add(id); }
|
||||
Column& Add(const Id& id) { pos.Add(-arrayctrl->AsNdx(id)); return *this; }
|
||||
Column& AddIndex(const Id& id) { arrayctrl->AddIndex(id); return Add(id); }
|
||||
Column& AddIndex() { Add(arrayctrl->GetIndexCount()); arrayctrl->AddIndex(); return *this; }
|
||||
|
||||
Column& SetConvert(const Convert& c);
|
||||
|
|
@ -191,6 +191,7 @@ private:
|
|||
const Order *columnsortsecondary;
|
||||
int min_visible_line, max_visible_line;
|
||||
int ctrl_low, ctrl_high;
|
||||
Index<String> id_ndx;
|
||||
|
||||
int keypos;
|
||||
int cursor;
|
||||
|
|
@ -307,6 +308,8 @@ private:
|
|||
void SyncInfo();
|
||||
void SortA();
|
||||
void SortB(const Vector<int>& o);
|
||||
|
||||
int AsNdx(const String& id) { return id_ndx.FindAdd(id); }
|
||||
|
||||
public: // temporary (TRC 06/07/28) // will be removed!
|
||||
Ctrl& SetCtrl(int i, int j, Ctrl *newctrl) { return SetCtrl(i, j, newctrl, true, true); }
|
||||
|
|
@ -345,34 +348,34 @@ public:
|
|||
Callback WhenSelection;
|
||||
|
||||
IdInfo& IndexInfo(int ii);
|
||||
IdInfo& IndexInfo(Id id);
|
||||
IdInfo& AddIndex(Id id);
|
||||
IdInfo& IndexInfo(const Id& id);
|
||||
IdInfo& AddIndex(const Id& id);
|
||||
IdInfo& AddIndex();
|
||||
int GetIndexCount() const { return idx.GetCount(); }
|
||||
Id GetId(int ii) const { return idx.GetKey(ii); }
|
||||
int GetPos(Id id) const { return idx.Find(id); }
|
||||
IdInfo& SetId(int ii, Id id);
|
||||
IdInfo& AddKey(Id id) { ASSERT(idx.GetCount() == 0); return AddIndex(id); }
|
||||
int GetPos(const Id& id) const { return idx.Find(id); }
|
||||
IdInfo& SetId(int ii, const Id& id);
|
||||
IdInfo& AddKey(const Id& id) { ASSERT(idx.GetCount() == 0); return AddIndex(id); }
|
||||
IdInfo& AddKey() { ASSERT(idx.GetCount() == 0); return AddIndex(); }
|
||||
Id GetKeyId() const { return idx.GetKey(0); }
|
||||
|
||||
Column& AddColumn(const char *text = NULL, int w = 0);
|
||||
Column& AddColumn(Id id, const char *text, int w = 0);
|
||||
Column& AddColumn(const Id& id, const char *text, int w = 0);
|
||||
Column& AddColumnAt(int ii, const char *text, int w = 0);
|
||||
Column& AddColumnAt(Id id, const char *text, int w = 0);
|
||||
Column& AddColumnAt(const Id& id, const char *text, int w = 0);
|
||||
Column& AddRowNumColumn(const char *text, int w = 0);
|
||||
|
||||
int GetColumnCount() const { return column.GetCount(); }
|
||||
int FindColumnWithPos(int pos) const;
|
||||
int FindColumnWithId(Id id) const;
|
||||
int FindColumnWithId(const Id& id) const;
|
||||
Column& ColumnAt(int i) { return column[i]; }
|
||||
Column& ColumnAt(Id id) { return column[FindColumnWithId(id)]; }
|
||||
Column& ColumnAt(const Id& id) { return column[FindColumnWithId(id)]; }
|
||||
HeaderCtrl::Column& HeaderTab(int i) { return header.Tab(i); }
|
||||
HeaderCtrl::Column& HeaderTab(Id id) { return header.Tab(FindColumnWithId(id)); }
|
||||
HeaderCtrl::Column& HeaderTab(const Id& id) { return header.Tab(FindColumnWithId(id)); }
|
||||
const Column& ColumnAt(int i) const { return column[i]; }
|
||||
const Column& ColumnAt(Id id) const { return column[FindColumnWithId(id)]; }
|
||||
const Column& ColumnAt(const Id& id) const { return column[FindColumnWithId(id)]; }
|
||||
const HeaderCtrl::Column& HeaderTab(int i) const { return header.Tab(i); }
|
||||
const HeaderCtrl::Column& HeaderTab(Id id) const { return header.Tab(FindColumnWithId(id)); }
|
||||
const HeaderCtrl::Column& HeaderTab(const Id& id) const { return header.Tab(FindColumnWithId(id)); }
|
||||
|
||||
const HeaderCtrl& HeaderObject() const { return header; }
|
||||
HeaderCtrl& HeaderObject() { return header; }
|
||||
|
|
@ -381,9 +384,9 @@ public:
|
|||
void SerializeSettings(Stream& s);
|
||||
|
||||
IdInfo& AddCtrl(Ctrl& ctrl);
|
||||
IdInfo& AddCtrl(Id id, Ctrl& ctrl);
|
||||
IdInfo& AddCtrl(const Id& id, Ctrl& ctrl);
|
||||
void AddCtrlAt(int ii, Ctrl& ctrl);
|
||||
void AddCtrlAt(Id id, Ctrl& ctrl);
|
||||
void AddCtrlAt(const Id& id, Ctrl& ctrl);
|
||||
void AddRowNumCtrl(Ctrl& ctrl);
|
||||
|
||||
void SetCount(int c);
|
||||
|
|
@ -392,20 +395,20 @@ public:
|
|||
void Clear();
|
||||
void Shrink();
|
||||
Value Get(int i, int ii) const;
|
||||
Value Get(int i, Id id) const;
|
||||
Value Get(int i, const Id& id) const;
|
||||
void Set(int i, int ii, const Value& v);
|
||||
void Set(int i, Id id, const Value& v);
|
||||
void Set(int i, const Id& id, const Value& v);
|
||||
|
||||
Value Get(int ii) const;
|
||||
Value Get(Id id) const;
|
||||
Value Get(const Id& id) const;
|
||||
Value GetOriginal(int ii) const;
|
||||
Value GetOriginal(Id id) const;
|
||||
Value GetOriginal(const Id& id) const;
|
||||
bool IsModified(int ii) const;
|
||||
bool IsModified(Id id) const;
|
||||
bool IsModified(const Id& id) const;
|
||||
Value GetKey() const;
|
||||
Value GetOriginalKey() const;
|
||||
void Set(int ii, const Value& v);
|
||||
void Set(Id id, const Value& v);
|
||||
void Set(const Id& id, const Value& v);
|
||||
|
||||
Value GetColumn(int row, int col) const;
|
||||
Value GetConvertedColumn(int row, int col) const;
|
||||
|
|
@ -478,10 +481,10 @@ public:
|
|||
void SwapDown();
|
||||
|
||||
int Find(const Value& v, int ii = 0, int from = 0) const;
|
||||
int Find(const Value& v, Id id, int from = 0) const;
|
||||
int Find(const Value& v, const Id& id, int from = 0) const;
|
||||
|
||||
bool FindSetCursor(const Value& val, int ii = 0, int from = 0);
|
||||
bool FindSetCursor(const Value& val, Id id, int from = 0);
|
||||
bool FindSetCursor(const Value& val, const Id& id, int from = 0);
|
||||
|
||||
void Sort(const ArrayCtrl::Order& order);
|
||||
void Sort(int from, int count, const ArrayCtrl::Order& order);
|
||||
|
|
@ -490,7 +493,7 @@ public:
|
|||
int (*compare)(const Vector<Value>& v1, const Vector<Value>& v2));
|
||||
void Sort(int ii, int (*compare)(const Value& v1, const Value& v2)
|
||||
= StdValueCompare);
|
||||
void Sort(Id id, int (*compare)(const Value& v1, const Value& v2)
|
||||
void Sort(const Id& id, int (*compare)(const Value& v1, const Value& v2)
|
||||
= StdValueCompare);
|
||||
void Sort() { Sort(0); }
|
||||
|
||||
|
|
@ -649,12 +652,12 @@ public:
|
|||
virtual void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword style) const;
|
||||
|
||||
void Connect(ArrayCtrl& ac, int ii = 0);
|
||||
void Connect(ArrayCtrl& ac, Id id) { Connect(ac, ac.GetPos(id)); }
|
||||
void Connect(ArrayCtrl& ac, const Id& id) { Connect(ac, ac.GetPos(id)); }
|
||||
|
||||
void Disconnect();
|
||||
|
||||
ArrayCtrl::Column& AddColumn(ArrayCtrl& ac, const char *text = NULL, int w = 0);
|
||||
ArrayCtrl::Column& AddColumn(ArrayCtrl& ac, Id id, const char *text, int w = 0);
|
||||
ArrayCtrl::Column& AddColumn(ArrayCtrl& ac, const Id& id, const char *text, int w = 0);
|
||||
|
||||
ArrayOption& TrueFalse(Value _t, Value _f) { t = _t; f = _f; return *this; }
|
||||
Value GetFalse() const { return f; }
|
||||
|
|
|
|||
|
|
@ -1261,16 +1261,16 @@ array index (column in the source data matrix).&]
|
|||
[s7; [*/ Return value]-|IdInfo reference for the given index&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:IndexInfo`(Id`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&]_[* Inde
|
||||
xInfo]([_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:IndexInfo`(const Id`&`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&
|
||||
]_[* IndexInfo]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Returns a reference to the [* IdInfo] structure describing a given
|
||||
array index.&]
|
||||
[s7; [%-*C@3 id]-|the [* Id] index identifier&]
|
||||
[s7; [*/ Return value]-|IdInfo reference for the given index&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:AddIndex`(Id`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&]_[* AddIn
|
||||
dex]([_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:AddIndex`(const Id`&`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&
|
||||
]_[* AddIndex]([@(0.0.255) const] [_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Adds a new index to the array and assign it a given [* Id] identifier.&]
|
||||
[s7; [%-*C@3 id]-|new index identifier&]
|
||||
[s7; [*/ Return value]-|A reference to the [* IdInfo ]structure describing
|
||||
|
|
@ -1300,16 +1300,16 @@ ordinal number).&]
|
|||
no identifier&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:GetPos`(Id`)const:%- [@(0.0.255) int]_[* GetPos]([_^Id^ Id]_[*@3 id])_[@(0.0.255) c
|
||||
onst]&]
|
||||
[s5;:ArrayCtrl`:`:GetPos`(const Id`&`)const:%- [@(0.0.255) int]_[* GetPos]([@(0.0.255) cons
|
||||
t ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s2; Returns the zero`-based positional number of the array index
|
||||
with a given identifier.&]
|
||||
[s7; [%-*C@3 id]-|array index identifier&]
|
||||
[s7; [*/ Return value]-|zero`-based index number, `-1 when not found&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:SetId`(int`,Id`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&]_[* Set
|
||||
Id]([@(0.0.255) int]_[*@3 ii], [_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:SetId`(int`,const Id`&`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&
|
||||
]_[* SetId]([@(0.0.255) int]_[*@3 ii], [@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Sets the identifier for a given array index. This can be used
|
||||
to set or modify the identifier for a previously added index.&]
|
||||
[s7; [%-*C@3 ii]-|zero`-based ordinal number of the index to set the
|
||||
|
|
@ -1320,8 +1320,8 @@ for the [/ ii]`-th index. The reference can be used to set additional
|
|||
properties of the altered index.&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:AddKey`(Id`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&]_[* AddKey](
|
||||
[_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:AddKey`(const Id`&`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&]_
|
||||
[* AddKey]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Adds a [/ primary key] index to the table. The [/ primary key] is
|
||||
just another name for the first index (index with ordinal number
|
||||
0). This is just a handy convention often used for SQL`-based
|
||||
|
|
@ -1363,9 +1363,9 @@ the newly added column. This can be used to set additional properties
|
|||
for the newly added column and the corresponding header tab.&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:AddColumn`(Id`,const char`*`,int`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&
|
||||
]_[* AddColumn]([_^Id^ Id]_[*@3 id], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 text],
|
||||
[@(0.0.255) int]_[*@3 w]_`=_[@3 0])&]
|
||||
[s5;:ArrayCtrl`:`:AddColumn`(const Id`&`,const char`*`,int`):%- [_^ArrayCtrl`:`:Column^ C
|
||||
olumn][@(0.0.255) `&]_[* AddColumn]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id],
|
||||
[@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 text], [@(0.0.255) int]_[*@3 w]_`=_[@3 0])&]
|
||||
[s2; Adds a new column`-index pair to the table. This is equivalent
|
||||
to the above two`-parameter version but, in addition, the method
|
||||
sets the [* Id] identifier for the newly created index.&]
|
||||
|
|
@ -1389,9 +1389,9 @@ source for this column&]
|
|||
the newly added array column.&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:AddColumnAt`(Id`,const char`*`,int`):%- [_^ArrayCtrl`:`:Column^ Colum
|
||||
n][@(0.0.255) `&]_[* AddColumnAt]([_^Id^ Id]_[*@3 id], [@(0.0.255) const]_[@(0.0.255) char]_`*
|
||||
[*@3 text], [@(0.0.255) int]_[*@3 w]_`=_[@3 0])&]
|
||||
[s5;:ArrayCtrl`:`:AddColumnAt`(const Id`&`,const char`*`,int`):%- [_^ArrayCtrl`:`:Column^ C
|
||||
olumn][@(0.0.255) `&]_[* AddColumnAt]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id],
|
||||
[@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 text], [@(0.0.255) int]_[*@3 w]_`=_[@3 0])&]
|
||||
[s2; Adds a new column to the table and binds it to a given source
|
||||
data index.&]
|
||||
[s7; [%-*C@3 id]-|identifier of the index to use as source for the newly
|
||||
|
|
@ -1443,8 +1443,9 @@ the controls.&]
|
|||
the newly added index&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:AddCtrl`(Id`,Ctrl`&`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&]_
|
||||
[* AddCtrl]([_^Id^ Id]_[*@3 id], [_^Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 ctrl])&]
|
||||
[s5;:ArrayCtrl`:`:AddCtrl`(const Id`&`,Ctrl`&`):%- [_^ArrayCtrl`:`:IdInfo^ IdInfo][@(0.0.255) `&
|
||||
]_[* AddCtrl]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id], [_^Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 ctrl
|
||||
])&]
|
||||
[s2; Adds a new index`-control pair to the table. This is identical
|
||||
to the above version with the only difference that the newly
|
||||
added index is assigned an [* Id] identifier at the same time.&]
|
||||
|
|
@ -1465,8 +1466,8 @@ this control&]
|
|||
index&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:AddCtrlAt`(Id`,Ctrl`&`):%- [@(0.0.255) void]_[* AddCtrlAt]([_^Id^ Id]_[*@3 i
|
||||
d], [_^Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 ctrl])&]
|
||||
[s5;:ArrayCtrl`:`:AddCtrlAt`(const Id`&`,Ctrl`&`):%- [@(0.0.255) void]_[* AddCtrlAt]([@(0.0.255) c
|
||||
onst ][_^Id^ Id]`&_[*@3 id], [_^Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 ctrl])&]
|
||||
[s2; Adds a new control to the table and binds it to the index with
|
||||
given identifier.&]
|
||||
[s7; [%-*C@3 id]-|identifier of the index to bind to this control&]
|
||||
|
|
@ -1502,8 +1503,8 @@ data index.&]
|
|||
index as its source, `-1 when not found&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:FindColumnWithId`(Id`)const:%- [@(0.0.255) int]_[* FindColumnWithId]([_^Id^ I
|
||||
d]_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:FindColumnWithId`(const Id`&`)const:%- [@(0.0.255) int]_[* FindColumnWi
|
||||
thId]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s2; Returns the zero`-based index of a column based on its source
|
||||
data index.&]
|
||||
[s7; [%-*C@3 id]-|source index identifier&]
|
||||
|
|
@ -1519,8 +1520,8 @@ mnAt]([@(0.0.255) int]_[*@3 i])&]
|
|||
the given column&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:ColumnAt`(Id`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&]_[* Colum
|
||||
nAt]([_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:ColumnAt`(const Id`&`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&
|
||||
]_[* ColumnAt]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Returns the [* Column] structure describing a given column.&]
|
||||
[s7; [%-*C@3 i]-|zero`-based column index&]
|
||||
[s7; [*/ Return value]-|a constant reference to the [* Column] structure
|
||||
|
|
@ -1537,8 +1538,9 @@ it can be used to query properties for the column.&]
|
|||
the given column&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:ColumnAt`(Id`)const:%- [@(0.0.255) const]_[_^ArrayCtrl`:`:Column^ Colum
|
||||
n][@(0.0.255) `&]_[* ColumnAt]([_^Id^ Id]_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:ColumnAt`(const Id`&`)const:%- [@(0.0.255) const]_[_^ArrayCtrl`:`:Column^ C
|
||||
olumn][@(0.0.255) `&]_[* ColumnAt]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) cons
|
||||
t]&]
|
||||
[s2; Returns a constant reference to the [* Column] structure describing
|
||||
a column with given source index. This is the constant version
|
||||
of the above method; it can be used to query properties for the
|
||||
|
|
@ -1573,16 +1575,17 @@ This can be used to set additional properties of the header column
|
|||
title etc.)&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:HeaderTab`(Id`):%- [_^HeaderCtrl`:`:Column^ HeaderCtrl`::Column][@(0.0.255) `&
|
||||
]_[* HeaderTab]([_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:HeaderTab`(const Id`&`):%- [_^HeaderCtrl`:`:Column^ HeaderCtrl`::Colum
|
||||
n][@(0.0.255) `&]_[* HeaderTab]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Returns the [* HeaderCtrl`::Column] descriptive structure for the
|
||||
column bound to a given source index.&]
|
||||
[s7; [%-*C@3 id]-|identifier of the index used as source for the column&]
|
||||
[s7; [*/ Return value]-|a reference to the [* HeaderCtrl`::Column] structure&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:HeaderTab`(Id`)const:%- [@(0.0.255) const]_[_^HeaderCtrl`:`:Column^ Hea
|
||||
derCtrl`::Column][@(0.0.255) `&]_[* HeaderTab]([_^Id^ Id]_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:HeaderTab`(const Id`&`)const:%- [@(0.0.255) const]_[_^HeaderCtrl`:`:Column^ H
|
||||
eaderCtrl`::Column][@(0.0.255) `&]_[* HeaderTab]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) c
|
||||
onst]&]
|
||||
[s2; Returns a constant reference to the [* HeaderCtrl`::Column] descriptive
|
||||
structure for the column bound to a given source index.&]
|
||||
[s7; [%-*C@3 id]-|identifier of the index used as source for the column&]
|
||||
|
|
@ -1785,8 +1788,8 @@ the minimum required memory space.&]
|
|||
matrix&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Get`(int`,Id`)const:%- [_^Value^ Value]_[* Get]([@(0.0.255) int]_[*@3 i],
|
||||
[_^Id^ Id]_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:Get`(int`,const Id`&`)const:%- [_^Value^ Value]_[* Get]([@(0.0.255) int]_
|
||||
[*@3 i], [@(0.0.255) const ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s2; Returns the value at a given location in the source data matrix.
|
||||
In this version, the source indices are addressed by their identifiers.&]
|
||||
[s7; [%-*C@3 i]-|zero`-based row number&]
|
||||
|
|
@ -1808,8 +1811,8 @@ the function fails with an [* ASSERT].&]
|
|||
[s7; [*/ Return value]-|value at a given location in the cursor row&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Get`(Id`)const:%- [_^Value^ Value]_[* Get]([_^Id^ Id]_[*@3 id])_[@(0.0.255) c
|
||||
onst]&]
|
||||
[s5;:ArrayCtrl`:`:Get`(const Id`&`)const:%- [_^Value^ Value]_[* Get]([@(0.0.255) const
|
||||
][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s2; Returns the value of a given source index at the currently active
|
||||
cursor row. This is equivalent to [* Get(GetCursor(), id)].&]
|
||||
[s7; [%-*C@3 id]-|source index identifier&]
|
||||
|
|
@ -1826,8 +1829,8 @@ took place.&]
|
|||
[s7; [*/ Return value]-|value at the given location in the cursor row&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:GetOriginal`(Id`)const:%- [_^Value^ Value]_[* GetOriginal]([_^Id^ Id]_[*@3 i
|
||||
d])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:GetOriginal`(const Id`&`)const:%- [_^Value^ Value]_[* GetOriginal]([@(0.0.255) c
|
||||
onst ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s2; Returns the `'original`' value (i.e., without any editing changed
|
||||
applied) of a given source index at the currently active cursor
|
||||
row.&]
|
||||
|
|
@ -1859,8 +1862,9 @@ nt]_[*@3 i], [@(0.0.255) int]_[*@3 ii], [@(0.0.255) const]_[_^Value^ Value][@(0.
|
|||
[s7; [%-*C@3 v]-|value to set to the given cell&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Set`(int`,Id`,const Value`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) in
|
||||
t]_[*@3 i], [_^Id^ Id]_[*@3 id], [@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 v])&]
|
||||
[s5;:ArrayCtrl`:`:Set`(int`,const Id`&`,const Value`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) i
|
||||
nt]_[*@3 i], [@(0.0.255) const ][_^Id^ Id]`&_[*@3 id], [@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&
|
||||
]_[*@3 v])&]
|
||||
[s2; Sets the value at a given location in the source data matrix.
|
||||
&]
|
||||
[s7; [%-*C@3 i]-|zero`-based row number&]
|
||||
|
|
@ -1877,8 +1881,8 @@ the value in the appropriate editor control.&]
|
|||
[s7; [%-*C@3 v]-|value to set&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Set`(Id`,const Value`&`):%- [@(0.0.255) void]_[* Set]([_^Id^ Id]_[*@3 id],
|
||||
[@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 v])&]
|
||||
[s5;:ArrayCtrl`:`:Set`(const Id`&`,const Value`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) c
|
||||
onst ][_^Id^ Id]`&_[*@3 id], [@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 v])&]
|
||||
[s2; Modifies the value at a given location in the cursor row. This
|
||||
overloaded version uses the [* Id] identifier to address the relevant
|
||||
index.&]
|
||||
|
|
@ -2052,9 +2056,10 @@ is less than the second parameter ([/ v2]) according to the desired
|
|||
ordering.&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Sort`(Id`,int`(`*`)`(const Value`&v1`,const Value`&v2`)`):%- [@(0.0.255) v
|
||||
oid]_[* Sort]([_^Id^ Id]_[*@3 id], [@(0.0.255) int]_(`*[*@3 compare])([@(0.0.255) const]_Valu
|
||||
e[@(0.0.255) `&]_v1, [@(0.0.255) const]_Value[@(0.0.255) `&]_v2)_`=_StdValueCompare)&]
|
||||
[s5;:ArrayCtrl`:`:Sort`(const Id`&`,int`(`*`)`(const Value`&v1`,const Value`&v2`)`):%- [@(0.0.255) v
|
||||
oid]_[* Sort]([@(0.0.255) const ][_^Id^ Id]`&_[*@3 id], [@(0.0.255) int]_(`*[*@3 compare])([@(0.0.255) c
|
||||
onst]_Value[@(0.0.255) `&]_v1, [@(0.0.255) const]_Value[@(0.0.255) `&]_v2)_`=_StdValueC
|
||||
ompare)&]
|
||||
[s2; Sorts the array rows according to the given ordering predicate
|
||||
for the source index with a given identifier. When not explicitly
|
||||
specified, the [* StdValueCompare] function is used as the default
|
||||
|
|
@ -2299,9 +2304,9 @@ search&]
|
|||
none&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Find`(const Value`&`,Id`,int`)const:%- [@(0.0.255) int]_[* Find]([@(0.0.255) c
|
||||
onst]_[_^Value^ Value][@(0.0.255) `&]_[*@3 v], [_^Id^ Id]_[*@3 id], [@(0.0.255) int]_[*@3 from]_
|
||||
`=_[@3 0])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:Find`(const Value`&`,const Id`&`,int`)const:%- [@(0.0.255) int]_[* Find
|
||||
]([@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const
|
||||
][_^Id^ Id]`&_[*@3 id], [@(0.0.255) int]_[*@3 from]_`=_[@3 0])_[@(0.0.255) const]&]
|
||||
[s2; Locates the row (using linear search beginning at the row [/ from])
|
||||
in which the source index value identified by [/ id] equals [/ val].
|
||||
If such a row is found, the function returns its zero`-based
|
||||
|
|
@ -2328,9 +2333,9 @@ search&]
|
|||
none&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:FindSetCursor`(const Value`&`,Id`,int`):%- [@(0.0.255) bool]_[* FindSet
|
||||
Cursor]([@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 val],
|
||||
[_^Id^ Id]_[*@3 id], [@(0.0.255) int]_[*@3 from]_`=_[@3 0])&]
|
||||
[s5;:ArrayCtrl`:`:FindSetCursor`(const Value`&`,const Id`&`,int`):%- [@(0.0.255) bool]_
|
||||
[* FindSetCursor]([@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 val],
|
||||
[@(0.0.255) const ][_^Id^ Id]`&_[*@3 id], [@(0.0.255) int]_[*@3 from]_`=_[@3 0])&]
|
||||
[s2; Locates the row (using linear search beginning at the row [/ from])
|
||||
in which the source index value identified by [/ id] equals [/ val].
|
||||
If such a row is found, the [* SetCursor] is called automatically
|
||||
|
|
@ -2363,8 +2368,8 @@ t]_[*@3 ii])_[@(0.0.255) const]&]
|
|||
`= the index is in its original state&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:IsModified`(Id`)const:%- [@(0.0.255) bool]_[* IsModified]([_^Id^ Id]_[*@3 i
|
||||
d])_[@(0.0.255) const]&]
|
||||
[s5;:ArrayCtrl`:`:IsModified`(const Id`&`)const:%- [@(0.0.255) bool]_[* IsModified]([@(0.0.255) c
|
||||
onst ][_^Id^ Id]`&_[*@3 id])_[@(0.0.255) const]&]
|
||||
[s2; Checks a source index in the currently edited array row for
|
||||
changes.&]
|
||||
[s7; [%-*C@3 id]-|source index identifier&]
|
||||
|
|
@ -2652,19 +2657,20 @@ some of which are also settable via ArrayCtrl methods.&]
|
|||
[s2; Adds another source data index to the list of source indices
|
||||
used as the data for the given output column.&]
|
||||
[s7; [%-*C@3 `_pos]-|zero`-based ordinal number of the source index&]
|
||||
[s7; [*/ Return value]-|[* `*this]&]
|
||||
[s7; [*/ Return value]-|[* `*this].&]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Column`:`:Add`(Id`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&]_[* A
|
||||
dd]([_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:Column`:`:Add`(const Id`&`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&
|
||||
]_[* Add](const [_^Id^ Id]`&_[*@3 id])&]
|
||||
[s2; Adds another source data index to the list of source indices
|
||||
used as the data for the given output column.&]
|
||||
[s7; [%-*C@3 id]-|the [* Id] identifier of the source index&]
|
||||
[s7; [*/ Return value]-|[* `*this]&]
|
||||
[s3; &]
|
||||
[s3; &]
|
||||
[s4;%- &]
|
||||
[s5;:ArrayCtrl`:`:Column`:`:AddIndex`(Id`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&
|
||||
]_[* AddIndex]([_^Id^ Id]_[*@3 id])&]
|
||||
[s5;:ArrayCtrl`:`:Column`:`:AddIndex`(const Id`&`):%- [_^ArrayCtrl`:`:Column^ Column][@(0.0.255) `&
|
||||
]_[* AddIndex]([@(0.0.255) const]_[_^Id^ Id][@(0.0.255) `&]_[*@3 id])&]
|
||||
[s2; Adds another source index to the array and adds it to the list
|
||||
of source indices bound to this output column. The newly created
|
||||
index is assigned the given identifier.&]
|
||||
|
|
|
|||
|
|
@ -306,8 +306,9 @@ void RichPara::PackParts(Stream& out, const RichPara::CharFormat& chrstyle,
|
|||
cf = p.format;
|
||||
if(p.field) {
|
||||
out.Put(FIELD);
|
||||
out.Put32(p.field.AsNdx());
|
||||
String s = p.fieldparam;
|
||||
String s = ~p.field;
|
||||
out % s;
|
||||
s = p.fieldparam;
|
||||
out % s;
|
||||
StringStream oout;
|
||||
CharFormat subf = cf;
|
||||
|
|
@ -522,7 +523,9 @@ void RichPara::UnpackParts(Stream& in, const RichPara::CharFormat& chrstyle,
|
|||
}
|
||||
in.Get();
|
||||
Part& p = part.Top();
|
||||
p.field = Id(in.Get32());
|
||||
String id;
|
||||
in % id;
|
||||
p.field = id;
|
||||
in % p.fieldparam;
|
||||
String s;
|
||||
in % s;
|
||||
|
|
|
|||
|
|
@ -684,7 +684,7 @@ Vector<SqlColumnInfo> SqlSession::EnumColumns(String database, String table)
|
|||
if(!IsNull(database))
|
||||
full_name << '.';
|
||||
full_name << table;
|
||||
if(cursor.Execute(Select(SqlAll()).From(SqlSet(SqlCol(full_name))).Where(none))) {
|
||||
if(cursor.Execute(Select(SqlAll()).From(SqlSet(SqlId(full_name))).Where(none))) {
|
||||
info.SetCount(cursor.GetColumns());
|
||||
for(int i = 0; i < info.GetCount(); i++)
|
||||
info[i] = cursor.GetColumnInfo(i);
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ SqlBool NotNull(const SqlVal& a) {
|
|||
}
|
||||
|
||||
SqlBool SqlFirstRow() {
|
||||
return SqlCol("ROWNUM") == 1;
|
||||
return SqlId("ROWNUM") == 1;
|
||||
}
|
||||
|
||||
SqlBool Like(const SqlVal& a, const SqlVal& b, bool cs) {
|
||||
|
|
@ -136,11 +136,11 @@ SqlBool NotExists(const SqlSet& set) {
|
|||
}
|
||||
|
||||
SqlBool LeftJoin(SqlVal v1, SqlVal v2) {
|
||||
return SqlCol(~v1 + "(+)") == v2;
|
||||
return SqlId(~v1 + "(+)") == v2;
|
||||
}
|
||||
|
||||
SqlBool RightJoin(SqlVal v1, SqlVal v2) {
|
||||
return v1 == SqlCol(~v2 + "(+)");
|
||||
return v1 == SqlId(~v2 + "(+)");
|
||||
}
|
||||
|
||||
SqlBool Join(SqlId tab1, SqlId tab2, SqlId key) {
|
||||
|
|
@ -148,11 +148,11 @@ SqlBool Join(SqlId tab1, SqlId tab2, SqlId key) {
|
|||
}
|
||||
|
||||
SqlBool LeftJoin(SqlId tab1, SqlId tab2, SqlId key) {
|
||||
return SqlCol(~key.Of(tab1) + "(+)") == key.Of(tab2);
|
||||
return SqlId(~key.Of(tab1) + "(+)") == key.Of(tab2);
|
||||
}
|
||||
|
||||
SqlBool RightJoin(SqlId tab1, SqlId tab2, SqlId key) {
|
||||
return key.Of(tab1) == SqlCol(~key.Of(tab2) + "(+)");
|
||||
return key.Of(tab1) == SqlId(~key.Of(tab2) + "(+)");
|
||||
}
|
||||
|
||||
END_UPP_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ struct FieldSqlSet : FieldOperator {
|
|||
SqlSet *set;
|
||||
|
||||
virtual void Field(const char *name, Ref) {
|
||||
set->Cat(SqlCol(name));
|
||||
set->Cat(SqlId(name));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ SqlSelect& SqlSelect::From(const SqlSet& table) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::From(SqlId table) {
|
||||
SqlSelect& SqlSelect::From(const SqlId& table) {
|
||||
String t1 = ~table;
|
||||
text = "select " + text + " from " + t1;
|
||||
tables << ',' << t1;
|
||||
|
|
@ -152,16 +152,7 @@ SqlSelect& SqlSelect::From(SqlId table) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::From(SqlCol table)
|
||||
{
|
||||
String t1 = ~table;
|
||||
text = "select " + text + " from " + t1;
|
||||
tables << ',' << t1;
|
||||
on = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::From(SqlId table1, SqlId table2) {
|
||||
SqlSelect& SqlSelect::From(const SqlId& table1, const SqlId& table2) {
|
||||
String t1 = ~table1;
|
||||
String t2 = ~table2;
|
||||
text = "select " + text + " from " + t1 + ", " + t2;
|
||||
|
|
@ -170,26 +161,7 @@ SqlSelect& SqlSelect::From(SqlId table1, SqlId table2) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::From(SqlCol table1, SqlCol table2) {
|
||||
String t1 = ~table1;
|
||||
String t2 = ~table2;
|
||||
text = "select " + text + " from " + t1 + ", " + t2;
|
||||
tables << ',' << t1 << ',' << t2;
|
||||
on = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::From(SqlId table1, SqlId table2, SqlId table3) {
|
||||
String t1 = ~table1;
|
||||
String t2 = ~table2;
|
||||
String t3 = ~table3;
|
||||
text = "select " + text + " from " + t1 + ", " + t2 + ", " + t3;
|
||||
tables << ',' << t1 << ',' << t2 << ',' << t3;
|
||||
on = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::From(SqlCol table1, SqlCol table2, SqlCol table3) {
|
||||
SqlSelect& SqlSelect::From(const SqlId& table1, const SqlId& table2, const SqlId& table3) {
|
||||
String t1 = ~table1;
|
||||
String t2 = ~table2;
|
||||
String t3 = ~table3;
|
||||
|
|
@ -227,7 +199,7 @@ SqlSelect& SqlSelect::FullJoin0(const String& table) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::InnerJoinRef(SqlId table)
|
||||
SqlSelect& SqlSelect::InnerJoinRef(const SqlId& table)
|
||||
{
|
||||
InnerJoin(table);
|
||||
On(FindSchJoin(tables));
|
||||
|
|
@ -235,7 +207,7 @@ SqlSelect& SqlSelect::InnerJoinRef(SqlId table)
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::LeftJoinRef(SqlId table)
|
||||
SqlSelect& SqlSelect::LeftJoinRef(const SqlId& table)
|
||||
{
|
||||
LeftJoin(table);
|
||||
On(FindSchJoin(tables));
|
||||
|
|
@ -243,7 +215,7 @@ SqlSelect& SqlSelect::LeftJoinRef(SqlId table)
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::RightJoinRef(SqlId table)
|
||||
SqlSelect& SqlSelect::RightJoinRef(const SqlId& table)
|
||||
{
|
||||
RightJoin(table);
|
||||
On(FindSchJoin(tables));
|
||||
|
|
@ -251,7 +223,7 @@ SqlSelect& SqlSelect::RightJoinRef(SqlId table)
|
|||
return *this;
|
||||
}
|
||||
|
||||
SqlSelect& SqlSelect::FullJoinRef(SqlId table)
|
||||
SqlSelect& SqlSelect::FullJoinRef(const SqlId& table)
|
||||
{
|
||||
FullJoin(table);
|
||||
On(FindSchJoin(tables));
|
||||
|
|
@ -270,7 +242,7 @@ SqlVal SqlSelect::AsValue() const
|
|||
return SqlVal(String("(").Cat() << text << ")", SqlVal::LOW);
|
||||
}
|
||||
|
||||
SqlSelect SqlSelect::AsTable(SqlId tab) const
|
||||
SqlSelect SqlSelect::AsTable(const SqlId& tab) const
|
||||
{
|
||||
SqlSelect h;
|
||||
h.text = String("(").Cat() << text << ") as " << ~tab;
|
||||
|
|
@ -315,7 +287,7 @@ SqlDelete& SqlDelete::Where(const SqlBool& b) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
void SqlInsert::Column(SqlId column, SqlVal val) {
|
||||
void SqlInsert::Column(const SqlId& column, SqlVal val) {
|
||||
set1.Cat(column);
|
||||
set2.Cat(val);
|
||||
if(keycolumn.IsNull()) keycolumn = column;
|
||||
|
|
@ -336,7 +308,7 @@ SqlInsert::operator SqlStatement() const {
|
|||
return SqlStatement(s);
|
||||
}
|
||||
|
||||
SqlInsert& SqlInsert::From(SqlId from) {
|
||||
SqlInsert& SqlInsert::From(const SqlId& from) {
|
||||
return From(SqlSet(from));
|
||||
}
|
||||
|
||||
|
|
@ -402,7 +374,7 @@ SqlUpdate::operator SqlStatement() const {
|
|||
return SqlStatement(stmt);
|
||||
}
|
||||
|
||||
void SqlUpdate::Column(SqlId column, SqlVal val) {
|
||||
void SqlUpdate::Column(const SqlId& column, SqlVal val) {
|
||||
set.Cat(SqlVal(SqlVal(column), " = ", val, SqlS::COMP));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,43 +2,38 @@
|
|||
|
||||
NAMESPACE_UPP
|
||||
|
||||
SqlCol SqlCol::As(const char *as) const
|
||||
{
|
||||
return name + SqlCase(MSSQL | PGSQL, " as ")(" ") + as;
|
||||
}
|
||||
|
||||
SqlCol SqlId::Of(const char *of) const
|
||||
SqlId SqlId::Of(const char *of) const
|
||||
{
|
||||
return of + ('.' + ToString());
|
||||
}
|
||||
|
||||
SqlCol SqlId::Of(SqlId id) const
|
||||
SqlId SqlId::Of(SqlId id) const
|
||||
{
|
||||
return id.IsNull() ? ToString() : id.ToString() + '.' + ToString();
|
||||
}
|
||||
|
||||
SqlCol SqlId::operator[](const SqlId& id) const
|
||||
SqlId SqlId::operator[](const SqlId& id) const
|
||||
{
|
||||
return id.IsNull() ? ToString() : ToString() + '.' + id.ToString();
|
||||
}
|
||||
|
||||
SqlCol SqlId::As(const char *as) const
|
||||
SqlId SqlId::As(const char *as) const
|
||||
{
|
||||
return id.IsNull() ? ToString() : ToString() + SqlCase(MSSQL | PGSQL, " as ")(" ") + as;
|
||||
}
|
||||
|
||||
SqlCol SqlId::operator()(SqlId p) {
|
||||
SqlId SqlId::operator()(SqlId p) {
|
||||
String x;
|
||||
PutOf0(x, p);
|
||||
return x;
|
||||
}
|
||||
|
||||
SqlCol SqlId::operator [] (int i) const
|
||||
SqlId SqlId::operator [] (int i) const
|
||||
{
|
||||
return ToString() + FormatInt(i);
|
||||
}
|
||||
|
||||
SqlCol SqlId::operator&(const SqlId& s) const
|
||||
SqlId SqlId::operator&(const SqlId& s) const
|
||||
{
|
||||
return ToString() + "$" + s.ToString();
|
||||
}
|
||||
|
|
@ -142,7 +137,7 @@ SqlVal::SqlVal(const Nuller&) {
|
|||
SetNull();
|
||||
}
|
||||
|
||||
SqlVal::SqlVal(SqlId id) {
|
||||
SqlVal::SqlVal(const SqlId& id) {
|
||||
SetHigh(id.ToString());
|
||||
}
|
||||
|
||||
|
|
@ -151,18 +146,6 @@ SqlVal::SqlVal(const SqlId& (*id)())
|
|||
SetHigh((*id)().ToString());
|
||||
}
|
||||
|
||||
SqlVal::SqlVal(SqlCol id) {
|
||||
SetHigh(id.ToString());
|
||||
}
|
||||
/*
|
||||
SqlVal::SqlVal(const SqlSelect& x) {
|
||||
SetHigh('(' + ((SqlStatement) x).GetText() + ')');
|
||||
}
|
||||
|
||||
SqlVal::SqlVal(const SqlBool& x) {
|
||||
SetHigh(~x);
|
||||
}
|
||||
*/
|
||||
SqlVal::SqlVal(const Case& x) {
|
||||
SetHigh(~x);
|
||||
}
|
||||
|
|
@ -255,7 +238,7 @@ SqlVal Count(const SqlSet& exp)
|
|||
|
||||
SqlVal SqlAll()
|
||||
{
|
||||
return SqlCol("*");
|
||||
return SqlId("*");
|
||||
}
|
||||
|
||||
SqlVal SqlCountRows()
|
||||
|
|
@ -407,18 +390,18 @@ SqlVal Coalesce(const SqlVal& exp1, const SqlVal& exp2, const SqlVal& exp3, cons
|
|||
return SqlFunc("coalesce", exp1, exp2, exp3, exp4);
|
||||
}
|
||||
|
||||
SqlVal Prior(SqlId a) {
|
||||
SqlVal Prior(const SqlId& a) {
|
||||
return SqlVal("prior " + ~a, SqlS::UNARY);
|
||||
}
|
||||
|
||||
SqlVal NextVal(SqlId a) {
|
||||
SqlVal NextVal(const SqlId& a) {
|
||||
return SqlVal(SqlCase
|
||||
(PGSQL, "nextval('" + ~a + "')")
|
||||
(~a + ".NEXTVAL")
|
||||
, SqlS::HIGH);
|
||||
}
|
||||
|
||||
SqlVal CurrVal(SqlId a) {
|
||||
SqlVal CurrVal(const SqlId& a) {
|
||||
return SqlVal(SqlCase
|
||||
(PGSQL, "currval('" + ~a + "')")
|
||||
(~a + ".CURRVAL")
|
||||
|
|
@ -427,16 +410,16 @@ SqlVal CurrVal(SqlId a) {
|
|||
|
||||
SqlVal SqlRowNum()
|
||||
{
|
||||
return SqlCol("ROWNUM");
|
||||
return SqlId("ROWNUM");
|
||||
}
|
||||
|
||||
SqlVal SqlArg() {
|
||||
return SqlCol("?");
|
||||
return SqlId("?");
|
||||
}
|
||||
|
||||
SqlVal OuterJoin(SqlCol col)
|
||||
SqlVal OuterJoin(const SqlId& col)
|
||||
{
|
||||
return SqlCol(~col + "(+)");
|
||||
return SqlId(~col + "(+)");
|
||||
}
|
||||
|
||||
SqlVal SqlBinary(const char *s, int l)
|
||||
|
|
|
|||
|
|
@ -84,17 +84,6 @@ String SqlFormat(const Value& x);
|
|||
String SqlFormatBinary(const char *s, int l);
|
||||
String SqlFormatBinary(const String& x);
|
||||
|
||||
class SqlCol : Moveable<SqlCol> {
|
||||
String name;
|
||||
public:
|
||||
String ToString() const { return name; }
|
||||
const String& operator~() const { return name; }
|
||||
|
||||
SqlCol As(const char *as) const;
|
||||
|
||||
SqlCol(const String& name) : name(name) {}
|
||||
};
|
||||
|
||||
class SqlId : Moveable<SqlId> {
|
||||
protected:
|
||||
Id id;
|
||||
|
|
@ -104,29 +93,29 @@ private:
|
|||
void PutOf(String& s, const SqlId& b);
|
||||
|
||||
public:
|
||||
bool IsEqual(SqlId b) const { return id == b.id; }
|
||||
bool IsEqual(Id b) const { return id == b; }
|
||||
bool IsNull() const { return id.IsNull(); }
|
||||
bool IsEqual(const SqlId& b) const { return id == b.id; }
|
||||
bool IsEqual(const Id& b) const { return id == b; }
|
||||
bool IsNull() const { return id.IsNull(); }
|
||||
|
||||
operator Id() const { return id; }
|
||||
String ToString() const { return id.ToString(); }
|
||||
String operator~() const { return ToString(); }
|
||||
operator const Id&() const { return id; }
|
||||
const String& ToString() const { return id.ToString(); }
|
||||
String operator~() const { return ToString(); }
|
||||
|
||||
SqlCol Of(SqlId id) const;
|
||||
SqlCol Of(const char *of) const;
|
||||
SqlCol As(const char *as) const;
|
||||
SqlCol As(SqlId id) const { return As(~~id); }
|
||||
SqlCol operator[](int i) const;
|
||||
SqlCol operator&(const SqlId& s) const;
|
||||
SqlCol operator[](const SqlId& id) const;
|
||||
SqlId Of(SqlId id) const;
|
||||
SqlId Of(const char *of) const;
|
||||
SqlId As(const char *as) const;
|
||||
SqlId As(SqlId id) const { return As(~~id); }
|
||||
SqlId operator[](int i) const;
|
||||
SqlId operator&(const SqlId& s) const;
|
||||
SqlId operator[](const SqlId& id) const;
|
||||
|
||||
SqlCol operator()(SqlId p);
|
||||
SqlId operator()(SqlId p);
|
||||
|
||||
//$ SqlId operator()(SqlId p, SqlId p1, ...);
|
||||
#define E__PutSqlId(I) PutOf(x, p##I)
|
||||
#define E__SqlId(I) SqlId p##I
|
||||
#define E__SqlId(I) const SqlId& p##I
|
||||
#define E__Of(I) \
|
||||
SqlCol operator()(SqlId p, __List##I(E__SqlId)) { \
|
||||
SqlId operator()(const SqlId& p, __List##I(E__SqlId)) { \
|
||||
String x; \
|
||||
PutOf0(x, p); \
|
||||
__List##I(E__PutSqlId); \
|
||||
|
|
@ -140,9 +129,11 @@ __Expand(E__Of)
|
|||
SqlId() {}
|
||||
SqlId(const char *s) : id(s) {}
|
||||
SqlId(const String& s) : id(s) {}
|
||||
SqlId(Id id) : id(id) {}
|
||||
SqlId(const Id& id) : id(id) {}
|
||||
};
|
||||
|
||||
typedef SqlId SqlCol; // Deprecated
|
||||
|
||||
#define SQLID(x) const UPP::SqlId x(#x);
|
||||
#define SQL_ID(n, x) const UPP::SqlId n(#x);
|
||||
|
||||
|
|
@ -210,11 +201,8 @@ public:
|
|||
SqlVal(Time x);
|
||||
SqlVal(const Value& x);
|
||||
SqlVal(const Nuller&);
|
||||
SqlVal(SqlId id);
|
||||
SqlVal(const SqlId& id);
|
||||
SqlVal(const SqlId& (*id)());
|
||||
SqlVal(SqlCol id);
|
||||
// SqlVal(const SqlSelect& x);
|
||||
// SqlVal(const SqlBool& x);
|
||||
SqlVal(const Case& x);
|
||||
};
|
||||
|
||||
|
|
@ -282,31 +270,25 @@ SqlVal Cast(const char* type, const SqlId& a);
|
|||
|
||||
SqlVal SqlNvl(const SqlVal& a);
|
||||
inline SqlVal Nvl(const SqlVal& a) { return SqlNvl(SqlVal(a)); }
|
||||
inline SqlVal Nvl(const SqlCol& a) { return SqlNvl(SqlVal(a)); }
|
||||
inline SqlVal Nvl(const SqlId& a) { return SqlNvl(SqlVal(a)); }
|
||||
|
||||
SqlVal SqlNvl(const SqlVal& a, const SqlVal& b);
|
||||
inline SqlVal Nvl(const SqlVal& a, const SqlVal& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlVal& a, const SqlCol& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlVal& a, const SqlId& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlCol& a, const SqlVal& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlCol& a, const SqlCol& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlCol& a, const SqlId& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlId& a, const SqlVal& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlId& a, const SqlCol& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
inline SqlVal Nvl(const SqlId& a, const SqlId& b) { return SqlNvl(SqlVal(a), SqlVal(b)); }
|
||||
|
||||
SqlVal Coalesce(const SqlVal& exp1, const SqlVal& exp2);
|
||||
SqlVal Coalesce(const SqlVal& exp1, const SqlVal& exp2, const SqlVal& exp3);
|
||||
SqlVal Coalesce(const SqlVal& exp1, const SqlVal& exp2, const SqlVal& exp3, const SqlVal& exp4);
|
||||
|
||||
SqlVal Prior(SqlId a);
|
||||
SqlVal Prior(const SqlId& a);
|
||||
|
||||
SqlVal NextVal(SqlId a);
|
||||
SqlVal CurrVal(SqlId a);
|
||||
SqlVal OuterJoin(SqlCol col);
|
||||
SqlVal NextVal(const SqlId& a);
|
||||
SqlVal CurrVal(const SqlId& a);
|
||||
SqlVal OuterJoin(const SqlId& col); //Oracle only, deprecated
|
||||
|
||||
inline SqlVal operator++(SqlId a) { return NextVal(a); }
|
||||
inline SqlVal operator++(const SqlId& a) { return NextVal(a); }
|
||||
|
||||
SqlVal SqlRowNum();
|
||||
|
||||
|
|
@ -360,7 +342,6 @@ SqlBool NotNull(const SqlVal& a);
|
|||
|
||||
inline SqlBool IsNull(const SqlId& a) { return SqlIsNull(a); }
|
||||
inline SqlBool IsNull(const SqlVal& a) { return SqlIsNull(a); }
|
||||
inline SqlBool IsNull(const SqlCol& a) { return SqlIsNull(a); }
|
||||
|
||||
SqlBool Like(const SqlVal& a, const SqlVal& b, bool casesensitive = true);
|
||||
SqlBool NotLike(const SqlVal& a, const SqlVal& b, bool casesensitive = true);
|
||||
|
|
@ -375,14 +356,14 @@ SqlBool NotExists(const SqlSet& set);
|
|||
|
||||
SqlBool LikeUpperAscii(const SqlVal& a, const SqlVal& b);
|
||||
|
||||
SqlBool LeftJoin(SqlVal v1, SqlVal v2);
|
||||
SqlBool RightJoin(SqlVal v1, SqlVal v2);
|
||||
SqlBool LeftJoin(SqlVal v1, SqlVal v2); // Deprecated
|
||||
SqlBool RightJoin(SqlVal v1, SqlVal v2); // Deprecated
|
||||
|
||||
SqlBool Join(SqlId tab1, SqlId tab2, SqlId key);
|
||||
SqlBool LeftJoin(SqlId tab1, SqlId tab2, SqlId key);
|
||||
SqlBool RightJoin(SqlId tab1, SqlId tab2, SqlId key);
|
||||
SqlBool Join(SqlId tab1, SqlId tab2, SqlId key); // Deprecated
|
||||
SqlBool LeftJoin(SqlId tab1, SqlId tab2, SqlId key); // Deprecated
|
||||
SqlBool RightJoin(SqlId tab1, SqlId tab2, SqlId key); // Deprecated
|
||||
|
||||
SqlBool SqlFirstRow();
|
||||
SqlBool SqlFirstRow(); // Oracle specific
|
||||
|
||||
inline SqlBool operator==(const SqlVal& a, const SqlSet& b) { return In(a, b); }
|
||||
inline SqlBool operator!=(const SqlVal& a, const SqlSet& b) { return NotIn(a, b); }
|
||||
|
|
@ -504,32 +485,25 @@ public:
|
|||
|
||||
SqlSelect& Get();
|
||||
SqlSelect& From(const SqlSet& set);
|
||||
SqlSelect& From(SqlId table);
|
||||
SqlSelect& From(SqlCol table);
|
||||
SqlSelect& From(SqlId table1, SqlId table2);
|
||||
SqlSelect& From(SqlCol table1, SqlCol table2);
|
||||
SqlSelect& From(SqlId table1, SqlId table2, SqlId table3);
|
||||
SqlSelect& From(SqlCol table1, SqlCol table2, SqlCol table3);
|
||||
SqlSelect& From(const SqlId& table);
|
||||
SqlSelect& From(const SqlId& table1, const SqlId& table2);
|
||||
SqlSelect& From(const SqlId& table1, const SqlId& table2, const SqlId& table3);
|
||||
SqlSelect& From(const SqlVal& a) { return From(SqlSet(a)); }
|
||||
|
||||
SqlSelect& InnerJoin(SqlId table) { return InnerJoin0(~table); }
|
||||
SqlSelect& LeftJoin(SqlId table) { return LeftJoin0(~table); }
|
||||
SqlSelect& RightJoin(SqlId table) { return RightJoin0(~table); }
|
||||
SqlSelect& FullJoin(SqlId table) { return FullJoin0(~table); }
|
||||
SqlSelect& InnerJoin(SqlCol table) { return InnerJoin0(~table); }
|
||||
SqlSelect& LeftJoin(SqlCol table) { return LeftJoin0(~table); }
|
||||
SqlSelect& RightJoin(SqlCol table) { return RightJoin0(~table); }
|
||||
SqlSelect& FullJoin(SqlCol table) { return FullJoin0(~table); }
|
||||
SqlSelect& InnerJoin(const SqlId& table) { return InnerJoin0(~table); }
|
||||
SqlSelect& LeftJoin(const SqlId& table) { return LeftJoin0(~table); }
|
||||
SqlSelect& RightJoin(const SqlId& table) { return RightJoin0(~table); }
|
||||
SqlSelect& FullJoin(const SqlId& table) { return FullJoin0(~table); }
|
||||
|
||||
SqlSelect& InnerJoin(const SqlSet& set) { return InnerJoin0(~set(SqlSet::SET)); }
|
||||
SqlSelect& LeftJoin(const SqlSet& set) { return LeftJoin0(~set(SqlSet::SET)); }
|
||||
SqlSelect& RightJoin(const SqlSet& set) { return RightJoin0(~set(SqlSet::SET)); }
|
||||
SqlSelect& FullJoin(const SqlSet& set) { return FullJoin0(~set(SqlSet::SET)); }
|
||||
|
||||
SqlSelect& InnerJoinRef(SqlId table);
|
||||
SqlSelect& LeftJoinRef(SqlId table);
|
||||
SqlSelect& RightJoinRef(SqlId table);
|
||||
SqlSelect& FullJoinRef(SqlId table);
|
||||
SqlSelect& InnerJoinRef(const SqlId& table);
|
||||
SqlSelect& LeftJoinRef(const SqlId& table);
|
||||
SqlSelect& RightJoinRef(const SqlId& table);
|
||||
SqlSelect& FullJoinRef(const SqlId& table);
|
||||
|
||||
SqlSelect& Where(const SqlBool& exp);
|
||||
SqlSelect& On(const SqlBool& exp);
|
||||
|
|
@ -554,7 +528,7 @@ public:
|
|||
operator SqlSet() const { return SqlSet(text, SqlSet::SETOP); }
|
||||
operator SqlStatement() const { return SqlStatement(text); }
|
||||
SqlVal AsValue() const;
|
||||
SqlSelect AsTable(SqlId tab) const;
|
||||
SqlSelect AsTable(const SqlId& tab) const;
|
||||
|
||||
SqlSelect(Fields f);
|
||||
SqlSelect(const SqlSet& s) { text = ~s; on = false; }
|
||||
|
|
@ -620,12 +594,12 @@ class SqlInsert {
|
|||
SqlBool where;
|
||||
|
||||
public:
|
||||
void Column(SqlId column, SqlVal val);
|
||||
void Column(SqlId column) { Column(column, column); }
|
||||
SqlInsert& operator()(SqlId column, SqlVal val) { Column(column, val); return *this; }
|
||||
SqlInsert& operator()(SqlId column) { Column(column, column); return *this; }
|
||||
void Column(const SqlId& column, SqlVal val);
|
||||
void Column(const SqlId& column) { Column(column, column); }
|
||||
SqlInsert& operator()(const SqlId& column, SqlVal val) { Column(column, val); return *this; }
|
||||
SqlInsert& operator()(const SqlId& column) { Column(column, column); return *this; }
|
||||
SqlInsert& operator()(Fields f, bool nokey = false);
|
||||
SqlInsert& From(SqlId from);
|
||||
SqlInsert& From(const SqlId& from);
|
||||
SqlInsert& From(SqlSet _from) { from = _from; return *this; }
|
||||
SqlInsert& From(SqlVal from) { return From(SqlSet(from)); }
|
||||
SqlInsert& Where(SqlBool w) { where = w; return *this; }
|
||||
|
|
@ -637,8 +611,9 @@ public:
|
|||
operator SqlStatement() const;
|
||||
operator bool() const { return !set1.IsEmpty(); }
|
||||
|
||||
SqlInsert(SqlId table) : table(table) {}
|
||||
SqlInsert(SqlId table, SqlSet set1, SqlSet set2) : table(table), set1(set1), set2(set2) {}
|
||||
SqlInsert(const SqlId& table) : table(table) {}
|
||||
SqlInsert(const SqlId& table, const SqlSet& set1, const SqlSet& set2)
|
||||
: table(table), set1(set1), set2(set2) {}
|
||||
SqlInsert(Fields f, bool nokey = false);
|
||||
|
||||
//Deprecated!!!
|
||||
|
|
@ -650,7 +625,7 @@ public:
|
|||
Value Fetch() const { return SqlStatement(*this).Fetch(); }
|
||||
};
|
||||
|
||||
inline SqlInsert Insert(SqlId table) { return SqlInsert(table); }
|
||||
inline SqlInsert Insert(const SqlId& table) { return SqlInsert(table); }
|
||||
inline SqlInsert Insert(Fields f) { return SqlInsert(f); }
|
||||
inline SqlInsert InsertNoKey(Fields f) { return SqlInsert(f, true); }
|
||||
|
||||
|
|
@ -660,9 +635,9 @@ class SqlUpdate {
|
|||
SqlBool where;
|
||||
|
||||
public:
|
||||
void Column(SqlId column, SqlVal val);
|
||||
void Column(const SqlId& column, SqlVal val);
|
||||
void Column(const SqlSet& cols, const SqlSet& val);
|
||||
SqlUpdate& operator()(SqlId column, SqlVal val) { Column(column, val); return *this; }
|
||||
SqlUpdate& operator()(const SqlId& column, SqlVal val) { Column(column, val); return *this; }
|
||||
SqlUpdate& operator()(const SqlSet& cols, const SqlSet& val) { Column(cols, val); return *this; }
|
||||
SqlUpdate& operator()(Fields f);
|
||||
SqlUpdate& Where(SqlBool w) { where = w; return *this; }
|
||||
|
|
@ -671,7 +646,7 @@ public:
|
|||
|
||||
operator bool() const { return !set.IsEmpty(); }
|
||||
|
||||
SqlUpdate(SqlId table) : table(table) {}
|
||||
SqlUpdate(const SqlId& table) : table(table) {}
|
||||
SqlUpdate(Fields f);
|
||||
|
||||
//Deprecated!!!
|
||||
|
|
@ -683,5 +658,5 @@ public:
|
|||
Value Fetch() const { return SqlStatement(*this).Fetch(); }
|
||||
};
|
||||
|
||||
inline SqlUpdate Update(SqlId table) { return SqlUpdate(table); }
|
||||
inline SqlUpdate Update(const SqlId& table) { return SqlUpdate(table); }
|
||||
inline SqlUpdate Update(Fields f) { return SqlUpdate(f); }
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@
|
|||
NAMESPACE_UPP
|
||||
|
||||
void td_scalar(SqlSet& set, const String& prefix, const char *x) {
|
||||
set.Cat(SqlCol(prefix + x));
|
||||
set.Cat(SqlId(prefix + x));
|
||||
}
|
||||
|
||||
void td_array(SqlSet& set, const String& prefix, const char *x, int cnt) {
|
||||
String name = prefix + x;
|
||||
for(int i = 0; i < cnt; i++)
|
||||
set.Cat(SqlCol(name + Format("%d", i)));
|
||||
set.Cat(SqlId(name + Format("%d", i)));
|
||||
}
|
||||
|
||||
void td_var(SqlSet& set, const String& prefix, const char *x, SqlSet (*f)(const String&)) {
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ void SqlUserRights::Sync()
|
|||
SqlId OWNER("OWNER");
|
||||
SqlId TABLE_NAME("TABLE_NAME");
|
||||
SqlId PRIVILEGE("PRIVILEGE");
|
||||
Select(SqlCol("OWNER, TABLE_NAME, "
|
||||
Select(SqlId("OWNER, TABLE_NAME, "
|
||||
"SUM(distinct DECODE(PRIVILEGE, 'SELECT', 1, 'UPDATE', 2, "
|
||||
"'INSERT', 4, 'DELETE', 8, 0))"))
|
||||
.From(Select(OWNER, TABLE_NAME, PRIVILEGE).From(SqlId("USER_TAB_PRIVS")) |
|
||||
|
|
@ -219,7 +219,7 @@ void SqlIndex::Open(String ind, String own, SqlSession& session)
|
|||
{
|
||||
SqlBool exp = SqlId("INDEX_NAME") == ind;
|
||||
if(!IsNull(own))
|
||||
exp &= SqlCol("OWNER") == own;
|
||||
exp &= SqlId("OWNER") == own;
|
||||
Sql cursor(session);
|
||||
Select(SqlId("OWNER"), SqlId("INDEX_NAME"), SqlId("TABLE_OWNER"), SqlId("TABLE_NAME"))
|
||||
.From(SqlId("ALL_INDEXES"))
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#define _TSql_icpp_init_stub
|
||||
#include "Sql/init"
|
||||
#include "TCore/init"
|
||||
#define BLITZ_INDEX__ F3BB9158B36A73CCE79A422B64471481A
|
||||
#define BLITZ_INDEX__ F118798ccfac1d6c5db6791de84b29726
|
||||
#include "TSql_init.icpp"
|
||||
#undef BLITZ_INDEX__
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class SelectColumns : public FieldOperator
|
|||
public:
|
||||
virtual void Field(const char *name, Ref f)
|
||||
{
|
||||
columns.Cat(SqlCol(name));
|
||||
columns.Cat(SqlId(name));
|
||||
}
|
||||
|
||||
public:
|
||||
|
|
@ -121,7 +121,7 @@ public:
|
|||
|
||||
virtual void Field(const char *name, Ref f)
|
||||
{
|
||||
if(Id::Find(name) == column)
|
||||
if(name == ~column)
|
||||
value = f;
|
||||
}
|
||||
|
||||
|
|
@ -136,7 +136,7 @@ public:
|
|||
|
||||
virtual void Field(const char *name, Ref f)
|
||||
{
|
||||
if(Id::Find(name) == column)
|
||||
if(name == ~column)
|
||||
ref = f;
|
||||
}
|
||||
|
||||
|
|
@ -199,7 +199,7 @@ String SchemaTableName(const String& table)
|
|||
|
||||
SqlVal SchemaTable(const SqlVal& table)
|
||||
{
|
||||
return SqlCol(SchemaTableName(~table));
|
||||
return SqlId(SchemaTableName(~table));
|
||||
}
|
||||
|
||||
String GetInsertString(Fields nf, bool optimize)
|
||||
|
|
@ -602,7 +602,7 @@ SqlVal Alias(const SqlVal& value, const SqlVal& alias)
|
|||
{
|
||||
if(~value == ~alias)
|
||||
return value;
|
||||
return SqlCol(~value + SqlCase(MSSQL, " as ")(" ") + ~alias);
|
||||
return SqlId(~value + SqlCase(MSSQL, " as ")(" ") + ~alias);
|
||||
}
|
||||
|
||||
SqlVal SchemaAlias(const SqlVal& table, const SqlVal& alias)
|
||||
|
|
@ -664,7 +664,7 @@ SqlVal GetCsVal(const SqlVal& val)
|
|||
|
||||
SqlVal GetCs(const char* col)
|
||||
{
|
||||
return GetCsVal(SqlCol(col));
|
||||
return GetCsVal(SqlId(col));
|
||||
}
|
||||
|
||||
SqlVal GetCsAsciiVal(const SqlVal& val)
|
||||
|
|
@ -674,7 +674,7 @@ SqlVal GetCsAsciiVal(const SqlVal& val)
|
|||
|
||||
SqlVal GetCsAscii(const char* col)
|
||||
{
|
||||
return GetCsAsciiVal(SqlCol(col));
|
||||
return GetCsAsciiVal(SqlId(col));
|
||||
}
|
||||
|
||||
SqlBool LikeSmartWild(const SqlVal& exp, const String& text)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue