topic "S_type structures"; [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] [{_}%EN-US [ {{10000@(113.42.0) [s0; [*@7;4 S`_][*/@7;4 type][*@7;4 structures]]}}&] [s0;i448;a25;kKO9;:noref:@(0.0.255)%- &] [s0; S`_[/ type] structures are generated (by multiincluding process) from .sch files that describe the database schema. Each TABLE or TYPE of .sch has correspending S`_[/ type] structure. This structure has member variables corresponding to database columns, with the same names and types. `'BOOL`' columns are represented as CHAR(1) in database, but as `'bool`' C`+`+ type in S`_[/ type]). ARRAY columns are represented as fixed C`+`+ arrays. If TABLE or TYPE has any base TYPEs or TABLEs, S`_[/ type] structure contains them as well.&] [s0; &] [ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&] [s3;%- &] [s5;:S`_type`:`:TableName:%- [@(0.0.255) static]_[@(0.0.255) const]_[@(0.0.255) char]_[* Tabl eName][@(0.0.255) `[`]]&] [s2; The name of table or type.&] [s3;%- &] [s4;%- &] [s5;:S`_type`:`:ColumnSet`(`):%- [@(0.0.255) static] [@(0.0.255) const]_[_^SqlSet^ SqlSet][@(0.0.255) `& ]_[* ColumnSet]()&] [s2; The complete set of columns as SqlSet.&] [s3;%- &] [s4;%- &] [s5;:S`_type`:`:ColumnSet`(const String`&`):%- [@(0.0.255) static] [_^SqlSet^ SqlSet]_[* ColumnSet]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 pr efix])&] [s2; The complete set of columns as SqlSet, all columns prefixed with [%-*@3 prefix].&] [s3; &] [s4; &] [s5;:S`_type`:`:Of`(SqlId`):%- [@(0.0.255) static] [_^SqlSet^ SqlSet]_[* Of]([_^SqlId^ SqlId]_ [*@3 table])&] [s2; The complete set of columns as SqlSet, all columns expressed as part of [%-*@3 table] (TABLE.COLUMN notation).&] [s3; &] [s4; &] [s5;:S`_type`:`:GetColumnIds`(`):%- [@(0.0.255) static] [@(0.0.255) const]_[_^Vector^ Vecto r]<[_^SqlId^ SqlId]>`&_[* GetColumnIds]()&] [s2; Returns all columns.&] [s3; &] [s4; &] [s5;:S`_type`:`:Clear`(`):%- [@(0.0.255) void]_[* Clear]()&] [s2; Sets all member variables to Null.&] [s3; &] [s4; &] [s5;:S`_type`:`:FieldLayout`(FieldOperator`&`):%- [@(0.0.255) void]_[* FieldLayout]([_^FieldOperator^ F ieldOperator][@(0.0.255) `&]_[*@3 f])&] [s2; Calls FieldOpertator`::Field(const char `*name, Ref f) and Table(const char `*name) methods of [%-*@3 f] to provide a visitor pattern for S`_[/ type].&] [s3; &] [s4; &] [s5;:S`_type`:`:operator Fields`(`):%- [* operator_Fields]()&] [s2; Returns callback(this, `&S`_[/ type]`::FieldLayout). This method provides unified access to all S`_[/ type]s, which is then used in Sql`::Fetch.&] [s3; &] [s4; &] [s5;:S`_type`:`:operator`=`=`(const S`_type`&`)const:%- [@(0.0.255) bool]_[* operator`=`= ]([@(0.0.255) const]_[_^S`_type^ S`_][/_^S`_type^ type][@(0.0.255) `&]_[*@3 x])_[@(0.0.255) c onst]&] [s2; Returns true if all fields are the same.&] [s3; &] [s4; &] [s5;:S`_type`:`:operator`!`=`(const S`_type`&`)const:%- [@(0.0.255) bool]_[* operator!`=]( [@(0.0.255) const]_[_^S`_type^ S`_][/_^S`_type^ type][@(0.0.255) `&]_[*@3 x])_[@(0.0.255) con st]&] [s2; Same as !operator`=`=(x).&] [s3; &] [s4; &] [s5;:S`_type`:`:ToString`(`)const:%- [_^String^ String]_[* ToString]()_[@(0.0.255) const]&] [s2; Converts S`_[/ type] to (multiline) text, mostly for debugging purposes.&] [s3; &] [s4;%- &] [s5;:S`_type`:`:GetCount`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetCount]()&] [s2; Returns a number of columns of this S`_[/ type].&] [s3;%- &] [s4;%- &] [s5;:S`_type`:`:GetId`(int`):%- [@(0.0.255) static] [_^SqlId^ SqlId]_[* GetId]([@(0.0.255) in t]_[*@3 i])&] [s2; Returns a column ID for column at [%-*@3 i].&] [s3; &] [s4;%- &] [s5;:S`_type`:`:GetIndex`(const String`&`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetIn dex]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 id])&] [s5;:S`_type`:`:GetIndex`(const SqlId`&`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetInd ex]([@(0.0.255) const]_[_^SqlId^ SqlId][@(0.0.255) `&]_[*@3 id])&] [s2;~~~1792; Returns the index of column [%-*@3 id] or negative number if not found.&] [s3; &] [s4;%- &] [s5;:S`_type`:`:GetWidth`(int`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetWidth]([@(0.0.255) i nt]_[*@3 i])&] [s2; Returns the width of column (usually text) as defined in the schema. If column does not have width, returns 0.&] [s3; &] [s4;%- &] [s5;:S`_type`:`:GetWidth`(const SqlId`&`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetWid th]([@(0.0.255) const]_[_^SqlId^ SqlId][@(0.0.255) `&]_[*@3 id])&] [s2; Returns the width of column (usually text) as defined in the schema.If [%-*@3 id] is not in S`_[/ type], returns 0.&] [s3; &] [s4; &] [s5;:S`_type`:`:GetRef`(int`):%- [_^Ref^ Ref]_[* GetRef]([@(0.0.255) int]_[*@3 i])&] [s2; Returns a reference to column at [%-*@3 i].&] [s3; &] [s4; &] [s5;:S`_type`:`:GetRef`(const SqlId`&`):%- [_^Ref^ Ref]_[* GetRef]([@(0.0.255) const]_[_^SqlId^ S qlId][@(0.0.255) `&]_[*@3 id])&] [s2; Returns a reference to column [%-*@3 id ]or void reference if not in S`_[/ type].&] [s3; &] [s4; &] [s5;:S`_type`:`:Get`(const SqlId`&`)const:%- [_^Value^ Value]_[* Get]([@(0.0.255) const]_[_^SqlId^ S qlId][@(0.0.255) `&]_[*@3 id])_[@(0.0.255) const]&] [s2; Returns a value of column [%-*@3 id] or void Value if not in S`_[/ type].&] [s3; &] [s4; &] [s5;:S`_type`:`:Get`(int`)const:%- [_^Value^ Value]_[* Get]([@(0.0.255) int]_[*@3 i])_[@(0.0.255) c onst]&] [s2; Returns a value of column at [%-*@3 i].&] [s3; &] [s4; &] [s5;:S`_type`:`:Get`(`)const:%- [_^ValueMap^ ValueMap]_[* Get]()_[@(0.0.255) const]&] [s2; Returns a map of column names to column values.&] [s3; &] [s4; &] [s5;:S`_type`:`:Set`(int`,const Value`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) int]_[*@3 i ], [@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 v])&] [s2; Sets column at [%-*@3 i] to [%-*@3 v]. Type of [%-*@3 v] must be convertible to the column.&] [s3; &] [s4; &] [s5;:S`_type`:`:Set`(const SqlId`&`,const Value`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) c onst]_[_^SqlId^ SqlId][@(0.0.255) `&]_[*@3 id], [@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `& ]_[*@3 v])&] [s2; If [%-*@3 id] is in S`_[/ type], sets its value to [%-*@3 v], otherwise does nothing.&] [s3; &] [s4; &] [s5;:S`_type`:`:Set`(const ValueMap`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) const]_[_^ValueMap^ V alueMap][@(0.0.255) `&]_[*@3 m])&] [s2; Keys in [%-*@3 m] found as column ids in S`_[/ type] as assigned to respective values. Keys not found are ignored, columns not present in [%-*@3 m] are left unchanged.&] [s3; &] [s4; &] [s5;:S`_type`:`:S`_type`(`):%- [* S`_type]()&] [s2; Sets all columns to Null.&] [s3; &] [s4; &] [s5;:S`_type`:`:S`_type`(const ValueMap`&`):%- [* S`_type]([@(0.0.255) const]_[_^ValueMap^ V alueMap][@(0.0.255) `&]_[*@3 m])&] [s2; Keys in [%-*@3 m] found as column ids in S`_[/ type] as assigned to respective values. Keys not found are ignored, columns not present in [%-*@3 m] are set to Null. Overal effect is the same as using the default constructor and then Set([%-*@3 m]).&] [s3; ]]