You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/03/01 18:51:14 UTC
svn commit: r382102 - in /incubator/activemq/trunk/activemq-core/src/gram:
java/org/apache/activemq/openwire/tool/OpenWireCppClassesScript.java
script/GenerateCppHeaders.groovy
Author: jstrachan
Date: Wed Mar 1 09:51:13 2006
New Revision: 382102
URL: http://svn.apache.org/viewcvs?rev=382102&view=rev
Log:
Applied Mats latest patches to get the openwire-cpp code compiling
Modified:
incubator/activemq/trunk/activemq-core/src/gram/java/org/apache/activemq/openwire/tool/OpenWireCppClassesScript.java
incubator/activemq/trunk/activemq-core/src/gram/script/GenerateCppHeaders.groovy
Modified: incubator/activemq/trunk/activemq-core/src/gram/java/org/apache/activemq/openwire/tool/OpenWireCppClassesScript.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/gram/java/org/apache/activemq/openwire/tool/OpenWireCppClassesScript.java?rev=382102&r1=382101&r2=382102&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/gram/java/org/apache/activemq/openwire/tool/OpenWireCppClassesScript.java (original)
+++ incubator/activemq/trunk/activemq-core/src/gram/java/org/apache/activemq/openwire/tool/OpenWireCppClassesScript.java Wed Mar 1 09:51:13 2006
@@ -1,4 +1,4 @@
-/**
+/*
*
* Copyright 2005-2006 The Apache Software Foundation
*
@@ -46,20 +46,37 @@
if (name.equals("String")) {
return "p<string>";
}
+ else if (type.isArrayType()) {
+ if( name.equals("byte[]") )
+ name = "char[]" ;
+ else if( name.equals("DataStructure[]") )
+ name = "IDataStructure[]" ;
+
+ return "ap<" + name.substring(0, name.length()-2) + ">";
+ }
else if (name.equals("Throwable") || name.equals("Exception")) {
- return "BrokerError";
+ return "p<BrokerError>";
}
else if (name.equals("ByteSequence")) {
- return "void*";
+ return "char*";
}
else if (name.equals("boolean")) {
return "bool";
}
- else if (name.endsWith("Id")) {
- return "p<" + name + ">";
+ else if (name.equals("long")) {
+ return "long long";
+ }
+ else if (name.equals("byte")) {
+ return "char";
+ }
+ else if( name.equals("Command") || name.equals("DataStructure") ) {
+ return "p<I" + name + ">" ;
+ }
+ else if( !type.isPrimitiveType() ) {
+ return "p<" + name + ">" ;
}
else {
- return name;
+ return name ;
}
}
@@ -67,6 +84,6 @@
* Converts the Java type to a C++ default value
*/
public String toCppDefaultValue(JClass type) {
- return "NULL";
+ return "0";
}
}
Modified: incubator/activemq/trunk/activemq-core/src/gram/script/GenerateCppHeaders.groovy
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/gram/script/GenerateCppHeaders.groovy?rev=382102&r1=382101&r2=382102&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/gram/script/GenerateCppHeaders.groovy (original)
+++ incubator/activemq/trunk/activemq-core/src/gram/script/GenerateCppHeaders.groovy Wed Mar 1 09:51:13 2006
@@ -1,121 +1,149 @@
-/**
- *
- * Copyright 2005-2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import org.apache.activemq.openwire.tool.OpenWireCppHeadersScript
-
-/**
- * Generates the C++ commands for the Open Wire Format
- *
- * @version $Revision$
- */
-class GenerateCppHeaders extends OpenWireCppHeadersScript {
-
- void generateFile(PrintWriter out) {
- out << """/*
-* Copyright 2006 The Apache Software Foundation or its licensors, as
-* applicable.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef ${className}_hpp_
-#define ${className}_hpp_
-
-#include <string>
-
-/* we could cut this down - for now include all possible headers */
-#include "command/BaseCommand.hpp"
-#include "command/BrokerId.hpp"
-#include "command/ConnectionId.hpp"
-#include "command/ConsumerId.hpp"
-#include "command/ProducerId.hpp"
-#include "command/SessionId.hpp"
-
-#include "command/${baseClass}.hpp"
-#include "util/ifr/p"
-
-namespace apache
-{
- namespace activemq
- {
- namespace client
- {
- namespace command
- {
- using namespace ifr;
- using namespace apache::activemq::client;
-
-/*
- *
- * Marshalling code for Open Wire Format for ${className}
- *
- *
- * NOTE!: This file is autogenerated - do not modify!
- * if you need to make a change, please see the Groovy scripts in the
- * activemq-core module
- *
- */
-class ${className} : public ${baseClass}
-{
-private:
-"""
- for (property in properties) {
- def type = toCppType(property.type)
- def name = decapitalize(property.simpleName)
- out << """ $type $name ;
-"""
- }
- out << """
-public:
- const static int TYPE = ${getOpenWireOpCode(jclass)};
-
-public:
- ${className}() ;
- virtual ~${className}() ;
-
-"""
- for (property in properties) {
- def type = toCppType(property.type)
- def propertyName = property.simpleName
- def parameterName = decapitalize(propertyName)
- out << """
- virtual ${type} get${propertyName}() ;
- virtual void set${propertyName}(${type} ${parameterName}) ;
-"""
- }
- out << """
-
-} ;
-
-/* namespace */
- }
- }
- }
-}
-
-#endif /*${className}_hpp_*/
-"""
- }
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import org.apache.activemq.openwire.tool.OpenWireCppHeadersScript
+
+/**
+ * Generates the C++ commands for the Open Wire Format
+ *
+ * @version $Revision$
+ */
+class GenerateCppHeaders extends OpenWireCppHeadersScript {
+
+ void generateFile(PrintWriter out) {
+ out << """/*
+* Copyright 2006 The Apache Software Foundation or its licensors, as
+* applicable.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+#ifndef ${className}_hpp_
+#define ${className}_hpp_
+
+#include <string>
+"""
+if( baseClass.equals("BrokerError") )
+ out << """#include "${baseClass}.hpp"
+"""
+else
+ out << """#include "command/${baseClass}.hpp"
+
+"""
+for (property in properties)
+{
+ if( !property.type.isPrimitiveType() &&
+ property.type.simpleName != "String" &&
+ property.type.simpleName != "ByteSequence" )
+ {
+ def includeName = toCppType(property.type)
+ if( property.type.isArrayType() )
+ {
+ def arrayType = property.type.arrayComponentType ;
+ if( arrayType.isPrimitiveType() )
+ continue ;
+ }
+ if( includeName.startsWith("ap<") )
+ includeName = includeName.substring(3, includeName.length()-1) ;
+ else if( includeName.startsWith("p<") )
+ includeName = includeName.substring(2, includeName.length()-1)
+
+ if( includeName.equals("BrokerError") )
+ out << """#include "${includeName}.hpp"
+"""
+ else
+ out << """#include "command/${includeName}.hpp"
+"""
+ }
+}
+out << """
+#include "util/ifr/ap"
+#include "util/ifr/p"
+
+namespace apache
+{
+ namespace activemq
+ {
+ namespace client
+ {
+ namespace command
+ {
+ using namespace ifr;
+ using namespace std;
+ using namespace apache::activemq::client;
+
+/*
+ *
+ * Marshalling code for Open Wire Format for ${className}
+ *
+ *
+ * NOTE!: This file is autogenerated - do not modify!
+ * if you need to make a change, please see the Groovy scripts in the
+ * activemq-core module
+ *
+ */
+class ${className} : public ${baseClass}
+{
+private:
+"""
+ for (property in properties) {
+ def type = toCppType(property.type)
+ def name = decapitalize(property.simpleName)
+ out << """ $type $name ;
+"""
+ }
+ out << """
+public:
+ const static int TYPE = ${getOpenWireOpCode(jclass)};
+
+public:
+ ${className}() ;
+ virtual ~${className}() ;
+
+ virtual int getCommandType() ;
+"""
+ for (property in properties) {
+ def type = toCppType(property.type)
+ def propertyName = property.simpleName
+ def parameterName = decapitalize(propertyName)
+ out << """
+ virtual ${type} get${propertyName}() ;
+ virtual void set${propertyName}(${type} ${parameterName}) ;
+"""
+ }
+ out << """
+
+} ;
+
+/* namespace */
+ }
+ }
+ }
+}
+
+#endif /*${className}_hpp_*/
+"""
+ }
}