open-insight/SYSPROG/STPROCINS/RTI_HASHTABLE_EQUATES.txt
2024-03-25 15:17:34 -07:00

258 lines
12 KiB
Plaintext

compile insert rti_HashTable_Equates
/*
** Copyright (C) 1992-2016 Revelation Software Inc. All Rights Reserved **
Author : Captain C
Date : September 2016
Purpose : Constants for use with the HashTable functions in RevSTL.DLL
Comments
========
Amended Date Reason
======= ==== ======
Mr C 31 Mar 17 Added Hashtable row flags
*/
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#ifndef _RTI_HASHTABLE_EQUATES_
#define _RTI_HASHTABLE_EQUATES_
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
equ REVSTL_HTBL_SUCCESS$ to 0
equ REVSTL_HTBL_MAX_ERROR_LEN$ to 2048
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// HashTable methods
equ REVSTL_HTBLMTD_CREATETABLE$ to 1
equ REVSTL_HTBLMTD_READROW$ to 2
equ REVSTL_HTBLMTD_WRITEROW$ to 3
equ REVSTL_HTBLMTD_DELETEROW$ to 4
equ REVSTL_HTBLMTD_CLEARTABLE$ to 5
equ REVSTL_HTBLMTD_CLOSETABLE$ to 6
equ REVSTL_HTBLMTD_ROWEXISTS$ to 7
equ REVSTL_HTBLMTD_LISTKEYS$ to 8
equ REVSTL_HTBLMTD_GETROWCOUNT$ to 9
equ REVSTL_HTBLMTD_FIRST$ to REVSTL_HTBLMTD_CREATETABLE$
equ REVSTL_HTBLMTD_LAST$ to REVSTL_HTBLMTD_GETROWCOUNT$
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// HashTable types
equ REVSTL_HTBLTYPE_STD$ to 1 ; // std::unordered_map (VS2015)
equ REVSTL_HTBLTYPE_BOOST$ to 2 ; // boost::unordered_map
equ REVSTL_HTBLTYPE_SPP$ to 3 ; // spp::sparsepp
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Hashtable row flags
equ REVSTL_HTBLROW_IDISPATCH$ to 0x0001; // Store OleVar
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// HashTable error codes
equ REVSTL_HTBLERR_BADMETHOD$ to -1
equ REVSTL_HTBLERR_OUTOFHANDLES$ to -2
equ REVSTL_HTBLERR_BADINITPARAM$ to -3
equ REVSTL_HTBLERR_OUTOFMEM$ to -4
equ REVSTL_HTBLERR_BADHANDLE$ to -5
equ REVSTL_HTBLERR_BADKEY$ to -6
equ REVSTL_HTBLERR_ROW_DNE$ to -7
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_CREATETABLE$ method
//
// Creates a hashtable and returns the handle.
//
// ----------------------------------------------------------------------------
// [i] param1 : InitParam. This is an @fm delimited array of init parameters
// : structures as follows:
// :
// : <1> Type of HashTable - defaults to REVSTL_HTBLTYPE_STD$
// : <2> Expected RowCount - presizes the table to hold the
// : passed number of rows. Defaults to 0.
// ----------------------------------------------------------------------------
// [r] Returns the table handle if successful (a value > 0), or an error code
// (a value < 0) if it fails.
// ----------------------------------------------------------------------------
// [e] Error details are returned via Set_Status()
// ----------------------------------------------------------------------------
// InitParam constants
equ REVSTL_HTBL_INITPARAM_TYPE$ to 1
equ REVSTL_HTBL_INITPARAM_ROWCOUNT$ to 2
///////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_READROW$ method
//
// Reads a row from the specified hash table.
//
// ----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// [i] param2 : Key to read
// [o] param3 : The row data retrieved from the hash table
// ----------------------------------------------------------------------------
// [r] The size of the row data read from the table, or an error code
// (a value < 0) if it fails.
// ----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// ----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_WRITEROW$ method
//
// Writes a row to the specified hash table using the specified key.
//
// -----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// [i] param2 : Key to write
// [i] param3 : Row data to write
// -----------------------------------------------------------------------------
// [r] Returns 0 if successful or an error code (a value < 0) if it fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_DELETEROW$ method
//
// Deletes a row from the specified hash table using the specified key.
//
// -----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// [i] param2 : Key to delete
// -----------------------------------------------------------------------------
// [r] Returns 1 if the row was deleted, 0 if it didn't exist, or an error
// code (a value < 0) if it fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_CLEARTABLE$ method
//
// Deletes all records from the HashTable
//
// -----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// -----------------------------------------------------------------------------
// [r] Returns 0 if the table was cleared, or an error code (a value < 0) if it
// fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_CLOSETABLE$ method
//
// Closes (destroys) a HashTable. Do not use the handle afterwards!
//
// -----------------------------------------------------------------------------
// [i,o] param1 : HashTable handle. This is set to 0 if the table is closed.
// -----------------------------------------------------------------------------
// [r] Returns 0 if the table was destoryed, or an error code (a value < 0) if
// fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_ROWEXISTS$ method
//
// Verifies that a row exists within a HashTable.
//
// -----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// [i] param2 : Key to verify
// -----------------------------------------------------------------------------
// [r] Returns 1 if the row exists, 0 if it doesn't, or an error code (a
// value < 0) if it fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_LISTKEYS$ method
//
// Returns an @fm delimited list of keys from the hashtable
//
// -----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// [o] param2 : @fm'd list of keys
// -----------------------------------------------------------------------------
// [r] Returns the number of keys in the list if successful, or an error code
// (a value < 0) if it fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// REVSTL_HTBLMTD_GETROWCOUNT$ method
//
// Returns the number of rows stored in the hashtable
//
// -----------------------------------------------------------------------------
// [i] param1 : HashTable handle
// -----------------------------------------------------------------------------
// [r] Returns the number of rows in the table if successful, or an error code
// (a value < 0) if it fails.
// -----------------------------------------------------------------------------
// [e] Errors are returned via set_Status()
// -----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
// Licensing Info for SparsePP ////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//
// ----------------------------------------------------------------------
// Copyright (c) 2016, Gregory Popovitch - greg7mdp@gmail.com
// All rights reserved.
//
// This work is derived from Google's sparsehash library
//
// Copyright (c) 2005, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ----------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#endif _RTI_HASHTABLE_EQUATES_
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////