Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: c25db77bef6133aa13d81a65362e23dd3835ff78 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package org.eclipse.etrice.generator.c.gen;

import org.eclipse.etrice.core.room.PrimitiveType;
import org.eclipse.etrice.core.room.VarDecl;
import org.eclipse.etrice.generator.generic.AbstractLanguageGenerator;

public class CLanguageGenerator extends AbstractLanguageGenerator {
	
	public String[] getArglistAndTypedData(VarDecl data) {
		if (data==null)
			return new String[] {"", "", ""};
		
		String typeName = data.getRefType().getType().getName();
		String castTypeName = typeName+"*";
		boolean byVal = false;
		if (data.getRefType().getType() instanceof PrimitiveType) {
			typeName = ((PrimitiveType)data.getRefType().getType()).getTargetName();
			String ct = ((PrimitiveType)data.getRefType().getType()).getCastName();
			byVal = true;
			if (ct!=null && !ct.isEmpty())
				castTypeName = ct;
		}
		else {
			typeName = typeName+"*";
		}

		String typedData = typeName+" "+data.getName() + " = "+(byVal? "*":"")+"(("+castTypeName+") generic_data);\n";
		String dataArg = ", "+data.getName();
		String typedArgList = ", "+typeName+" "+data.getName();
		
		return new String[]{dataArg, typedData, typedArgList};
	}

}

Back to the top