topic "";
[2 $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
[l288;2 $$2,2#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item]
[l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement]
[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param]
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[{_} 
[ {{10000@(113.42.0) [s0;%% [*@7;4 SqlCtrls]]}}&]
[s9; &]
[s1;:Upp`:`:SqlCtrls`:`:class: [@(0.0.255)3 class][3 _][*3 SqlCtrls][3 _:_][@(0.0.255)3 public][3 _
][*@3;3 IdCtrls]&]
[s2;%% This class extends [^topic`:`/`/CtrlLib`/src`/IdCtrls`$en`-us^ IdCtrls] 
class with SQL related operations.&]
[s0;i448;a25;kKO9;:noref:@(0.0.255) &]
[ {{10000F(128)G(128)@1 [s0;%% [* Public Method List]]}}&]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:operator`(`)`(Upp`:`:SqlId`,Upp`:`:Ctrl`&`): [_^Upp`:`:SqlCtrls^ S
qlCtrls][@(0.0.255) `&]_[* operator()]([_^Upp`:`:SqlId^ SqlId]_[*@3 id], 
[_^Upp`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 ctrl])&]
[s2;%% Calls IdCtrls`::Add([%-*@3 id], [%-*@3 ctrl]).&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Table`(Upp`:`:Ctrl`&`,Upp`:`:SqlId`): [@(0.0.255) void]_[* Table](
[_^Upp`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 dlg], [_^Upp`:`:SqlId^ SqlId]_[*@3 table])&]
[s2;%% Adds such widgets of [%-*@3 dlg] whose layout id (that is the 
same as the id of theirs member variable) matches any column 
name in [%-*@3 table], based on database schema file (.sch). Widgets 
are added with uppercased layout id. Label and Button widget 
are excluded (tested using dynamic`_cast)&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:operator`(`)`(Upp`:`:Ctrl`&`,Upp`:`:SqlId`): [_^Upp`:`:SqlCtrls^ S
qlCtrls][@(0.0.255) `&]_[* operator()]([_^Upp`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 dlg], 
[_^Upp`:`:SqlId^ SqlId]_[*@3 table])&]
[s2;%% Same as Table([%-*@3 dlg], [%-*@3 table]).&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Set`(`)const: [_^Upp`:`:SqlSet^ SqlSet]_[* Set]()_[@(0.0.255) const
]&]
[s2;%% Returns SqlSet of all ids of SqlCtrls.&]
[s3; &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:operator SqlSet`(`)const: [* operator_SqlSet]()_[@(0.0.255) const
]&]
[s2;%% Same as Set().&]
[s3; &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Read`(Upp`:`:Sql`&`): [@(0.0.255) void]_[* Read]([_^Upp`:`:Sql^ Sql
][@(0.0.255) `&]_[*@3 sql])&]
[s2;%% Assigns values of [%-*@3 sql] (which is supposed to contain 
some fetched line from SQL database) into widgets, based on match 
of widget ids and column names.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Fetch`(Upp`:`:Sql`&`): [@(0.0.255) bool]_[* Fetch]([_^Upp`:`:Sql^ S
ql][@(0.0.255) `&]_[*@3 sql])&]
[s2;%% Does [%-*@3 sql].Fetch(). If that is false, returns false, otherwise 
performs Read(sql) and returns true. In other words, fetches 
the line from SQL database and assigns corresponding values to 
SqlCtrls widgets.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Load`(Upp`:`:Sql`&`,Upp`:`:SqlSelect`): [@(0.0.255) bool]_[* Load
]([_^Upp`:`:Sql^ Sql][@(0.0.255) `&]_[*@3 sql], [_^Upp`:`:SqlSelect^ SqlSelect]_[*@3 select
])&]
[s2;%% Executes [%-*@3 select] statement on [%-*@3 sql] and then calls 
Fetch([%-*@3 sql]) and returns its return value.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Load`(Upp`:`:Sql`&`,Upp`:`:SqlId`,Upp`:`:SqlBool`): [@(0.0.255) b
ool]_[* Load]([_^Upp`:`:Sql^ Sql][@(0.0.255) `&]_[*@3 sql], [_^Upp`:`:SqlId^ SqlId]_[*@3 tabl
e], [_^Upp`:`:SqlBool^ SqlBool]_[*@3 where])&]
[s2;%% Similar to Load, but [%-*@3 select] statement is constructed 
based on ids of widgets, given [%-*@3 table] and [%-*@3 where] expression.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Fetch`(`): [@(0.0.255) bool]_[* Fetch]()&]
[s2;%% Same as Fetch(SQL).&]
[s3; &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Load`(Upp`:`:SqlSelect`): [@(0.0.255) bool]_[* Load]([_^Upp`:`:SqlSelect^ S
qlSelect]_[*@3 select])&]
[s2;%% Same as Load(SQL, [%-*@3 select]).&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Load`(Upp`:`:SqlId`,Upp`:`:SqlBool`): [@(0.0.255) bool]_[* Load](
[_^Upp`:`:SqlId^ SqlId]_[*@3 table], [_^Upp`:`:SqlBool^ SqlBool]_[*@3 set])&]
[s2;%% Same as Load(SQL, [%-*@3 table], [%-*@3 set]).&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Insert`(Upp`:`:SqlInsert`&`)const: [@(0.0.255) void]_[* Insert]([_^Upp`:`:SqlInsert^ S
qlInsert][@(0.0.255) `&]_[*@3 insert])_[@(0.0.255) const]&]
[s2;%% Adds all id `- widget value pairs to [%-*@3 insert].&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Update`(Upp`:`:SqlUpdate`&`)const: [@(0.0.255) void]_[* Update]([_^Upp`:`:SqlUpdate^ S
qlUpdate][@(0.0.255) `&]_[*@3 update])_[@(0.0.255) const]&]
[s2;%% Adds all id `- widget value pairs to [%-*@3 update].&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:UpdateModified`(Upp`:`:SqlUpdate`&`)const: [@(0.0.255) void]_[* U
pdateModified]([_^Upp`:`:SqlUpdate^ SqlUpdate][@(0.0.255) `&]_[*@3 update])_[@(0.0.255) c
onst]&]
[s2;%% Adds all id `- widget value pairs, where widgets have `'modified`' 
flag set, to [%-*@3 update] .&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Insert`(Upp`:`:SqlId`)const: [_^Upp`:`:SqlInsert^ SqlInsert]_[* I
nsert]([_^Upp`:`:SqlId^ SqlId]_[*@3 table])_[@(0.0.255) const]&]
[s2;%% Constructs SqlInsert statement into [%-*@3 table] which contains 
all id `- widget value pairs as inserted values.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:Update`(Upp`:`:SqlId`)const: [_^Upp`:`:SqlUpdate^ SqlUpdate]_[* U
pdate]([_^Upp`:`:SqlId^ SqlId]_[*@3 table])_[@(0.0.255) const]&]
[s2;%% Constructs SqlUpdate statement of [%-*@3 table] which contains 
all id `- widget value pairs as updated values.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:UpdateModified`(Upp`:`:SqlId`)const: [_^Upp`:`:SqlUpdate^ SqlUp
date]_[* UpdateModified]([_^Upp`:`:SqlId^ SqlId]_[*@3 table])_[@(0.0.255) const]&]
[s2;%% Constructs SqlUpdate statement of [%-*@3 table] which contains 
all id `- widget value pairs, where widgets have `'modified`' 
flag set, as updated values.&]
[s3;%% &]
[s4; &]
[s5;:Upp`:`:SqlCtrls`:`:operator`(`)`(int`)const: [_^Upp`:`:SqlId^ SqlId]_[* operator()](
[@(0.0.255) int]_[*@3 i])_[@(0.0.255) const]&]
[s5;:Upp`:`:SqlCtrls`:`:GetKey`(int`)const: [_^Upp`:`:SqlId^ SqlId]_[* GetKey]([@(0.0.255) i
nt]_[*@3 i])_[@(0.0.255) const]&]
[s2;%% Returns id of entry [%-*@3 i].&]
[s0;%% ]]