Basic structure: One source segment can have multiple target segments associated with it.
typedef struct _TMX_RECORD
{
LONG lRecordLen; How many bytes of the 16 kb of the record for the whole entry including source, targets and attributes are acutally in use
USHORT usSourceRecord; Offset from beginning of record to source record in bytes
USHORT usFirstTargetRecord; Offset from beginning of record to first target record in bytes
} TMX_RECORD, * PTMX_RECORD;//structure of the source segment
typedef struct _TMX_SOURCE_RECORD
{
LONG lRecordLen; How many bytes of the 16 kb of the record for the source are acutally in use
USHORT usSource; Offset from beginning of the source record to source record in bytes
USHORT usLangId; id of the source language (same language can have different IDs in different TMs
} TMX_SOURCE_RECORD, * PTMX_SOURCE_RECORD;//structure of the target segment
typedef struct _TMX_TARGET_RECORD
{
LONG lRecordLen = 0; How many bytes of the 16 kb of the record for the target are acutally in use
USHORT usTarget = 0; Offset from beginning of the target record to target record in bytes
USHORT usClb = 0; Offset from beginning of the target record to target control block in bytes
} TMX_TARGET_RECORD, * PTMX_TARGET_RECORD;//control block structure in target record
typedef struct _TMX_TARGET_CLB
{//start of target control block
TIME_L lTime; //creation time
TIME_L lUpdateTime; //added by Orest, not functional yet
ULONG ulSegmId; //segment ID like we have it in TMX file and update request; can be 8 bytes max
USHORT usLangId; //id of the target language (same language can have different IDs in different TMs);
USHORT usFileId; // id for document name as saved in TM table for document name as send on update request
USHORT usAuthorId; // id for author as saved in TM table for author as send on update request
USHORT usAddDataLen; // new for Major_version6: Length of following context and additional info data
BYTE bMultiple; //we need to find out, what this is used for
BYTE bTranslationFlag; // flag that says something about the origin of the segment - we need to find out, what values are allowed. Probably it is set by the attribute "type" of the update request
} TMX_TARGET_CLB, * PTMX_TARGET_CLB;