mirror of
https://github.com/overte-org/overte.git
synced 2025-07-22 18:13:35 +02:00
commit
ac66f09157
14 changed files with 31 additions and 32 deletions
|
@ -5,6 +5,10 @@ project(hifi)
|
||||||
IF (WIN32)
|
IF (WIN32)
|
||||||
add_definitions( -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS )
|
add_definitions( -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS )
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1 ")
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1 ")
|
||||||
|
ELSEIF (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
|
||||||
|
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas")
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||||
ENDIF(WIN32)
|
ENDIF(WIN32)
|
||||||
|
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{QT_CMAKE_PREFIX_PATH})
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{QT_CMAKE_PREFIX_PATH})
|
||||||
|
|
|
@ -2166,7 +2166,7 @@ void Application::updateShadowMap() {
|
||||||
rotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), farScale) + translation),
|
rotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), farScale) + translation),
|
||||||
rotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), farScale) + translation) };
|
rotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), farScale) + translation) };
|
||||||
glm::vec3 minima(FLT_MAX, FLT_MAX, FLT_MAX), maxima(-FLT_MAX, -FLT_MAX, -FLT_MAX);
|
glm::vec3 minima(FLT_MAX, FLT_MAX, FLT_MAX), maxima(-FLT_MAX, -FLT_MAX, -FLT_MAX);
|
||||||
for (int i = 0; i < sizeof(points) / sizeof(points[0]); i++) {
|
for (size_t i = 0; i < sizeof(points) / sizeof(points[0]); i++) {
|
||||||
minima = glm::min(minima, points[i]);
|
minima = glm::min(minima, points[i]);
|
||||||
maxima = glm::max(maxima, points[i]);
|
maxima = glm::max(maxima, points[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,7 +131,7 @@ void BandwidthMeter::render(int screenWidth, int screenHeight) {
|
||||||
|
|
||||||
// Determine total
|
// Determine total
|
||||||
float totalIn = 0.0f, totalOut = 0.0f;
|
float totalIn = 0.0f, totalOut = 0.0f;
|
||||||
for (int i = 0; i < N_CHANNELS; ++i) {
|
for (size_t i = 0; i < N_CHANNELS; ++i) {
|
||||||
|
|
||||||
totalIn += inputStream(ChannelIndex(i)).getValue();
|
totalIn += inputStream(ChannelIndex(i)).getValue();
|
||||||
totalOut += outputStream(ChannelIndex(i)).getValue();
|
totalOut += outputStream(ChannelIndex(i)).getValue();
|
||||||
|
@ -207,7 +207,7 @@ void BandwidthMeter::render(int screenWidth, int screenHeight) {
|
||||||
|
|
||||||
// Render bars
|
// Render bars
|
||||||
int xIn = 0, xOut = 0;
|
int xIn = 0, xOut = 0;
|
||||||
for (int i = 0; i < N_CHANNELS; ++i) {
|
for (size_t i = 0; i < N_CHANNELS; ++i) {
|
||||||
|
|
||||||
ChannelIndex chIdx = ChannelIndex(i);
|
ChannelIndex chIdx = ChannelIndex(i);
|
||||||
int wIn = int(barWidth * inputStream(chIdx).getValue() * UNIT_SCALE / scaleMax);
|
int wIn = int(barWidth * inputStream(chIdx).getValue() * UNIT_SCALE / scaleMax);
|
||||||
|
@ -242,7 +242,7 @@ void BandwidthMeter::render(int screenWidth, int screenHeight) {
|
||||||
|
|
||||||
// After rendering, indicate that no data has been sent/received since the last feed.
|
// After rendering, indicate that no data has been sent/received since the last feed.
|
||||||
// This way, the meters fall when not continuously fed.
|
// This way, the meters fall when not continuously fed.
|
||||||
for (int i = 0; i < N_CHANNELS; ++i) {
|
for (size_t i = 0; i < N_CHANNELS; ++i) {
|
||||||
inputStream(ChannelIndex(i)).updateValue(0);
|
inputStream(ChannelIndex(i)).updateValue(0);
|
||||||
outputStream(ChannelIndex(i)).updateValue(0);
|
outputStream(ChannelIndex(i)).updateValue(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,8 +57,7 @@ void Hand::simulate(float deltaTime, bool isMine) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hand::playSlaps(PalmData& palm, Avatar* avatar)
|
void Hand::playSlaps(PalmData& palm, Avatar* avatar) {
|
||||||
{
|
|
||||||
// Check for palm collisions
|
// Check for palm collisions
|
||||||
glm::vec3 myPalmPosition = palm.getPosition();
|
glm::vec3 myPalmPosition = palm.getPosition();
|
||||||
float palmCollisionDistance = 0.1f;
|
float palmCollisionDistance = 0.1f;
|
||||||
|
|
|
@ -103,9 +103,8 @@ void MyAvatar::update(float deltaTime) {
|
||||||
// Update head mouse from faceshift if active
|
// Update head mouse from faceshift if active
|
||||||
Faceshift* faceshift = Application::getInstance()->getFaceshift();
|
Faceshift* faceshift = Application::getInstance()->getFaceshift();
|
||||||
if (faceshift->isActive()) {
|
if (faceshift->isActive()) {
|
||||||
glm::vec3 headVelocity = faceshift->getHeadAngularVelocity();
|
|
||||||
|
|
||||||
// TODO? resurrect headMouse stuff?
|
// TODO? resurrect headMouse stuff?
|
||||||
|
//glm::vec3 headVelocity = faceshift->getHeadAngularVelocity();
|
||||||
//// sets how quickly head angular rotation moves the head mouse
|
//// sets how quickly head angular rotation moves the head mouse
|
||||||
//const float HEADMOUSE_FACESHIFT_YAW_SCALE = 40.f;
|
//const float HEADMOUSE_FACESHIFT_YAW_SCALE = 40.f;
|
||||||
//const float HEADMOUSE_FACESHIFT_PITCH_SCALE = 30.f;
|
//const float HEADMOUSE_FACESHIFT_PITCH_SCALE = 30.f;
|
||||||
|
|
|
@ -178,7 +178,7 @@ int HandData::decodeRemoteData(const QByteArray& dataByteArray) {
|
||||||
unsigned int numPalms = *sourceBuffer++;
|
unsigned int numPalms = *sourceBuffer++;
|
||||||
|
|
||||||
for (unsigned int handIndex = 0; handIndex < numPalms; ++handIndex) {
|
for (unsigned int handIndex = 0; handIndex < numPalms; ++handIndex) {
|
||||||
if (handIndex >= getNumPalms())
|
if (handIndex >= (unsigned int)getNumPalms())
|
||||||
addNewPalm();
|
addNewPalm();
|
||||||
PalmData& palm = getPalms()[handIndex];
|
PalmData& palm = getPalms()[handIndex];
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ int HandData::decodeRemoteData(const QByteArray& dataByteArray) {
|
||||||
palm.setSixenseID(handIndex);
|
palm.setSixenseID(handIndex);
|
||||||
|
|
||||||
for (unsigned int fingerIndex = 0; fingerIndex < numFingers; ++fingerIndex) {
|
for (unsigned int fingerIndex = 0; fingerIndex < numFingers; ++fingerIndex) {
|
||||||
if (fingerIndex < palm.getNumFingers()) {
|
if (fingerIndex < (unsigned int)palm.getNumFingers()) {
|
||||||
FingerData& finger = palm.getFingers()[fingerIndex];
|
FingerData& finger = palm.getFingers()[fingerIndex];
|
||||||
|
|
||||||
glm::vec3 tipPosition;
|
glm::vec3 tipPosition;
|
||||||
|
|
|
@ -335,7 +335,7 @@ glm::vec3 AABox::getClosestPointOnFace(const glm::vec4& origin, const glm::vec4&
|
||||||
secondAxisMaxPlane + thirdAxisMaxPlane + offset };
|
secondAxisMaxPlane + thirdAxisMaxPlane + offset };
|
||||||
|
|
||||||
float minDistance = FLT_MAX;
|
float minDistance = FLT_MAX;
|
||||||
for (int i = 0; i < sizeof(diagonals) / sizeof(diagonals[0]); i++) {
|
for (size_t i = 0; i < sizeof(diagonals) / sizeof(diagonals[0]); i++) {
|
||||||
float divisor = glm::dot(direction, diagonals[i]);
|
float divisor = glm::dot(direction, diagonals[i]);
|
||||||
if (fabs(divisor) < EPSILON) {
|
if (fabs(divisor) < EPSILON) {
|
||||||
continue; // segment is parallel to diagonal plane
|
continue; // segment is parallel to diagonal plane
|
||||||
|
|
|
@ -50,7 +50,7 @@ void JurisdictionMap::copyContents(unsigned char* rootCodeIn, const std::vector<
|
||||||
unsigned char* rootCode;
|
unsigned char* rootCode;
|
||||||
std::vector<unsigned char*> endNodes;
|
std::vector<unsigned char*> endNodes;
|
||||||
if (rootCodeIn) {
|
if (rootCodeIn) {
|
||||||
int bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(rootCodeIn));
|
size_t bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(rootCodeIn));
|
||||||
rootCode = new unsigned char[bytes];
|
rootCode = new unsigned char[bytes];
|
||||||
memcpy(rootCode, rootCodeIn, bytes);
|
memcpy(rootCode, rootCodeIn, bytes);
|
||||||
} else {
|
} else {
|
||||||
|
@ -60,7 +60,7 @@ void JurisdictionMap::copyContents(unsigned char* rootCodeIn, const std::vector<
|
||||||
|
|
||||||
for (size_t i = 0; i < endNodesIn.size(); i++) {
|
for (size_t i = 0; i < endNodesIn.size(); i++) {
|
||||||
if (endNodesIn[i]) {
|
if (endNodesIn[i]) {
|
||||||
int bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(endNodesIn[i]));
|
size_t bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(endNodesIn[i]));
|
||||||
unsigned char* endNodeCode = new unsigned char[bytes];
|
unsigned char* endNodeCode = new unsigned char[bytes];
|
||||||
memcpy(endNodeCode, endNodesIn[i], bytes);
|
memcpy(endNodeCode, endNodesIn[i], bytes);
|
||||||
endNodes.push_back(endNodeCode);
|
endNodes.push_back(endNodeCode);
|
||||||
|
@ -133,7 +133,7 @@ void myDebugPrintOctalCode(const unsigned char* octalCode, bool withNewLine) {
|
||||||
if (!octalCode) {
|
if (!octalCode) {
|
||||||
printf("NULL");
|
printf("NULL");
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(octalCode)); i++) {
|
for (size_t i = 0; i < bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(octalCode)); i++) {
|
||||||
myDebugoutputBits(octalCode[i],false);
|
myDebugoutputBits(octalCode[i],false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -293,7 +293,7 @@ int JurisdictionMap::packIntoMessage(unsigned char* destinationBuffer, int avail
|
||||||
|
|
||||||
// add the root jurisdiction
|
// add the root jurisdiction
|
||||||
if (_rootOctalCode) {
|
if (_rootOctalCode) {
|
||||||
int bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(_rootOctalCode));
|
size_t bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(_rootOctalCode));
|
||||||
memcpy(destinationBuffer, &bytes, sizeof(bytes));
|
memcpy(destinationBuffer, &bytes, sizeof(bytes));
|
||||||
destinationBuffer += sizeof(bytes);
|
destinationBuffer += sizeof(bytes);
|
||||||
memcpy(destinationBuffer, _rootOctalCode, bytes);
|
memcpy(destinationBuffer, _rootOctalCode, bytes);
|
||||||
|
@ -306,7 +306,7 @@ int JurisdictionMap::packIntoMessage(unsigned char* destinationBuffer, int avail
|
||||||
|
|
||||||
for (int i=0; i < endNodeCount; i++) {
|
for (int i=0; i < endNodeCount; i++) {
|
||||||
unsigned char* endNodeCode = _endNodes[i];
|
unsigned char* endNodeCode = _endNodes[i];
|
||||||
int bytes = 0;
|
size_t bytes = 0;
|
||||||
if (endNodeCode) {
|
if (endNodeCode) {
|
||||||
bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(endNodeCode));
|
bytes = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(endNodeCode));
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,10 +222,8 @@ int Octree::readNodeData(OctreeElement* destinationNode, const unsigned char* no
|
||||||
}
|
}
|
||||||
|
|
||||||
OctreeElement* childNodeAt = destinationNode->getChildAtIndex(i);
|
OctreeElement* childNodeAt = destinationNode->getChildAtIndex(i);
|
||||||
bool nodeWasDirty = false;
|
|
||||||
bool nodeIsDirty = false;
|
bool nodeIsDirty = false;
|
||||||
if (childNodeAt) {
|
if (childNodeAt) {
|
||||||
nodeWasDirty = childNodeAt->isDirty();
|
|
||||||
bytesRead += childNodeAt->readElementDataFromBuffer(nodeData + bytesRead, bytesLeftToRead, args);
|
bytesRead += childNodeAt->readElementDataFromBuffer(nodeData + bytesRead, bytesLeftToRead, args);
|
||||||
childNodeAt->setSourceUUID(args.sourceUUID);
|
childNodeAt->setSourceUUID(args.sourceUUID);
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ void OctreeElement::init(unsigned char * octalCode) {
|
||||||
_voxelNodeLeafCount++; // all nodes start as leaf nodes
|
_voxelNodeLeafCount++; // all nodes start as leaf nodes
|
||||||
|
|
||||||
|
|
||||||
int octalCodeLength = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(octalCode));
|
size_t octalCodeLength = bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(octalCode));
|
||||||
if (octalCodeLength > sizeof(_octalCode)) {
|
if (octalCodeLength > sizeof(_octalCode)) {
|
||||||
_octalCode.pointer = octalCode;
|
_octalCode.pointer = octalCode;
|
||||||
_octcodePointer = true;
|
_octcodePointer = true;
|
||||||
|
|
|
@ -225,6 +225,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) {
|
||||||
// while ramping it up to 1 when attenuationFactor = 0
|
// while ramping it up to 1 when attenuationFactor = 0
|
||||||
damping = DAMPING + (1.f - attenuationFactor) * (1.f - DAMPING);
|
damping = DAMPING + (1.f - attenuationFactor) * (1.f - DAMPING);
|
||||||
}
|
}
|
||||||
|
collision->_damping = damping;
|
||||||
}
|
}
|
||||||
// HACK END
|
// HACK END
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,6 @@ void ParticleTreeElement::getParticles(const glm::vec3& searchPosition, float se
|
||||||
uint16_t numberOfParticles = _particles->size();
|
uint16_t numberOfParticles = _particles->size();
|
||||||
for (uint16_t i = 0; i < numberOfParticles; i++) {
|
for (uint16_t i = 0; i < numberOfParticles; i++) {
|
||||||
const Particle* particle = &(*_particles)[i];
|
const Particle* particle = &(*_particles)[i];
|
||||||
glm::vec3 particlePosition = particle->getPosition();
|
|
||||||
float distance = glm::length(particle->getPosition() - searchPosition);
|
float distance = glm::length(particle->getPosition() - searchPosition);
|
||||||
if (distance < searchRadius + particle->getRadius()) {
|
if (distance < searchRadius + particle->getRadius()) {
|
||||||
foundParticles.push_back(particle);
|
foundParticles.push_back(particle);
|
||||||
|
@ -294,15 +293,14 @@ int ParticleTreeElement::readElementDataFromBuffer(const unsigned char* data, in
|
||||||
uint16_t numberOfParticles = 0;
|
uint16_t numberOfParticles = 0;
|
||||||
int expectedBytesPerParticle = Particle::expectedBytes();
|
int expectedBytesPerParticle = Particle::expectedBytes();
|
||||||
|
|
||||||
if (bytesLeftToRead >= sizeof(numberOfParticles)) {
|
if (bytesLeftToRead >= (int)sizeof(numberOfParticles)) {
|
||||||
|
|
||||||
// read our particles in....
|
// read our particles in....
|
||||||
numberOfParticles = *(uint16_t*)dataAt;
|
numberOfParticles = *(uint16_t*)dataAt;
|
||||||
dataAt += sizeof(numberOfParticles);
|
dataAt += sizeof(numberOfParticles);
|
||||||
bytesLeftToRead -= sizeof(numberOfParticles);
|
bytesLeftToRead -= (int)sizeof(numberOfParticles);
|
||||||
bytesRead += sizeof(numberOfParticles);
|
bytesRead += sizeof(numberOfParticles);
|
||||||
|
|
||||||
if (bytesLeftToRead >= (numberOfParticles * expectedBytesPerParticle)) {
|
if (bytesLeftToRead >= (int)(numberOfParticles * expectedBytesPerParticle)) {
|
||||||
for (uint16_t i = 0; i < numberOfParticles; i++) {
|
for (uint16_t i = 0; i < numberOfParticles; i++) {
|
||||||
Particle tempParticle;
|
Particle tempParticle;
|
||||||
int bytesForThisParticle = tempParticle.readParticleDataFromBuffer(dataAt, bytesLeftToRead, args);
|
int bytesForThisParticle = tempParticle.readParticleDataFromBuffer(dataAt, bytesLeftToRead, args);
|
||||||
|
|
|
@ -35,7 +35,7 @@ void printOctalCode(const unsigned char* octalCode) {
|
||||||
qDebug("NULL");
|
qDebug("NULL");
|
||||||
} else {
|
} else {
|
||||||
QDebug continuedDebug = qDebug().nospace();
|
QDebug continuedDebug = qDebug().nospace();
|
||||||
for (int i = 0; i < bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(octalCode)); i++) {
|
for (size_t i = 0; i < bytesRequiredForCodeLength(numberOfThreeBitSectionsInCode(octalCode)); i++) {
|
||||||
outputBits(octalCode[i], &continuedDebug);
|
outputBits(octalCode[i], &continuedDebug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,11 +51,11 @@ char sectionValue(const unsigned char* startByte, char startIndexInByte) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int bytesRequiredForCodeLength(unsigned char threeBitCodes) {
|
size_t bytesRequiredForCodeLength(unsigned char threeBitCodes) {
|
||||||
if (threeBitCodes == 0) {
|
if (threeBitCodes == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 1 + (int)ceilf((threeBitCodes * 3) / 8.0f);
|
return 1 + ceilf((threeBitCodes * 3) / 8.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,10 +78,10 @@ unsigned char* childOctalCode(const unsigned char* parentOctalCode, char childNu
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
// get the number of bytes used by the parent octal code
|
// get the number of bytes used by the parent octal code
|
||||||
int parentCodeBytes = bytesRequiredForCodeLength(parentCodeSections);
|
size_t parentCodeBytes = bytesRequiredForCodeLength(parentCodeSections);
|
||||||
|
|
||||||
// child code will have one more section than the parent
|
// child code will have one more section than the parent
|
||||||
int childCodeBytes = bytesRequiredForCodeLength(parentCodeSections + 1);
|
size_t childCodeBytes = bytesRequiredForCodeLength(parentCodeSections + 1);
|
||||||
|
|
||||||
// create a new buffer to hold the new octal code
|
// create a new buffer to hold the new octal code
|
||||||
unsigned char* newCode = new unsigned char[childCodeBytes];
|
unsigned char* newCode = new unsigned char[childCodeBytes];
|
||||||
|
@ -175,7 +175,7 @@ OctalCodeComparison compareOctalCodes(const unsigned char* codeA, const unsigned
|
||||||
|
|
||||||
OctalCodeComparison result = LESS_THAN; // assume it's shallower
|
OctalCodeComparison result = LESS_THAN; // assume it's shallower
|
||||||
|
|
||||||
int numberOfBytes = std::min(bytesRequiredForCodeLength(*codeA), bytesRequiredForCodeLength(*codeB));
|
size_t numberOfBytes = std::min(bytesRequiredForCodeLength(*codeA), bytesRequiredForCodeLength(*codeB));
|
||||||
int compare = memcmp(codeA, codeB, numberOfBytes);
|
int compare = memcmp(codeA, codeB, numberOfBytes);
|
||||||
|
|
||||||
if (compare < 0) {
|
if (compare < 0) {
|
||||||
|
@ -367,7 +367,7 @@ QString octalCodeToHexString(const unsigned char* octalCode) {
|
||||||
if (!octalCode) {
|
if (!octalCode) {
|
||||||
output = "00";
|
output = "00";
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < bytesRequiredForCodeLength(*octalCode); i++) {
|
for (size_t i = 0; i < bytesRequiredForCodeLength(*octalCode); i++) {
|
||||||
output.append(QString("%1").arg(octalCode[i], HEX_BYTE_SIZE, HEX_NUMBER_BASE, QChar('0')).toUpper());
|
output.append(QString("%1").arg(octalCode[i], HEX_BYTE_SIZE, HEX_NUMBER_BASE, QChar('0')).toUpper());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ const int GREEN_INDEX = 1;
|
||||||
const int BLUE_INDEX = 2;
|
const int BLUE_INDEX = 2;
|
||||||
|
|
||||||
void printOctalCode(const unsigned char* octalCode);
|
void printOctalCode(const unsigned char* octalCode);
|
||||||
int bytesRequiredForCodeLength(unsigned char threeBitCodes);
|
size_t bytesRequiredForCodeLength(unsigned char threeBitCodes);
|
||||||
int branchIndexWithDescendant(const unsigned char* ancestorOctalCode, const unsigned char* descendantOctalCode);
|
int branchIndexWithDescendant(const unsigned char* ancestorOctalCode, const unsigned char* descendantOctalCode);
|
||||||
unsigned char* childOctalCode(const unsigned char* parentOctalCode, char childNumber);
|
unsigned char* childOctalCode(const unsigned char* parentOctalCode, char childNumber);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue