public static Statement stat(TypeRef tr, String varName, Expression ass) { VariablesDeclaration vd = new VariablesDeclaration(tr, new Declarator.DirectDeclarator(varName, ass)); return vd;//new Statement.DeclarationStatement(vd); }
private void parseEnums(Node signatures, SourceFile sf) { for (Node en : XMLUtils.getChildrenByName(signatures, "enum")) { String name = XMLUtils.getAttribute(en, "name"); String value = XMLUtils.getAttribute(en, "value"); if (value != null) { try { try { int i = value.matches(".*?\\.0+$") ? value.lastIndexOf('.') : -1; String v = i > 0 ? value.substring(0, i) : value; sf.addDeclaration(new VariablesDeclaration(typeRef("int").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Integer.parseInt(v))))); } catch (NumberFormatException fex) { sf.addDeclaration(new VariablesDeclaration(typeRef("double").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Double.parseDouble(value))))); } } catch (Exception ex) { System.err.println("Parsing of enum " + name + " with value '" + value + "' failed : " + ex); } } } }
private void parseEnums(Node signatures, SourceFile sf) { for (Node en : XMLUtils.getChildrenByName(signatures, "enum")) { String name = XMLUtils.getAttribute(en, "name"); String value = XMLUtils.getAttribute(en, "value"); if (value != null) { try { try { int i = value.matches(".*?\\.0+$") ? value.lastIndexOf('.') : -1; String v = i > 0 ? value.substring(0, i) : value; sf.addDeclaration(new VariablesDeclaration(typeRef("int").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Integer.parseInt(v))))); } catch (NumberFormatException fex) { sf.addDeclaration(new VariablesDeclaration(typeRef("double").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Double.parseDouble(value))))); } } catch (Exception ex) { System.err.println("Parsing of enum " + name + " with value '" + value + "' failed : " + ex); } } } }
private void parseConstants(Node signatures, SourceFile sf) { for (Node cn : XMLUtils.getChildrenByName(signatures, "constant")) { String name = XMLUtils.getAttribute(cn, "name"); try { TypeRef tr = parseType(cn); if (tr == null) { continue; } sf.addDeclaration(new VariablesDeclaration(tr.addModifiers(ModifierType.Extern, ModifierType.Const), new DirectDeclarator(name))); } catch (Exception ex) { System.err.println("Parsing of constant " + name + " failed : " + ex); } } }
private void parseConstants(Node signatures, SourceFile sf) { for (Node cn : XMLUtils.getChildrenByName(signatures, "constant")) { String name = XMLUtils.getAttribute(cn, "name"); try { TypeRef tr = parseType(cn); if (tr == null) { continue; } sf.addDeclaration(new VariablesDeclaration(tr.addModifiers(ModifierType.Extern, ModifierType.Const), new DirectDeclarator(name))); } catch (Exception ex) { System.err.println("Parsing of constant " + name + " failed : " + ex); } } }
public static Statement tryRethrow(Statement st) { String exName = "$ex$"; return new Try(st, null, new Catch(new VariablesDeclaration(typeRef(Throwable.class), new Declarator.DirectDeclarator(exName)), new Throw(new New(typeRef(RuntimeException.class), varRef(exName))))); }
private void fixUnNamedChildren(Struct struct) { List<TaggedTypeRefDeclaration> trs = getUnnamedTaggedTypeRefs(struct.getDeclarations()); if (trs.isEmpty()) { return; } Set<Identifier> ids = listChildIdentifiers(struct); for (TaggedTypeRefDeclaration td : trs) { TaggedTypeRef tr = td.getTaggedTypeRef(); if (!(tr instanceof Struct)) { continue; } Struct s = (Struct) tr; switch (s.getType()) { case CStruct: case CUnion: String n = chooseNameSuffix(tr); int i = 1; Identifier fieldName; while (!ids.add(fieldName = ident("field" + i))) { i++; } //tr.setTag(idTag); td.replaceBy(new VariablesDeclaration(tr, new Declarator.DirectDeclarator(fieldName.toString()))); break; } } }
private void fixUnNamedChildren(Struct struct) { List<TaggedTypeRefDeclaration> trs = getUnnamedTaggedTypeRefs(struct.getDeclarations()); if (trs.isEmpty()) { return; } Set<Identifier> ids = listChildIdentifiers(struct); for (TaggedTypeRefDeclaration td : trs) { TaggedTypeRef tr = td.getTaggedTypeRef(); if (!(tr instanceof Struct)) { continue; } Struct s = (Struct) tr; switch (s.getType()) { case CStruct: case CUnion: String n = chooseNameSuffix(tr); int i = 1; Identifier fieldName; while (!ids.add(fieldName = ident("field" + i))) { i++; } //tr.setTag(idTag); td.replaceBy(new VariablesDeclaration(tr, new Declarator.DirectDeclarator(fieldName.toString()))); break; } } }
protected void outputNSString(String name, String value, DeclarationsHolder out, Signatures signatures, Element... elementsToTakeCommentsFrom) { if (!signatures.addVariable(name)) { return; } TypeRef tr = typeRef(String.class); VariablesDeclaration vd = new VariablesDeclaration(tr, new DirectDeclarator(name, expr(value))); if (!result.config.noComments) { for (Element e : elementsToTakeCommentsFrom) { vd.addToCommentBefore(e.getCommentBefore()); vd.addToCommentBefore(e.getCommentAfter()); } } vd.addModifiers(ModifierType.Public); out.addDeclaration(vd); } static Map<Class<?>, Pair<List<Pair<Function, String>>, Set<String>>> cachedForcedMethodsAndTheirSignatures;
protected void outputNSString(String name, String value, DeclarationsHolder out, Signatures signatures, Element... elementsToTakeCommentsFrom) { if (!signatures.addVariable(name)) { return; } TypeRef tr = typeRef(String.class); VariablesDeclaration vd = new VariablesDeclaration(tr, new DirectDeclarator(name, expr(value))); if (!result.config.noComments) { for (Element e : elementsToTakeCommentsFrom) { vd.addToCommentBefore(e.getCommentBefore()); vd.addToCommentBefore(e.getCommentAfter()); } } vd.addModifiers(ModifierType.Public); out.addDeclaration(vd); } static Map<Class<?>, Pair<List<Pair<Function, String>>, Set<String>>> cachedForcedMethodsAndTheirSignatures;
@Test public void addSibling() { VariablesDeclaration d = new VariablesDeclaration(); Declarator s1 = new Declarator.DirectDeclarator(), s2 = new Declarator.DirectDeclarator(); d.setDeclarators(Arrays.asList(s1)); s1.insertSibling(s2, false); List<Declarator> list = d.getDeclarators(); assertEquals("Failed to add after", 2, list.size()); assertSame("Added, but not after", s1, list.get(0)); assertSame(s2, list.get(1)); s2.replaceBy(null); list = d.getDeclarators(); assertEquals("Failed to remove added element", 1, list.size()); assertSame("Removed bad element", s1, list.get(0)); d.setDeclarators(Arrays.asList(s1)); s1.insertSibling(s2, true); list = d.getDeclarators(); assertEquals("Failed to add before", 2, list.size()); assertSame("Added, but not before", s2, list.get(0)); assertSame(s1, list.get(1)); s2.replaceBy(null); list = d.getDeclarators(); assertEquals("Failed to remove added element", 1, list.size()); assertSame("Removed bad element", s1, list.get(0)); } }
@Override public void visitConstant(Constant c) { if (c.getValue() instanceof String) { //Struct s = c.findParentOfType(Struct.class); Class charClass; String ptrMethodName; if (c.getType() == Constant.Type.LongString) { charClass = Short.class; ptrMethodName = "pointerToWideCString"; } else { charClass = Byte.class; ptrMethodName = "pointerToCString"; } String fieldName = "strConstant" + (++nConstants); VariablesDeclaration staticConstField = new VariablesDeclaration(typeRef(ident(ptrClass(), expr(typeRef(charClass)))), new DirectDeclarator(fieldName, staticPtrMethod(ptrMethodName, c.clone()))); staticConstField.addModifiers(ModifierType.Static, ModifierType.Private, ModifierType.Final); //s.addDeclaration(staticConstField); extraDeclarationsOut.add(staticConstField); c.replaceBy(varRef(fieldName)); return; } super.visitConstant(c); } //
@Override public void visitConstant(Constant c) { if (c.getValue() instanceof String) { //Struct s = c.findParentOfType(Struct.class); Class charClass; String ptrMethodName; if (c.getType() == Constant.Type.LongString) { charClass = Short.class; ptrMethodName = "pointerToWideCString"; } else { charClass = Byte.class; ptrMethodName = "pointerToCString"; } String fieldName = "strConstant" + (++nConstants); VariablesDeclaration staticConstField = new VariablesDeclaration(typeRef(ident(ptrClass(), expr(typeRef(charClass)))), new DirectDeclarator(fieldName, staticPtrMethod(ptrMethodName, c.clone()))); staticConstField.addModifiers(ModifierType.Static, ModifierType.Private, ModifierType.Final); //s.addDeclaration(staticConstField); extraDeclarationsOut.add(staticConstField); c.replaceBy(varRef(fieldName)); return; } super.visitConstant(c); } //
mutatedType = ((JNATypeConversion)result.typeConverter).resolveTypeDef(mutatedType, callerLibraryName, true, false); VariablesDeclaration convDecl = new VariablesDeclaration(); convDecl.addModifiers(ModifierType.Public);
if (mutatedType instanceof TypeRef) { TypeRef tr = (TypeRef) mutatedType; decl = new VariablesDeclaration(tr, new DirectDeclarator(vs.resolveName(), vs.getBits(), vs.getDefaultValue())); decl.importDetails(v, false); decl.importDetails(vs, false); decl = new VariablesDeclaration(vt == null ? null : vt.clone(), vs.clone()); decl.importDetails(v, false); decl.importDetails(vs, false);
if (mutatedType instanceof TypeRef) { TypeRef tr = (TypeRef) mutatedType; decl = new VariablesDeclaration(tr, new DirectDeclarator(vs.resolveName(), vs.getBits(), vs.getDefaultValue())); decl.importDetails(v, false); decl.importDetails(vs, false); decl = new VariablesDeclaration(vt == null ? null : vt.clone(), vs.clone()); decl.importDetails(v, false); decl.importDetails(vs, false);
Declaration declaration = new VariablesDeclaration(tr, new DirectDeclarator(name, value)); declaration.addModifiers(ModifierType.Public, ModifierType.Static, ModifierType.Final); if (!result.config.noComments) {
Declaration declaration = new VariablesDeclaration(tr, new DirectDeclarator(name, value)); declaration.addModifiers(ModifierType.Public, ModifierType.Static, ModifierType.Final); if (!result.config.noComments) {
VariablesDeclaration vd = new VariablesDeclaration(tr, new DirectDeclarator(name, val.getFirst())); if (!result.config.noComments) { vd.setCommentBefore(v.getCommentBefore());
VariablesDeclaration vd = new VariablesDeclaration(tr, new DirectDeclarator(name, val.getFirst())); if (!result.config.noComments) { vd.setCommentBefore(v.getCommentBefore());