Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] IProjectEnvironmentVariableSupplier problem

So it's not me! I've spent hours looking at this! I'll get a head build and try again.

Thanks!

--
Derek


Sennikovsky, Mikhail wrote:
Hi Derek,

This seems to be a problem that was already fixed on HEAD some time ago.
Could you try one of the latest CDT nightly builds or sources from HEAD
to see if the problem is gone for you?

Thanks,
Mikhail

-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
On
Behalf Of subs
Sent: Friday, September 14, 2007 3:31 PM
To: CDT General developers list.
Subject: [cdt-dev] IProjectEnvironmentVariableSupplier problem

Hi,

I have added an IProjectEnvironmentVariableSupplier to my plugin. I am
adding
directories to the PATH and to the C_INCLUDE_PATH. My directories are
being
added succesfully, but there are a couple of strange additions that I
can't
explain. For project TEST, I end up with two additional 'paths' called:
TEST/[Ljava.lang.String;@1a1f05f and
TEST/[Ljava.lang.String;@ac087b

These look like string arrays that are being displayed as Strings. Any
ideas
what I might be doing wrong?

Here's my code:
package com.crt.advproject.custom;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import
org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariable
Supp
lier;
import
org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
import
org.eclipse.cdt.managedbuilder.envvar.IProjectEnvironmentVariableSuppli
er;
import com.crt.advproject.Activator;
import com.crt.utils.general.Utils;

public class CRTEnvironmentSupplier implements
		IProjectEnvironmentVariableSupplier {

	private Map<String, IBuildEnvironmentVariable> envvars = null;

	private static final String DELIMITER = ";";

	private static class CRTBuildEnvironmentVariable implements
			IBuildEnvironmentVariable {

		private final String name;
		private final String value;
		private final int operation;

		public CRTBuildEnvironmentVariable(String name, String
value,
				int operation) {
			this.name = name;
			this.value = value;
			this.operation = operation;
		}

		public String getDelimiter() {
			return DELIMITER;
		}

		public String getName() {
			return name;
		}

		public String getValue() {
			return value;
		}

		public int getOperation() {
			return operation;
		}

	}

	public IBuildEnvironmentVariable getVariable(String
variableName,
			IManagedProject project,
IEnvironmentVariableProvider
provider) {
		return getVars().get(variableName);
	}

	public IBuildEnvironmentVariable[] getVariables(IManagedProject
project,
			IEnvironmentVariableProvider provider) {
		Map<String, IBuildEnvironmentVariable> envvars =
getVars();
		return envvars.values().toArray(
				new
IBuildEnvironmentVariable[envvars.size()]);
	}

	private void addvar(Map<String, IBuildEnvironmentVariable>
envvars,
			IBuildEnvironmentVariable var) {
		envvars.put(var.getName(), var);
	}

	private StringBuffer addPath(StringBuffer buf, String[] dirs,
String
sep) {
		for (int i = 0; i < dirs.length; i++) {
			buf.append(dirs[i]);
			if (i != dirs.length-1)
				buf.append(sep);
		}
		return buf;
	}

	private Map<String, IBuildEnvironmentVariable> getVars() {
		if (envvars == null) {
			envvars = new HashMap<String,
IBuildEnvironmentVariable>();
			StringBuffer buff = new StringBuffer();

			String[] dirs =
Utils.getDirectories(Utils.PATH_DIRECTORIES);
			addPath(buff, dirs, DELIMITER);
			addvar(envvars, new
CRTBuildEnvironmentVariable("PATH",
buff
					.toString(),
IBuildEnvironmentVariable.ENVVAR_PREPEND));

			buff = new StringBuffer();
			dirs =
Utils.getDirectories(Utils.INCLUDE_DIRECTORIES);
			addPath(buff, dirs, DELIMITER);
			addvar(envvars, new
CRTBuildEnvironmentVariable("C_INCLUDE_PATH",
					buff.toString(),
IBuildEnvironmentVariable.ENVVAR_PREPEND));

		}
		return envvars;
	}

}

--
Derek
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev
--------------------------------------------------------------------
Closed Joint Stock Company Intel A/O
Registered legal address: 125252, Moscow, Russian Federation, Chapayevsky Per, 14.

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



Back to the top