diff --git a/expression_reference.h b/expression_reference.h index 76776affd..75c53f3d7 100644 --- a/expression_reference.h +++ b/expression_reference.h @@ -16,7 +16,6 @@ public: // Allow every ExpressionReference to be transformed into an ExpressionReference, i.e. Expression operator ExpressionReference() const { - printf("ExpressionReference cast\n"); // TODO: make sure this is kosher // static_assert(sizeof(ExpressionReference) == sizeof(ExpressionReference), "All ExpressionReference are supposed to have the same size"); return *(reinterpret_cast *>(this)); diff --git a/float_node.h b/float_node.h index 843de0ee0..90e6193ca 100644 --- a/float_node.h +++ b/float_node.h @@ -7,7 +7,7 @@ class FloatNode : public ExpressionNode { public: FloatNode() : ExpressionNode() { - printf("Create float\n"); + printf("Created float\n"); } size_t size() const override { return sizeof(FloatNode); diff --git a/test.cpp b/test.cpp index 4a1015a49..a450bd51d 100644 --- a/test.cpp +++ b/test.cpp @@ -21,20 +21,27 @@ void poolTest() { } Expression buildAddition() { + printf("\n\n-----------------------------\n"); + printf("CODE: Float smallFloat(0.2f);\n\n"); Float smallFloat(0.2f); + + printf("\n\n-----------------------------\n"); + printf("CODE: Float bigFloat(3.4f);\n\n"); Float bigFloat(3.4f); + printf("\n\n-----------------------------\n"); + printf("CODE: Addition a(smallFloat, bigFloat);\n\n"); Addition a(smallFloat, bigFloat); TreePool::sharedPool()->log(); - printf("EXITING\n"); - printf("smallFloat ref = %d\n", smallFloat.identifier()); - printf("bigFloat ref = %d\n", bigFloat.identifier()); + printf("\n\n-----------------------------\n"); + printf("CODE: return a;\n\n"); return a; } int main() { - printf("Hello\n"); + printf("\n\n-----------------------------\n"); + printf("CODE: Expression a = buildAddition();\n\n"); Expression a = buildAddition(); printf("HAS RETURNED\n"); TreePool::sharedPool()->log(); diff --git a/tree_node.cpp b/tree_node.cpp index c1b51c59d..2c131a9fa 100644 --- a/tree_node.cpp +++ b/tree_node.cpp @@ -3,7 +3,7 @@ #include "expression_node.h" void TreeNode::release() { - printf("Releasing of %d(%p)\n", m_identifier, this); + printf("Release %d(%p)\n", m_identifier, this); m_referenceCounter--; if (m_referenceCounter == 0) { if (numberOfChildren() != 0) { @@ -20,7 +20,7 @@ void TreeNode::release() { } } while (child->identifier() != lastIdentifier); } - printf("DELETE %d(%p)\n", m_identifier, this); + printf("Delete %d(%p)\n", m_identifier, this); int identifier = m_identifier; delete this; TreePool::sharedPool()->freeIdentifier(identifier); diff --git a/tree_pool.cpp b/tree_pool.cpp index 815e88518..13a3796d6 100644 --- a/tree_pool.cpp +++ b/tree_pool.cpp @@ -99,7 +99,6 @@ void TreePool::move(TreeNode * source, TreeNode * destination) { // Move the Node size_t srcDeepSize = source->deepSize(); - printf("SourceDeepSize %zu\n", srcDeepSize); char * destinationAddress = reinterpret_cast(destination); char * sourceAddress = reinterpret_cast(source); insert(destinationAddress, sourceAddress, srcDeepSize); @@ -110,9 +109,7 @@ void TreePool::move(TreeNode * source, TreeNode * destination) { if (nodeAddress == nullptr) { continue; } else if (nodeAddress >= sourceAddress && nodeAddress < sourceAddress + srcDeepSize) { - printf("Source %p, dest %p, currentNode identifier %d, pointer %p\n", sourceAddress, destinationAddress, i, m_nodeForIdentifier[i]); if (destinationAddress < sourceAddress) { - printf("former pointer %p, pointer difference %ld", m_nodeForIdentifier[i], sourceAddress - destinationAddress); m_nodeForIdentifier[i] = reinterpret_cast(nodeAddress - (sourceAddress - destinationAddress)); } else { m_nodeForIdentifier[i] = reinterpret_cast(nodeAddress + (destinationAddress - (sourceAddress + srcDeepSize))); diff --git a/tree_pool.h b/tree_pool.h index 6ddb0d0f9..aeb44f5b2 100644 --- a/tree_pool.h +++ b/tree_pool.h @@ -17,14 +17,14 @@ public: break; } } - printf("Generating identifier %d\n", newIdentifier); + //printf("Generating identifier %d\n", newIdentifier); assert(newIdentifier != -1); // TODO error handling return newIdentifier; } void freeIdentifier(int identifier) { assert(identifier >= 0 && identifier < MaxNumberOfNodes); - printf("DELETE IDENTIFIER %d\n", identifier); + printf("Freeing identifier %d\n", identifier); m_nodeForIdentifier[identifier] = nullptr; } diff --git a/tree_reference.h b/tree_reference.h index 39455b61c..2c22518ee 100644 --- a/tree_reference.h +++ b/tree_reference.h @@ -9,18 +9,16 @@ template class TreeReference { public: - TreeReference(const TreeReference & tr) : - m_identifier(tr.m_identifier) - { - printf("TreeReference copy of %d\n", m_identifier); - node()->retain(); + TreeReference(const TreeReference & tr) { + int trNodeIdentifier = tr.m_identifier; + printf("TreeReference copy of %d\n", trNodeIdentifier); + TreeNode * nodeCopy = TreePool::sharedPool()->deepCopy(TreePool::sharedPool()->node(trNodeIdentifier)); + m_identifier = nodeCopy->identifier(); } ~TreeReference() { printf("TreeRef destroy of %d\n", m_identifier); assert(node()); - printf("TreeRef's node %p\n", node()); - printf("TreeRef's node identifier %d and node identifier %d\n", node()->m_identifier, m_identifier); assert(node()->m_identifier == m_identifier); node()->release(); } @@ -66,20 +64,18 @@ protected: TreeReference() { TreeNode * node = new T(); m_identifier = node->identifier(); - printf("TreeNode orig build of %d\n", m_identifier); + printf("Creating TreeRef of new node %d\n", m_identifier); } private: TreeReference(TreeNode * node) : m_identifier(node->identifier()) - //m_cachedNode(node) { - printf("TreeNode build of %d\n", m_identifier); + printf("Creating TreeRef of existing node %d\n", m_identifier); node->retain(); } int m_identifier; - //TreeNode * m_cachedNode; }; #endif