SF.net SVN: ant-contrib: [150] cpptasks/trunk/src/main/java/net/sf/ antcontrib/cpptasks

[email protected] Wed, 06 Feb 2008 10:21:02 -0800
Newsgroups gmane.comp.java.ant-contrib.devel
Message-ID <[email protected]>
Revision: 150
          http://ant-contrib.svn.sourceforge.net/ant-contrib/?rev=150&view=rev
Author:   carnold
Date:     2008-02-06 10:20:58 -0800 (Wed, 06 Feb 2008)

Log Message:
-----------
Bug 980130: Add comments to generated project files

Modified Paths:
--------------
    cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/DevStudioProjectWriter.java
    cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/VisualStudioNETProjectWriter.java
    cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/ProjectDef.java

Added Paths:
-----------
    cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/CommentDef.java

Modified: cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/DevStudioProjectWriter.java
===================================================================
--- cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/DevStudioProjectWriter.java	2008-02-05 07:39:54 UTC (rev 149)
+++ cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/DevStudioProjectWriter.java	2008-02-06 18:20:58 UTC (rev 150)
@@ -25,6 +25,7 @@
 import net.sf.antcontrib.cpptasks.ide.DependencyDef;
 import net.sf.antcontrib.cpptasks.ide.ProjectDef;
 import net.sf.antcontrib.cpptasks.ide.ProjectWriter;
+import net.sf.antcontrib.cpptasks.ide.CommentDef;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.util.StringUtils;
 
@@ -140,6 +141,9 @@
     writer.write(this.version);
     writer.write("\r\n");
     writer.write("# ** DO NOT EDIT **\r\n\r\n");
+
+	writeComments(writer, projectDef.getComments());
+
     String outputType = task.getOuttype();
     String subsystem = task.getSubsystem();
     String configName = projectName;
@@ -329,6 +333,9 @@
       writer.write("\r\n");
       writer.write("# WARNING: DO NOT EDIT OR DELETE");
       writer.write(" THIS WORKSPACE FILE!\r\n\r\n");
+
+	  writeComments(writer, project.getComments());
+
 
       List dependencies = project.getDependencies();
       List projectDeps = new ArrayList();
@@ -633,5 +640,21 @@
     options.append("\r\n");
     writer.write(baseOptions.toString());
     writer.write(options.toString());
+  }
+
+  private static void writeComments(final Writer writer,
+                             final List comments) throws IOException {
+		for(Iterator iter = comments.iterator();iter.hasNext();) {
+			String comment = ((CommentDef) iter.next()).getText();
+			if (comment != null) {
+				int start = 0;
+				for(int end = comment.indexOf('\n'); 
+					end != -1; 
+					end = comment.indexOf('\n', start)) {
+					writer.write("#" + comment.substring(start, end) + "\r\n");
+					start = end + 1;
+				}
+			}	
+		}
   }
 }

Modified: cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/VisualStudioNETProjectWriter.java
===================================================================
--- cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/VisualStudioNETProjectWriter.java	2008-02-05 07:39:54 UTC (rev 149)
+++ cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/devstudio/VisualStudioNETProjectWriter.java	2008-02-06 18:20:58 UTC (rev 150)
@@ -23,6 +23,7 @@
 import net.sf.antcontrib.cpptasks.compiler.ProcessorConfiguration;
 import net.sf.antcontrib.cpptasks.compiler.CommandLineLinkerConfiguration;
 import net.sf.antcontrib.cpptasks.ide.ProjectDef;
+import net.sf.antcontrib.cpptasks.ide.CommentDef;
 import net.sf.antcontrib.cpptasks.ide.ProjectWriter;
 import org.apache.tools.ant.BuildException;
 import org.apache.xml.serialize.OutputFormat;
@@ -690,10 +691,16 @@
 
         OutputStream outStream = new FileOutputStream(fileName + ".vcproj");
         OutputFormat format = new OutputFormat("xml", "UTF-8", true);
-        Serializer serializer = new XMLSerializer(outStream, format);
+        XMLSerializer serializer = new XMLSerializer(outStream, format);
         ContentHandler content = serializer.asContentHandler();
         String basePath = fileName.getParentFile().getAbsolutePath();
         content.startDocument();
+        
+        for(Iterator iter = projectDef.getComments().iterator(); iter.hasNext(); ) {
+			String comment = ((CommentDef) iter.next()).getText();
+			serializer.comment(comment);
+        }
+        
         AttributesImpl emptyAttrs = new AttributesImpl();
 
         AttributesImpl attributes = new AttributesImpl();

Added: cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/CommentDef.java
===================================================================
--- cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/CommentDef.java	                        (rev 0)
+++ cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/CommentDef.java	2008-02-06 18:20:58 UTC (rev 150)
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright 2008 The Ant-Contrib project
+ *
+ *  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.
+ */
+package net.sf.antcontrib.cpptasks.ide;
+
+import org.apache.tools.ant.util.StringUtils;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Defines a comment to place in the generated project files.
+ *
+ */
+public final class CommentDef {
+    private String text;
+
+    public CommentDef() {
+		text = "";
+    }
+
+
+    public String getText() {
+		return text;
+    }
+	public void addText(final String newText) {
+		text += newText;
+	}
+}

Modified: cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/ProjectDef.java
===================================================================
--- cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/ProjectDef.java	2008-02-05 07:39:54 UTC (rev 149)
+++ cpptasks/trunk/src/main/java/net/sf/antcontrib/cpptasks/ide/ProjectDef.java	2008-02-06 18:20:58 UTC (rev 150)
@@ -87,7 +87,12 @@
     /**
      * List of dependency definitions.
      */
-  private List dependencies = new ArrayList();
+  private List dependencies = new ArrayList();
+
+     /**
+	  *   List of comments.
+	  */
+  private List comments = new ArrayList();
 
   /**
    * Constructor.
@@ -330,9 +335,8 @@
   }
 
     /**
-     * FileSet containing project files that should be imported
-     *   as dependencies
-      * @param dependency dependency.
+     *  Add a dependency definition to the project.  
+     * @param dependency dependency.
      */
   public void addDependency(final DependencyDef dependency) {
         dependencies.add(dependency);
@@ -343,6 +347,19 @@
       return new ArrayList(dependencies);
   }
 
+
+    /**
+	 *  Add comment for the generated project file.
+     * @param comment comment, may not be null.
+     */
+  public void addComment(final CommentDef comment) {
+        comments.add(comment);
+
+  }
+
+  public List getComments() {
+      return new ArrayList(comments);
+  }
 
   /**
    * Required by documentation generator.


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/