aboutsummaryrefslogtreecommitdiffstats
path: root/libparc/parc/algol/parc_BitVector.h
diff options
context:
space:
mode:
Diffstat (limited to 'libparc/parc/algol/parc_BitVector.h')
-rwxr-xr-xlibparc/parc/algol/parc_BitVector.h426
1 files changed, 0 insertions, 426 deletions
diff --git a/libparc/parc/algol/parc_BitVector.h b/libparc/parc/algol/parc_BitVector.h
deleted file mode 100755
index 552fd911..00000000
--- a/libparc/parc/algol/parc_BitVector.h
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @file parc_BitVector.h
- * @ingroup types
- *
- */
-#ifndef libparc_parc_BitVector_h
-#define libparc_parc_BitVector_h
-
-#include <stdbool.h>
-
-/**
- * @typedef PARCBitVector
- * @brief A structure containing private bit vector state data variables
- */
-struct PARCBitVector;
-typedef struct PARCBitVector PARCBitVector;
-
-/**
- * Create a new bit vector instance.
- *
- * @returns NULL on error, pointer to new vector on success.
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_Create(void);
-
-/**
- * Create a copy of a bit vector instance.
- *
- * @param [in] parcBitVector to duplicate
- * @returns NULL on error, pointer to new copy on success.
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * PARCBitVector *copy = parcBitVector_Copy(parcBitVector);
- * parcAssertTrue(parcBitVector_Equals(parcBitVector, copy), "Duplicate vector is unequal");
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_Copy(const PARCBitVector *parcBitVector);
-
-/**
- * Obtain a reference to a bit vector instance.
- *
- * @param [in] parcBitVector to obtain reference to
- * @returns pointer to BitVector
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * PARCBitVector *reference = parcBitVector_Acquire(parcBitVector);
- * parcBitVector_Release(&reference);
- * parcBitVector_Release(&parcBitVector);
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_Acquire(const PARCBitVector *parcBitVector);
-
-/**
- * Release a reference to a bit vector instance.
- *
- * @param [in] parcBitVector to release reference to
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * PARCBitVector *reference = parcBitVector_Acquire(parcBitVector);
- * parcBitVector_Release(&reference);
- * parcBitVector_Release(&parcBitVector);
- * }
- * @endcode
- *
- */
-void parcBitVector_Release(PARCBitVector **parcBitVector);
-
-/**
- * Determine equality of a pair of bit vectors
- *
- * @param [in] a bit vector to compare
- * @param [in] b bit vector to compare
- * @returns true if equal, false if unequal
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * PARCBitVector *copy = parcBitVector_Copy(parcBitVector);
- * parcBitVector_Set(copy, 1);
- * parcAssertTrue(parcBitVector_Equals(parcBitVector, copy) == false, "Vector should have been unequal");
- * }
- * @endcode
- *
- */
-bool parcBitVector_Equals(const PARCBitVector *a, const PARCBitVector *b);
-
-
-/**
- * Determine equality of a pair of bit vectors
- *
- * @param [in] parcBitVector bit vector to search
- * @param [in] testVector bit vector to test
- * @returns true if parcBitVector contains all bits in testVector, false otherwise
- *
- * Example:
- * @code
- * {
- * PARCBitVector *superSet = parcBitVector_Create();
- * parcBitVector_Set(superSet, 10);
- * parcBitVector_Set(superSet, 11);
- * PARCBitVector *subSet = parcBitVector_Create();
- * parcBitVector_Set(subSet, 10);
- * parcAssertTrue(parcBitVector_Contains(superSet, subSet), "Expect superSet to contain subSet");
- * }
- * @endcode
- *
- */
-bool parcBitVector_Contains(const PARCBitVector *parcBitVector, const PARCBitVector *testVector);
-
-/**
- * Get the current value of a bit in a vector
- *
- * @param [in] parcBitVector to obtain value from
- * @param [in] bit in vector to get value of
- * @returns value of bit in vector, 1 or 0
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcAssertTrue(parcBitVector_Get(parcBitVector, 10) == 1, "Vector should have been set");
- * }
- * @endcode
- *
- */
-int parcBitVector_Get(const PARCBitVector *parcBitVector, unsigned bit);
-
-/**
- * Set a bit in a vector
- *
- * @param [in] parcBitVector to set bit in
- * @param [in] bit in vector to set
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcAssertTrue(parcBitVector_Get(parcBitVector, 10) == 1, "Vector should have been set");
- * }
- * @endcode
- *
- */
-void parcBitVector_Set(PARCBitVector *parcBitVector, unsigned bit);
-
-/**
- * Right shift a vector contents
- *
- * @param [in] parcBitVector
- * @param [in] rightShift count
- * @param [out] input vector
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 0);
- *
- * parcBitVector_RightShift(parcBitVector, 1);
- * parcAssertTrue(parcBitVector_FirstBitSet(parcBitVector) == 1,
- * "First vector element should have moved up");
- *
- * parcBitVector_Release(&parcBitVector);
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_RightShift(PARCBitVector *parcBitVector, size_t rightShift);
-
-/**
- * Left shift a vector contents
- *
- * @param [in] parcBitVector
- * @param [in] leftShift count
- * @param [out] input vector
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcBitVector_Set(parcBitVector, 0);
- *
- * parcBitVector_LeftShift(parcBitVector, 1);
- * parcAssertTrue(parcBitVector_NumberOfBitsSet(parcBitVector) == 1,
- * "First vector element should have rolled off");
- *
- * parcBitVector_Release(&parcBitVector);
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_LeftShift(PARCBitVector *parcBitVector, size_t leftShift);
-
-/**
- * Logical And of a vector contents with another vector
- *
- * @param [in] a vector
- * @param [in] b vector
- * @param [out] allocated vector with result of And operation
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * PARCBitVector *andVector = parcBitVector_Create();
- * parcBitVector_Set(andVector, 11);
- *
- * PARCBitVector *result = parcBitVector_And(parcBitVector, andVector);
- * parcAssertTrue(parcBitVector_NumberOfBitsSet(result) == 0, "Vector should have been empty");
- *
- * parcBitVector_Release(&parcBitVector);
- * parcBitVector_Release(&andVector);
- * parcBitVector_Release(&result);
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_And(const PARCBitVector *a, const PARCBitVector *b);
-
-/**
- * Logical Or of a vector contents with another vector
- *
- * @param [in] a vector
- * @param [in] b vector
- * @param [out] allocated vector with result of Or operation
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * PARCBitVector *orVector = parcBitVector_Create();
- * parcBitVector_Set(orVector, 11);
- *
- * PARCBitVector *result = parcBitVector_Or(parcBitVector, orVector);
- * parcAssertTrue(parcBitVector_NumberOfBitsSet(result) == 2, "Vector should have been set");
- *
- * parcBitVector_Release(&parcBitVector);
- * parcBitVector_Release(&orVector);
- * parcBitVector_Release(&result);
- * }
- * @endcode
- *
- */
-PARCBitVector *parcBitVector_Or(const PARCBitVector *a, const PARCBitVector *b);
-
-/**
- * Set a vector of bits in a vector
- *
- * @param [in] parcBitVector to set bits in
- * @param [in] bitsToSet vector of bits to set
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * PARCBitVector *bitsToSet = parcBitVector_Create();
- * parcBitVector_Set(bitsToSet, 10);
- * parcBitVector_SetVector(parcBitVector, bitsToSet);
- * parcAssertTrue(parcBitVector_Get(parcBitVector, 10) == 1, "Vector should have been set");
- * }
- * @endcode
- *
- */
-void parcBitVector_SetVector(PARCBitVector *parcBitVector, const PARCBitVector *bitsToSet);
-
-/**
- * Reset the bits of bit vector to 0
- *
- * @param [in] parcBitVector to set bits in
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcBitVector_Set(parcBitVector, 42);
- * parcBitVector_Reset(parcBitVector);
- * parcAssertTrue(parcBitVector_NumberOfBitsSet(parcBitVector) == 0, "Vector should have 0 bits set");
- * }
- * @endcode
- *
- */
-void parcBitVector_Reset(PARCBitVector *parcBitVector);
-
-/**
- * Clear a bit in a vector
- *
- * @param [in] parcBitVector to clear bit in
- * @param [in] bit in vector to clear
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcAssertTrue(parcBitVector_Get(parcBitVector, 10) == 1, "Vector should have been set");
- * parcBitVector_Clear(parcBitVector, 10);
- * parcAssertTrue(parcBitVector_Get(parcBitVector, 10) == 0, "Vector should have been cleared");
- * }
- * @endcode
- *
- */
-void parcBitVector_Clear(PARCBitVector *parcBitVector, unsigned bit);
-
-/**
- * Clear a vector of bits in a vector
- *
- * @param [in] parcBitVector to clear bits in
- * @param [in] bitsToClear vector of bits to clear
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * PARCBitVector *bitsToClear = parcBitVector_Create();
- * parcBitVector_Set(bitsToClear, 10);
- * parcBitVector_SetVector(parcBitVector, bitsToClear);
- * parcAssertTrue(parcBitVector_Get(parcBitVector, 10) == 0, "Vector should have been cleared");
- * }
- * @endcode
- *
- */
-void parcBitVector_ClearVector(PARCBitVector *parcBitVector, const PARCBitVector *bitsToClear);
-
-/**
- * Return number of bits set in a vector
- *
- * @param [in] parcBitVector to return number of bits set from
- * @returns number of bits currently set in bit vector
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcAssertTrue(parcBitVector_NumberOfBitsSet(parcBitVector) == 1, "One bit should have been set");
- * }
- * @endcode
- *
- */
-unsigned parcBitVector_NumberOfBitsSet(const PARCBitVector *parcBitVector);
-
-/**
- * Return index if next set bit in vector
- *
- * @param [in] parcBitVector to inspect
- * @param [in] startFrom bit position to start inspection from
- * @returns index of next bit set in vector after startFrom or -1 if none
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 10);
- * parcBitVector_Set(parcBitVector, 12);
- * parcAssertTrue(parcBitVector_NextBitSet(parcBitVector, 0) == 10, "Bit 10 should have been found first");
- * parcAssertTrue(parcBitVector_NextBitSet(parcBitVector, 11) == 12, "Bit 12 should have been found next");
- * }
- * @endcode
- *
- */
-unsigned parcBitVector_NextBitSet(const PARCBitVector *parcBitVector, unsigned startFrom);
-
-/**
- * Return text representation of a bit vector
- *
- * @param [in] parcBitVector to represent
- * @returns allocated character string representing bit vector which must be released by parcMemory_Deallocate
- *
- * Example:
- * @code
- * {
- * PARCBitVector *parcBitVector = parcBitVector_Create();
- * parcBitVector_Set(parcBitVector, 1);
- * const char *bitVectorString = parcBitVector_ToString(parcBitVector);
- * printf("Vector contents: %s\n", bitVectorString);
- * parcMemory_Deallocate(&bitVectorString);
- * }
- * @endcode
- *
- */
-char *parcBitVector_ToString(const PARCBitVector *parcBitVector);
-#endif // libparc_parc_BitVector_h