CTSegment Class

Description

Objects of the CTSegment class manage index segments. The segment is part of the index; one single index may be composed of several segments. It uses CTBase as the base class, and implements the constructor/destructor allocating/freeing memory to the segment operations.

See Also

CTBase, CTField, CTIndex, CTRecord, CTTable

Preconditions

Before any task is developed with a CTSegment object, a CTIndex() must have been initialized.

CTSegment Operators

  • = : Assign a CTSegment object to another

CTSegment.operator =

Syntax

CTSegment operator=(CTSegment Seg)

Parameters

  • Seg [in] The segment object.

Description

Assigns one CTSegment object to another

Return

Returns a CTSegment object

CTSegment Methods

Constructor / Destructor

  • CTSegment(): Creates a CTSegment object
  • ~CTSegment(): Destroys a CTSegment object and resets all the dependent objects

Segment Handling

  • GetField(): Retrieves the segment field object.
  • GetFieldName(): Retrieves the segment field name
  • GetMode(): Retrieves the segment mode
  • SetMode(): Sets the segment mode
  • GetNumber(): Retrieves the segment index position in the index segments list

CTSegment.CTSegment

Syntax

CTSegment ( )

CTSegment (CTSegment Seg)

Parameters

  • Seg [in] The CTSegment object.

Description

This is the constructor for the CTSegment class.

See Also

~CTSegment()

CTSegment.~CTSegment

Syntax

~CTSegment

Parameters

This destructor has no parameters.

Description

This is the destructor for the CTSegment class.

See Also

CTSegment()

CTSegment.AddSegment

Syntax

CTSegment.AddSegment(CTIndex Index, CTField Field, SEG_MODE SegMode)

CTSegment.AddSegment(CTIndex Index, String FieldName, SEG_MODE SegMode)

CTSegment.AddSegment(CTIndex Index, int FieldNumber, SEG_MODE SegMode)

CTSegment.AddSegment(CTIndex Index, int offset, int Length, SEG_MODE SegMode)

CTSegment.AddSegment(int IndexNbr, int FieldNbr, SEG_MODE SegMode)

CTSegment.AddSegment(int IndexNbr, String FieldName, SEG_MODE SegMode)

CTSegment.AddSegment(int IndexNbr, CTField Field, SEG_MODE SegMode)

CTSegment.AddSegment(String IndexName, String FieldName, SEG_MODE SegMode)

CTSegment.AddSegment(String IndexName, int FieldNumber, SEG_MODE SegMode)

CTSegment.AddSegment(String IndexName, CTField Field, SEG_MODE SegMode)

Parameters

  • Index [in] The index object.
  • Field [in] The field object that composes part of the index segment
  • SegMode [in] The segment mode. The valid values for the segment mode are shown in "Segment Modes". Notice that, if this method is used in the implementation that requires the offset, the segment is called extended, and in this specific case, the segment modes should be those that depend on the offset. If the implementation used is any other, the segment mode should be one of the so called schema segments (SEG_MODE.SCHSEG_SEG, SEG_MODE.USCHSEG_SEG, SEG_MODE.VSCHSEG_SEG, SEG_MODE.UVSCHSEG_SEG, SEG_MODE.SCHSRL_SEG).
  • FieldName [in] Field name to compose the index segment
  • FieldNumber [in] Field number to compose the index segment
  • offset [in] Absolute byte offset of the segment. If used, this offset should be calculated with care, since the hidden fields included by c-tree Plus for .NET should be taken into account: $DELFLD$ (always included, to account for the deleted record) - 4 bytes; $NULFLD$ (always present - 1 bit for every user defined field, rounded for the next byte); ROWID$ (8 bytes to account for the automatic auto-increment record - see the discussion on ROWID() in "Hidden Fields". This variation makes it difficult to predict the correct offset of each user defined offset.
  • Length [in] Segment length in bytes
  • IndexNbr [in] Index number
  • FieldNbr [in] Field number to compose the index segment
  • IndexName [in] Index name to be updated.

Description

Adds a new segment to an index.

It is strongly recommended that the CTSegment.AddSegment(CTIndex Index, int offset, int Length, SEG_MODE SegMode) implementation is not used, with considerable advantages for the use of the other implementations. The use of the extended segments (based on the segment offset), as needed in this implementation, may prevent the use of advanced c-tree Plus for .NET functions like CTTable.Alter(). If, for any reason, it is mandatory to use this implementation, try to adapt the example presented in the description of the ctdbAddSegmentEx() function in C API.

Return

AddSegment() returns a segment object.

See Also

DelSegment(), InsertSegment()

CTSegment.GetField

Syntax

CTField GetField( )

Parameters

This method has no parameters.

Description

Retrieves the segment field object.

Return

GetField() returns the field object.

See Also

GetFieldName()

CTSegment.GetFieldName

Syntax

String GetFieldName( )

Parameters

This method has no parameters.

Description

Retrieves the segment field name.

Return

GetFieldName() returns the segment field name.

See Also

GetField()

CTSegment.GetMode

Syntax

SEG_MODE GetMode( )

Parameters

This method has no parameters.

Description

Retrieves the segment mode. See SetMode() for valid values for the segment mode.

Return

GetMode() returns the segment mode.

See Also

SetMode()

CTSegment.GetNumber

Syntax

int GetNumber( )

Parameters

This method has no parameters.

Description

Retrieves the segment index position in the index segments list

Return

GetNumber() returns the segment position.

CTSegment.GetStatus

Retrieves the status of the segment object.

Declaration

ULONG CTSegment.GetStatus() const;

Description

CTSegment.GetStatus() retrieves the status of a segment object. The status of the segment handle is a bit map describing one or more changes that have occurred to the segment object.

Return

CTSegment.GetStatus() returns a bitmap of the following:

Value

Symbolic Constant

Explanation

0x00

CTDBISEG_OLD

Original segment as read from file

0x01

CTDBISEG_NEW

Segment added or inserted

0x02

CTDBISEG_DEL

Original segment deleted

0x04

CTDBISEG_MOVED

Original segment moved

0x10

CTDBISEG_MODE

Segment mode changed

0x20

CTDBISEG_FIELD

Segment field changed

Example


// if any segment of an index has changed, call alter table

for (i = 0; i < hIndex.GetSegmentCount(); i++)

{

CTSegment hSeg = hIndex.GetSegment(i);
 

if (hSeg.GetStatus() != CTDBISEG_OLD)

hTable.Alter(CTDB_ALTER_NORMAL);

}
 

See Also

CTField.GetStatus(), CTIndex.GetStatus()

CTSegment.MoveSegment

Moves a key segment.

Declaration

void CTSegment.MoveSegment(NINT newIndex);

Description

CTSegment.MoveSegment() moves a key segment to a location indicated by newIndex. newIndex indicates the relative position were the key segment should be moved to.

Return

void

Example


// move the last segment to first

CTIndex hIndex = hTable.GetIndex(0);

NINT count = hIndex.GetSegmentCount();
 

if (count > 0)

{

CTSegment hSeg = hIndex.GetSegment(count - 1);

hSeg.MoveSegment(0);
}
 

See Also

CTTable.MoveSegment(), CTIndex.MoveSegment()

CTSegment.SetMode

Syntax

void SetMode(SEG_MODE SegMode)

Parameters

  • SegMode [in] The segment mode. Valid values for segment modes are shown in "Segment Modes".

Description

Sets the segment mode.

Return

None.

See Also

GetMode()