cursor/registerMembers.c
static RDM_RETCODE registerMembers (
RDM_CURSOR club,
RDM_CURSOR lastMember,
RDM_CURSOR beforeFirstMember,
RDM_DB db)
{
RDM_CURSOR member = NULL;
RDM_CURSOR_COMPARE comparison;
/* Clone fistMember to keep its position as is */
rc = rdm_cursorGetClone (lastMember, &member);
if (rc == sOKAY)
{
rc = rdm_cursorComparePosition (member, beforeFirstMember, &comparison);
}
while (rc == sOKAY && comparison == CURSOR_AFTER)
{
rc = rdm_cursorLinkRow (member, REF_MEMBERS, club);
if (rc == sOKAY)
{
rc = rdm_cursorMoveToPrevious (member);
if (rc == sENDOFCURSOR)
rc = sOKAY;
}
if (rc == sOKAY)
{
member, beforeFirstMember, &comparison);
}
}
rdm_cursorFree (member);
return rc;
}
static RDM_RETCODE registerJuniorMembers (
RDM_CURSOR club,
RDM_CURSOR firstMember,
RDM_CURSOR afterLastMember,
RDM_DB db)
{
RDM_CURSOR member = NULL;
RDM_CURSOR_COMPARE comparison;
/* Clone fistMember to keep its position as is */
rc = rdm_cursorGetClone (firstMember, &member);
if (rc == sOKAY)
{
rc = rdm_cursorComparePosition (member, afterLastMember, &comparison);
}
while (rc == sOKAY && comparison == CURSOR_BEFORE)
{
rc = rdm_cursorLinkRow (member, REF_JUNIOR_MEMBERS, club);
if (rc == sOKAY)
{
rc = rdm_cursorMoveToNext (member);
if (rc == sENDOFCURSOR)
rc = sOKAY;
}
if (rc == sOKAY)
{
member, afterLastMember, &comparison);
}
}
rdm_cursorFree (member);
return rc;
}
static RDM_RETCODE registerHalfOfTheAdultsAsMembers (RDM_CURSOR club, RDM_DB db)
{
uint64_t numMembers;
RDM_CURSOR adults = NULL;
RDM_CURSOR beforeFirst = NULL;
uint64_t i;
printf ("Register half of the adults as members:\n");
rc = rdm_rdmGetBeforeFirst (&beforeFirst);
if (rc == sOKAY)
{
rc = rdm_dbGetRows (db, TABLE_ADULT, &adults);
}
if (rc == sOKAY)
{
rc = rdm_cursorGetCount (adults, &numMembers);
}
if (rc == sOKAY)
{
rc = rdm_cursorMoveToLast (adults);
}
for (i = 0; rc == sOKAY && i < numMembers / 2; i++)
{
rc = rdm_cursorMoveToPrevious (adults);
}
if (rc == sOKAY)
{
rc = registerMembers (club, adults, beforeFirst, db);
}
rdm_cursorFree (adults);
return rc;
}