From 1afa2b6510660eba4d25651dd42c68cd0140aea1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 29 Sep 2010 19:47:38 +0000 Subject: [PATCH] fixed parser/nodes.h node classes not specifying "const" when overriding methods git-svn-id: svn://anubis/fart/branches/scene-file-scripting@319 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- parser/nodes.h | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/parser/nodes.h b/parser/nodes.h index cd1662a..52fb5c9 100644 --- a/parser/nodes.h +++ b/parser/nodes.h @@ -15,16 +15,30 @@ class Node void addChildren(refptr other); std::vector< refptr > & getChildren() { return m_children; } - virtual int getInteger() const { return 0; } - virtual double getNumber() const { return 0.0; } + virtual int getInteger() const + { + std::cerr << "Warning: Node::getInteger() called!" << std::endl; + return 0; + } + virtual double getNumber() const + { + std::cerr << "Warning: Node::getNumber() called!" << std::endl; + return 0.0; + } virtual refptr getVector() const { + std::cerr << "Warning: Node::getVector() called!" << std::endl; return refptr(NULL); } + virtual std::string getString() const + { + std::cerr << "Warning: Node::getString() called!" << std::endl; + return ""; + } + virtual bool isShape() const { return false; } virtual bool isMaterial() const { return false; } virtual bool isTransformBlock() const { return false; } - virtual std::string getString() const { return ""; } virtual bool isExpression() const { return false; } protected: @@ -36,8 +50,8 @@ class IntegerNode : public Node { public: IntegerNode(int number) { m_number = number; } - int getInteger() { return m_number; } - double getNumber() { return m_number; } + int getInteger() const { return m_number; } + double getNumber() const { return m_number; } protected: int m_number; @@ -56,7 +70,7 @@ class NumberNode : public Node addChild(expr); m_direct = false; } - double getNumber() + double getNumber() const { return m_direct ? m_number : m_children[0]->getNumber(); } @@ -79,7 +93,7 @@ class VectorNode : public Node { addChild(node); } - refptr getVector() + refptr getVector() const { if (m_children.size() == 1) { @@ -92,7 +106,12 @@ class VectorNode : public Node m_children[1]->getNumber(), m_children[2]->getNumber()); } - return NULL; + else + { + std::cerr << "Warning: VectorNode::getVector() returning NULL!" + << std::endl; + return NULL; + } } }; @@ -158,7 +177,7 @@ class IdentifierNode : public Node { public: IdentifierNode(const std::string & str) { m_string = str; } - std::string getString() + std::string getString() const { return m_string; } @@ -253,7 +272,7 @@ class PlanePositionNode : public VectorNode { m_dist = dist; } - double getNumber() { return m_dist->getNumber(); } + double getNumber() const { return m_dist->getNumber(); } protected: refptr m_dist; @@ -412,7 +431,7 @@ class ExpressionNode : public Node { public: bool isExpression() const { return true; } - virtual double getInteger() { return getNumber(); } + virtual int getInteger() const { return getNumber(); } }; class BinOpNode : public ExpressionNode