mirror of
https://github.com/zxing/zxing.git
synced 2024-11-13 22:44:09 -08:00
216 lines
7.1 KiB
C#
216 lines
7.1 KiB
C#
|
//
|
||
|
// In order to convert some functionality to Visual C#, the Java Language Conversion Assistant
|
||
|
// creates "support classes" that duplicate the original functionality.
|
||
|
//
|
||
|
// Support classes replicate the functionality of the original code, but in some cases they are
|
||
|
// substantially different architecturally. Although every effort is made to preserve the
|
||
|
// original architecture of the application in the converted project, the user should be aware that
|
||
|
// the primary goal of these support classes is to replicate functionality, and that at times
|
||
|
// the architecture of the resulting solution may differ somewhat.
|
||
|
//
|
||
|
|
||
|
using System;
|
||
|
|
||
|
/// <summary>
|
||
|
/// Contains conversion support elements such as classes, interfaces and static methods.
|
||
|
/// </summary>
|
||
|
public class SupportClass
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Converts an array of sbytes to an array of bytes
|
||
|
/// </summary>
|
||
|
/// <param name="sbyteArray">The array of sbytes to be converted</param>
|
||
|
/// <returns>The new array of bytes</returns>
|
||
|
public static byte[] ToByteArray(sbyte[] sbyteArray)
|
||
|
{
|
||
|
byte[] byteArray = null;
|
||
|
|
||
|
if (sbyteArray != null)
|
||
|
{
|
||
|
byteArray = new byte[sbyteArray.Length];
|
||
|
for(int index=0; index < sbyteArray.Length; index++)
|
||
|
byteArray[index] = (byte) sbyteArray[index];
|
||
|
}
|
||
|
return byteArray;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Converts a string to an array of bytes
|
||
|
/// </summary>
|
||
|
/// <param name="sourceString">The string to be converted</param>
|
||
|
/// <returns>The new array of bytes</returns>
|
||
|
public static byte[] ToByteArray(System.String sourceString)
|
||
|
{
|
||
|
return System.Text.UTF8Encoding.UTF8.GetBytes(sourceString);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Converts a array of object-type instances to a byte-type array.
|
||
|
/// </summary>
|
||
|
/// <param name="tempObjectArray">Array to convert.</param>
|
||
|
/// <returns>An array of byte type elements.</returns>
|
||
|
public static byte[] ToByteArray(System.Object[] tempObjectArray)
|
||
|
{
|
||
|
byte[] byteArray = null;
|
||
|
if (tempObjectArray != null)
|
||
|
{
|
||
|
byteArray = new byte[tempObjectArray.Length];
|
||
|
for (int index = 0; index < tempObjectArray.Length; index++)
|
||
|
byteArray[index] = (byte)tempObjectArray[index];
|
||
|
}
|
||
|
return byteArray;
|
||
|
}
|
||
|
|
||
|
/*******************************/
|
||
|
/// <summary>
|
||
|
/// Performs an unsigned bitwise right shift with the specified number
|
||
|
/// </summary>
|
||
|
/// <param name="number">Number to operate on</param>
|
||
|
/// <param name="bits">Ammount of bits to shift</param>
|
||
|
/// <returns>The resulting number from the shift operation</returns>
|
||
|
public static int URShift(int number, int bits)
|
||
|
{
|
||
|
if ( number >= 0)
|
||
|
return number >> bits;
|
||
|
else
|
||
|
return (number >> bits) + (2 << ~bits);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Performs an unsigned bitwise right shift with the specified number
|
||
|
/// </summary>
|
||
|
/// <param name="number">Number to operate on</param>
|
||
|
/// <param name="bits">Ammount of bits to shift</param>
|
||
|
/// <returns>The resulting number from the shift operation</returns>
|
||
|
public static int URShift(int number, long bits)
|
||
|
{
|
||
|
return URShift(number, (int)bits);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Performs an unsigned bitwise right shift with the specified number
|
||
|
/// </summary>
|
||
|
/// <param name="number">Number to operate on</param>
|
||
|
/// <param name="bits">Ammount of bits to shift</param>
|
||
|
/// <returns>The resulting number from the shift operation</returns>
|
||
|
public static long URShift(long number, int bits)
|
||
|
{
|
||
|
if ( number >= 0)
|
||
|
return number >> bits;
|
||
|
else
|
||
|
return (number >> bits) + (2L << ~bits);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Performs an unsigned bitwise right shift with the specified number
|
||
|
/// </summary>
|
||
|
/// <param name="number">Number to operate on</param>
|
||
|
/// <param name="bits">Ammount of bits to shift</param>
|
||
|
/// <returns>The resulting number from the shift operation</returns>
|
||
|
public static long URShift(long number, long bits)
|
||
|
{
|
||
|
return URShift(number, (int)bits);
|
||
|
}
|
||
|
|
||
|
/*******************************/
|
||
|
/// <summary>
|
||
|
/// This method returns the literal value received
|
||
|
/// </summary>
|
||
|
/// <param name="literal">The literal to return</param>
|
||
|
/// <returns>The received value</returns>
|
||
|
public static long Identity(long literal)
|
||
|
{
|
||
|
return literal;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// This method returns the literal value received
|
||
|
/// </summary>
|
||
|
/// <param name="literal">The literal to return</param>
|
||
|
/// <returns>The received value</returns>
|
||
|
public static ulong Identity(ulong literal)
|
||
|
{
|
||
|
return literal;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// This method returns the literal value received
|
||
|
/// </summary>
|
||
|
/// <param name="literal">The literal to return</param>
|
||
|
/// <returns>The received value</returns>
|
||
|
public static float Identity(float literal)
|
||
|
{
|
||
|
return literal;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// This method returns the literal value received
|
||
|
/// </summary>
|
||
|
/// <param name="literal">The literal to return</param>
|
||
|
/// <returns>The received value</returns>
|
||
|
public static double Identity(double literal)
|
||
|
{
|
||
|
return literal;
|
||
|
}
|
||
|
|
||
|
/*******************************/
|
||
|
/// <summary>
|
||
|
/// Copies an array of chars obtained from a String into a specified array of chars
|
||
|
/// </summary>
|
||
|
/// <param name="sourceString">The String to get the chars from</param>
|
||
|
/// <param name="sourceStart">Position of the String to start getting the chars</param>
|
||
|
/// <param name="sourceEnd">Position of the String to end getting the chars</param>
|
||
|
/// <param name="destinationArray">Array to return the chars</param>
|
||
|
/// <param name="destinationStart">Position of the destination array of chars to start storing the chars</param>
|
||
|
/// <returns>An array of chars</returns>
|
||
|
public static void GetCharsFromString(System.String sourceString, int sourceStart, int sourceEnd, char[] destinationArray, int destinationStart)
|
||
|
{
|
||
|
int sourceCounter;
|
||
|
int destinationCounter;
|
||
|
sourceCounter = sourceStart;
|
||
|
destinationCounter = destinationStart;
|
||
|
while (sourceCounter < sourceEnd)
|
||
|
{
|
||
|
destinationArray[destinationCounter] = (char) sourceString[sourceCounter];
|
||
|
sourceCounter++;
|
||
|
destinationCounter++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*******************************/
|
||
|
/// <summary>
|
||
|
/// Sets the capacity for the specified ArrayList
|
||
|
/// </summary>
|
||
|
/// <param name="vector">The ArrayList which capacity will be set</param>
|
||
|
/// <param name="newCapacity">The new capacity value</param>
|
||
|
public static void SetCapacity(System.Collections.ArrayList vector, int newCapacity)
|
||
|
{
|
||
|
if (newCapacity > vector.Count)
|
||
|
vector.AddRange(new Array[newCapacity-vector.Count]);
|
||
|
else if (newCapacity < vector.Count)
|
||
|
vector.RemoveRange(newCapacity, vector.Count - newCapacity);
|
||
|
vector.Capacity = newCapacity;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/*******************************/
|
||
|
/// <summary>
|
||
|
/// Receives a byte array and returns it transformed in an sbyte array
|
||
|
/// </summary>
|
||
|
/// <param name="byteArray">Byte array to process</param>
|
||
|
/// <returns>The transformed array</returns>
|
||
|
public static sbyte[] ToSByteArray(byte[] byteArray)
|
||
|
{
|
||
|
sbyte[] sbyteArray = null;
|
||
|
if (byteArray != null)
|
||
|
{
|
||
|
sbyteArray = new sbyte[byteArray.Length];
|
||
|
for(int index=0; index < byteArray.Length; index++)
|
||
|
sbyteArray[index] = (sbyte) byteArray[index];
|
||
|
}
|
||
|
return sbyteArray;
|
||
|
}
|
||
|
|
||
|
}
|