zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #24399
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
Paul J. Lucas has proposed merging lp:~paul-lucas/zorba/pjl-misc into lp:zorba.
Commit message:
Added operator<< for enums; moved to .cpp.
Requested reviews:
Paul J. Lucas (paul-lucas)
For more details, see:
https://code.launchpad.net/~paul-lucas/zorba/pjl-misc/+merge/176445
Added operator<< for enums; moved to .cpp.
--
https://code.launchpad.net/~paul-lucas/zorba/pjl-misc/+merge/176445
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'include/zorba/store_consts.h'
--- include/zorba/store_consts.h 2013-06-29 08:38:53 +0000
+++ include/zorba/store_consts.h 2013-07-23 17:37:32 +0000
@@ -20,7 +20,10 @@
#include <string>
#include <zorba/config.h>
-namespace zorba { namespace store {
+namespace zorba {
+namespace store {
+
+///////////////////////////////////////////////////////////////////////////////
/*******************************************************************************
!!! ATTENTION: The order of the enum values within SchemaTypeCode is important.
@@ -91,8 +94,10 @@
XS_LAST
};
+ZORBA_DLL_PUBLIC
std::ostream& operator<<( std::ostream&, SchemaTypeCode );
+///////////////////////////////////////////////////////////////////////////////
class ZORBA_DLL_PUBLIC StoreConsts
{
@@ -135,74 +140,10 @@
namespaceNode = 7
};
- static std::string toString(NodeKind k)
- {
- switch(k)
- {
- case anyNode:
- return "anyNode";
-
- case documentNode:
- return "documentNode";
-
- case elementNode:
- return "elementNode";
-
- case attributeNode:
- return "attributeNode";
-
- case textNode:
- return "textNode";
-
- case piNode:
- return "piNode";
-
- case commentNode:
- return "commentNode";
-
- case namespaceNode:
- return "namespaceNode";
-
- default:
- return "<unknown NodeKind>";
- }
- }
-
- static std::string toSchemaString(NodeKind k)
- {
- switch(k)
- {
- case anyNode:
- return "node";
-
- case documentNode:
- return "document-node";
-
- case elementNode:
- return "element";
-
- case attributeNode:
- return "attribute";
-
- case textNode:
- return "text";
-
- case piNode:
- return "processing-instruction";
-
- case commentNode:
- return "comment";
-
- case namespaceNode:
- return "namespace-node";
-
- default:
- return "<unknown NodeKind>";
- }
- }
-
-
- /* ATTENTION: the ordering of the enum values is important. Do NOT change it! */
+ static std::string toString(NodeKind);
+ static std::string toSchemaString(NodeKind);
+
+ // ATTENTION: the ordering of the enum values is important. Do NOT change it!
enum JSONItemKind
{
jsonItem = 0,
@@ -210,26 +151,16 @@
jsonArray = 2
};
-
- static std::string toString(JSONItemKind k)
- {
- switch(k)
- {
- case jsonItem:
- return "json-item";
-
- case jsonObject:
- return "object";
-
- case jsonArray:
- return "array";
-
- default:
- return "<unknown JSONItemKind>";
- }
- }
};
+ZORBA_DLL_PUBLIC
+std::ostream& operator<<( std::ostream&, StoreConsts::NodeKind );
+
+ZORBA_DLL_PUBLIC
+std::ostream& operator<<( std::ostream&, StoreConsts::JSONItemKind );
+
+///////////////////////////////////////////////////////////////////////////////
+
} // namespace store
} // namespace zorba
#endif
=== modified file 'src/api/store_consts.cpp'
--- src/api/store_consts.cpp 2013-02-26 20:56:33 +0000
+++ src/api/store_consts.cpp 2013-07-23 17:37:32 +0000
@@ -15,6 +15,9 @@
*/
#include "stdafx.h"
+
+#include <sstream>
+
#include <zorba/store_consts.h>
namespace zorba {
@@ -76,13 +79,74 @@
if ( c >= 0 && c < XS_LAST )
o << s[ c ];
else
- o << "[illegal type code: " << (int)c << ']';
-
+ o << "<unknown SchemaTypeCode: " << (int)c << '>';
return o;
};
///////////////////////////////////////////////////////////////////////////////
+std::ostream& operator<<( std::ostream &o, StoreConsts::NodeKind k ) {
+ static char const *const s[] = {
+ "anyNode", // 0
+ "documentNode", // 1
+ "elementNode", // 2
+ "attributeNode", // 3
+ "textNode", // 4
+ "piNode", // 5
+ "commentNode", // 6
+ "namespaceNode" // 7
+ };
+
+ if ( k >= 0 && k <= StoreConsts::namespaceNode )
+ o << s[ k ];
+ else
+ o << "<unknown NodeKind: " << (int)k << '>';
+ return o;
+}
+
+std::string StoreConsts::toString( NodeKind k ) {
+ std::ostringstream oss;
+ oss << k;
+ return oss.str();
+}
+
+std::string StoreConsts::toSchemaString( NodeKind k ) {
+ static char const *const s[] = {
+ "node", // 0
+ "document-node", // 1
+ "element", // 2
+ "attribute", // 3
+ "text", // 4
+ "processing-instruction", // 5
+ "comment", // 6
+ "namespace-node" // 7
+ };
+
+ if ( k >= 0 && k <= namespaceNode )
+ return s[ k ];
+ else {
+ std::ostringstream oss;
+ oss << "<unknown NodeKind: " << (int)k << '>';
+ return oss.str();
+ }
+}
+
+std::ostream& operator<<( std::ostream &o, StoreConsts::JSONItemKind k ) {
+ static char const *const s[] = {
+ "json-item", // 0
+ "object", // 1
+ "array" // 2
+ };
+
+ if ( k >= 0 && k <= 2 )
+ o << s[ k ];
+ else
+ o << "<unknown JSONItemKind: " << (int)k << '>';
+ return o;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
} // namespace store
} // namespace zorba
=== modified file 'src/compiler/parsetree/parsenode_print_xml_visitor.cpp'
--- src/compiler/parsetree/parsenode_print_xml_visitor.cpp 2013-06-07 13:46:26 +0000
+++ src/compiler/parsetree/parsenode_print_xml_visitor.cpp 2013-07-23 17:37:32 +0000
@@ -1093,7 +1093,7 @@
void* begin_visit(const JSON_Test& n)
{
INDENT;
- os << "<JSON_Test type=\"" << store::StoreConsts::toString(n.get_kind()) << "\"/>";
+ os << "<JSON_Test type=\"" << n.get_kind() << "\"/>";
INDENT_INC; NL;
return no_state;
}
=== modified file 'src/compiler/parsetree/parsenode_print_xquery_visitor.cpp'
--- src/compiler/parsetree/parsenode_print_xquery_visitor.cpp 2013-06-07 13:46:26 +0000
+++ src/compiler/parsetree/parsenode_print_xquery_visitor.cpp 2013-07-23 17:37:32 +0000
@@ -2081,7 +2081,7 @@
void* begin_visit(const JSON_Test& n)
{
- os << store::StoreConsts::toString(n.get_kind()) << "()";
+ os << n.get_kind() << "()";
return no_state;
}
DEFAULT_END_VISIT (JSON_Test);
=== modified file 'src/types/typeimpl.cpp'
--- src/types/typeimpl.cpp 2013-07-02 21:32:23 +0000
+++ src/types/typeimpl.cpp 2013-07-23 17:37:32 +0000
@@ -744,7 +744,7 @@
********************************************************************************/
std::ostream& JSONXQType::serialize_ostream(std::ostream& os) const
{
- os << "[JSONXQType " << store::StoreConsts::toString(theJSONKind)
+ os << "[JSONXQType " << theJSONKind
<< TypeOps::decode_quantifier(get_quantifier());
return os << "]";
Follow ups