Flags Add and Remove Function

Simple function to set and unset flags. It takes 3 parameters

  1. Individual Pointer
  2. Flag Name (it will create the flag if it’s new to the project)
  3. boolean value true to create and false to delete

It returns true if the action was successful and false if it failed, e.g. you tried to delete a flag which was not set or create one which was already set.

Requires: None

Code

function setFlag(ptrInd,sFlag,bValue)
    strTag, strError = fhGetFlagTag(sFlag, true) -- Obtain tag for Flag
    if strError then
        error('Flag Creation Failed')
    end
    local ptrFlags = fhGetItemPtr(ptrInd, "~._FLGS") -- Check "_FLGS" tag
    if ptrFlags:IsNull() then
        ptrFlags = fhCreateItem("_FLGS", ptrInd) -- Create "_FLGS" tag if necessary
    end
    local ptrFlag = fhGetItemPtr(ptrFlags, "~."..strTag)
    if bValue then
        if ptrFlag:IsNull() then
            ptrFlag = fhCreateItem(strTag, ptrFlags) -- Create the Flag
            if ptrFlag:IsNotNull() then
                return true
            end
        end
    else
        if ptrFlag:IsNotNull() then
            local res = fhDeleteItem(ptrFlag)
            return res
        end
    end
    return false
end

 

Usage

local ptrRec = fhNewItemPtr()      
ptrRec:MoveToFirstRecord("INDI")        -- Grab the first individual record
-- Create a TestFlag
res = setFlag(ptrRec,'TestFlag',true)
print(res)
-- Delete a TestFlag
res = setFlag(ptrRec,'TestFlag',false)
print(res)

 

Last update: 16 Dec 2020