Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- CA-Clipper 5.2 . Technical Reference - <b>_itemrelease()</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 _itemRelease()
 Make an Item available for garbage collection
------------------------------------------------------------------------------
 C Prototype

     #include "item.api"
     BOOL _itemRelease(
                        ITEM itemRef
                      )

 Arguments

     itemRef is the Item to release.

 Returns

     TRUE if the Item passed was successfully released.

 Description

     The _itemRelease() function drops your Extend routine's reference to a
     CA-Clipper-level item.  If your Extend routine was the only reference to
     that Item, then the Item becomes garbage and a candidate for collection.
     However, if the Item is referred to elsewhere, then it will not be
     collected until its last reference is released.

     Warning!  It is vitally important that Items be released once you no
     longer have need for them.  Failure to do so may cause a CA-Clipper
     stack fault or memory errors.

 Examples

     /*
     *
     * CharCount( cString, cChar )
     *


     * Count occurrences of a single character
     * in a CA-Clipper string.  Version 1.00
     *
     */

     CLIPPER CharCount( void )
     {
        USHORT uiChars = 0;
        USHORT uiLen;
        USHORT i;
        HANDLE vmhString;

        BYTEP  cStringP;
        BYTE   cFindMe;

        ITEM   itemString, itemFindMe, itemRet;

        if (PCOUNT != 2)
        {
           _ret();               // NOTE: Withhold service
           return;               // Early return!
        }

        itemRet    = _itemPutNL( NULL, 0 );
        itemString = _itemParam( 1 );
        itemFindMe = _itemParam( 2 );

        if ( (_itemType( itemString ) == CHARACTER) &&
              (_itemType( itemFindMe ) == CHARACTER) )
        {
           _itemCopyC( itemFindMe, &cFindMe, 1 );

           vmhString = _xvalloc( _itemSize( itemString ), NULL );
           cStringP = _xvlock( vmhString );

           uiLen = _itemCopyC( itemString, cStringP, NULL );

           for( i = 0; i < uiLen; i++ )
           {
              if ( cStringP[i] == cFindMe )
                 uiChars++;
           }

           _xvunlock( vmhString );
           _xvfree( vmhString );

           itemRet = _itemPutNL( itemRet, (long)uiChars );

        }

        _itemReturn( itemRet );

        _itemRelease( itemRet );
        _itemRelease( itemString );
        _itemRelease( itemFindMe );

        return;
     }

 Files:  Library is CLIPPER.LIB, header file is Item.api.


See Also: _evalPutParam() _itemArrayGet() _itemArrayNew()

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson