0001: // ===========================================================================
0002: // This file has been generated by
0003: // xtc Factory Factory, version 1.13.1,
0004: // (C) 2004-2007 Robert Grimm,
0005: // on Tuesday, September 25, 2007 at 8:00:25 PM.
0006: // Edit at your own risk.
0007: // ===========================================================================
0008:
0009: package xtc.lang.jeannie;
0010:
0011: import java.util.List;
0012:
0013: import xtc.tree.Node;
0014: import xtc.tree.GNode;
0015:
0016: /**
0017: * Node factory <code>xtc.lang.jeannie.JeannieCFactory</code>.
0018: *
0019: * <p />This class has been generated by
0020: * the xtc Factory Factory, version 1.13.1,
0021: * (C) 2004-2007 Robert Grimm.
0022: */
0023: public class JeannieCFactory {
0024:
0025: /** Create a new node factory. */
0026: public JeannieCFactory() {
0027: // Nothing to do.
0028: }
0029:
0030: /**
0031: * Create an if statement.
0032: *
0033: * @param fieldName The fieldName.
0034: * @param abruptFlowJump The abruptFlowJump.
0035: * @return The generic node.
0036: */
0037: public Node abruptFlowCheck(Node fieldName, Node abruptFlowJump) {
0038: Node v$1 = GNode.create("PrimaryIdentifier", "env");
0039: Node v$2 = GNode.create("IndirectionExpression", v$1);
0040: Node v$3 = GNode.create("IndirectComponentSelection", v$2,
0041: "ExceptionCheck");
0042: Node v$4 = GNode.create("PrimaryIdentifier", "env");
0043: Node v$5 = GNode.create("ExpressionList", v$4);
0044: Node v$6 = GNode.create("FunctionCall", v$3, v$5);
0045: Node v$7 = GNode.create("TypedefName", "jclass");
0046: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0047: Node v$9 = GNode.create("SimpleDeclarator", "cls");
0048: Node v$10 = GNode.create("PrimaryIdentifier", "env");
0049: Node v$11 = GNode.create("IndirectionExpression", v$10);
0050: Node v$12 = GNode.create("IndirectComponentSelection", v$11,
0051: "GetObjectClass");
0052: Node v$13 = GNode.create("PrimaryIdentifier", "env");
0053: Node v$14 = GNode.create("PrimaryIdentifier", "jEnv");
0054: Node v$15 = GNode.create("ExpressionList", v$13, v$14);
0055: Node v$16 = GNode.create("FunctionCall", v$12, v$15);
0056: Node v$17 = GNode.create("InitializedDeclarator", null, v$9,
0057: null, null, v$16);
0058: Node v$18 = GNode.create("InitializedDeclaratorList", v$17);
0059: Node v$19 = GNode.create("Declaration", null, v$8, v$18);
0060: Node v$20 = GNode.create("TypedefName", "jfieldID");
0061: Node v$21 = GNode.create("DeclarationSpecifiers", v$20);
0062: Node v$22 = GNode.create("SimpleDeclarator", "fid");
0063: Node v$23 = GNode.create("PrimaryIdentifier", "env");
0064: Node v$24 = GNode.create("IndirectionExpression", v$23);
0065: Node v$25 = GNode.create("IndirectComponentSelection", v$24,
0066: "GetFieldID");
0067: Node v$26 = GNode.create("PrimaryIdentifier", "env");
0068: Node v$27 = GNode.create("PrimaryIdentifier", "cls");
0069: Node v$28 = GNode.create("StringConstant", "\"Z\"");
0070: Node v$29 = GNode.create("ExpressionList", v$26, v$27,
0071: fieldName, v$28);
0072: Node v$30 = GNode.create("FunctionCall", v$25, v$29);
0073: Node v$31 = GNode.create("InitializedDeclarator", null, v$22,
0074: null, null, v$30);
0075: Node v$32 = GNode.create("InitializedDeclaratorList", v$31);
0076: Node v$33 = GNode.create("Declaration", null, v$21, v$32);
0077: Node v$34 = GNode.create("TypedefName", "jboolean");
0078: Node v$35 = GNode.create("DeclarationSpecifiers", v$34);
0079: Node v$36 = GNode.create("SimpleDeclarator", "tmp");
0080: Node v$37 = GNode.create("PrimaryIdentifier", "env");
0081: Node v$38 = GNode.create("IndirectionExpression", v$37);
0082: Node v$39 = GNode.create("IndirectComponentSelection", v$38,
0083: "GetBooleanField");
0084: Node v$40 = GNode.create("PrimaryIdentifier", "env");
0085: Node v$41 = GNode.create("PrimaryIdentifier", "jEnv");
0086: Node v$42 = GNode.create("PrimaryIdentifier", "fid");
0087: Node v$43 = GNode.create("ExpressionList", v$40, v$41, v$42);
0088: Node v$44 = GNode.create("FunctionCall", v$39, v$43);
0089: Node v$45 = GNode.create("InitializedDeclarator", null, v$36,
0090: null, null, v$44);
0091: Node v$46 = GNode.create("InitializedDeclaratorList", v$45);
0092: Node v$47 = GNode.create("Declaration", null, v$35, v$46);
0093: Node v$48 = GNode.create("PrimaryIdentifier", "env");
0094: Node v$49 = GNode.create("IndirectionExpression", v$48);
0095: Node v$50 = GNode.create("IndirectComponentSelection", v$49,
0096: "DeleteLocalRef");
0097: Node v$51 = GNode.create("PrimaryIdentifier", "env");
0098: Node v$52 = GNode.create("PrimaryIdentifier", "cls");
0099: Node v$53 = GNode.create("ExpressionList", v$51, v$52);
0100: Node v$54 = GNode.create("FunctionCall", v$50, v$53);
0101: Node v$55 = GNode.create("ExpressionStatement", v$54);
0102: Node v$56 = GNode.create("PrimaryIdentifier", "tmp");
0103: Node v$57 = GNode.create("ExpressionStatement", v$56);
0104: Node v$58 = GNode.create("CompoundStatement", v$19, v$33, v$47,
0105: v$55, v$57, null);
0106: Node v$59 = GNode.create("StatementAsExpression", v$58);
0107: Node v$60 = GNode.create("LogicalOrExpression", v$6, v$59);
0108: Node v$61 = GNode.create("CompoundStatement", abruptFlowJump,
0109: null);
0110: Node v$62 = GNode.create("IfStatement", v$60, v$61);
0111: return v$62;
0112: }
0113:
0114: /**
0115: * Create a compound statement.
0116: *
0117: * @param releaseAbrupt The releaseAbrupt.
0118: * @param fieldName The fieldName.
0119: * @param abruptFlowJump The abruptFlowJump.
0120: * @return The generic node.
0121: */
0122: public Node abruptFlowCheckOpenArray(String releaseAbrupt,
0123: Node fieldName, Node abruptFlowJump) {
0124: Node v$1 = GNode.create("PrimaryIdentifier", "env");
0125: Node v$2 = GNode.create("IndirectionExpression", v$1);
0126: Node v$3 = GNode.create("IndirectComponentSelection", v$2,
0127: "ExceptionCheck");
0128: Node v$4 = GNode.create("PrimaryIdentifier", "env");
0129: Node v$5 = GNode.create("ExpressionList", v$4);
0130: Node v$6 = GNode.create("FunctionCall", v$3, v$5);
0131: Node v$7 = GNode.create("PrimaryIdentifier", "pcEnv");
0132: Node v$8 = GNode.create("IndirectComponentSelection", v$7,
0133: releaseAbrupt);
0134: Node v$9 = GNode.create("IntegerConstant", "2");
0135: Node v$10 = GNode.create("AssignmentExpression", v$8, "=", v$9);
0136: Node v$11 = GNode.create("ExpressionStatement", v$10);
0137: Node v$12 = GNode.create("IfStatement", v$6, v$11);
0138: Node v$13 = GNode.create("PrimaryIdentifier", "pcEnv");
0139: Node v$14 = GNode.create("IndirectComponentSelection", v$13,
0140: releaseAbrupt);
0141: Node v$15 = GNode.create("TypedefName", "jclass");
0142: Node v$16 = GNode.create("DeclarationSpecifiers", v$15);
0143: Node v$17 = GNode.create("SimpleDeclarator", "cls");
0144: Node v$18 = GNode.create("PrimaryIdentifier", "env");
0145: Node v$19 = GNode.create("IndirectionExpression", v$18);
0146: Node v$20 = GNode.create("IndirectComponentSelection", v$19,
0147: "GetObjectClass");
0148: Node v$21 = GNode.create("PrimaryIdentifier", "env");
0149: Node v$22 = GNode.create("PrimaryIdentifier", "jEnv");
0150: Node v$23 = GNode.create("ExpressionList", v$21, v$22);
0151: Node v$24 = GNode.create("FunctionCall", v$20, v$23);
0152: Node v$25 = GNode.create("InitializedDeclarator", null, v$17,
0153: null, null, v$24);
0154: Node v$26 = GNode.create("InitializedDeclaratorList", v$25);
0155: Node v$27 = GNode.create("Declaration", null, v$16, v$26);
0156: Node v$28 = GNode.create("TypedefName", "jfieldID");
0157: Node v$29 = GNode.create("DeclarationSpecifiers", v$28);
0158: Node v$30 = GNode.create("SimpleDeclarator", "fid");
0159: Node v$31 = GNode.create("PrimaryIdentifier", "env");
0160: Node v$32 = GNode.create("IndirectionExpression", v$31);
0161: Node v$33 = GNode.create("IndirectComponentSelection", v$32,
0162: "GetFieldID");
0163: Node v$34 = GNode.create("PrimaryIdentifier", "env");
0164: Node v$35 = GNode.create("PrimaryIdentifier", "cls");
0165: Node v$36 = GNode.create("StringConstant", "\"Z\"");
0166: Node v$37 = GNode.create("ExpressionList", v$34, v$35,
0167: fieldName, v$36);
0168: Node v$38 = GNode.create("FunctionCall", v$33, v$37);
0169: Node v$39 = GNode.create("InitializedDeclarator", null, v$30,
0170: null, null, v$38);
0171: Node v$40 = GNode.create("InitializedDeclaratorList", v$39);
0172: Node v$41 = GNode.create("Declaration", null, v$29, v$40);
0173: Node v$42 = GNode.create("TypedefName", "jboolean");
0174: Node v$43 = GNode.create("DeclarationSpecifiers", v$42);
0175: Node v$44 = GNode.create("SimpleDeclarator", "tmp");
0176: Node v$45 = GNode.create("PrimaryIdentifier", "env");
0177: Node v$46 = GNode.create("IndirectionExpression", v$45);
0178: Node v$47 = GNode.create("IndirectComponentSelection", v$46,
0179: "GetBooleanField");
0180: Node v$48 = GNode.create("PrimaryIdentifier", "env");
0181: Node v$49 = GNode.create("PrimaryIdentifier", "jEnv");
0182: Node v$50 = GNode.create("PrimaryIdentifier", "fid");
0183: Node v$51 = GNode.create("ExpressionList", v$48, v$49, v$50);
0184: Node v$52 = GNode.create("FunctionCall", v$47, v$51);
0185: Node v$53 = GNode.create("InitializedDeclarator", null, v$44,
0186: null, null, v$52);
0187: Node v$54 = GNode.create("InitializedDeclaratorList", v$53);
0188: Node v$55 = GNode.create("Declaration", null, v$43, v$54);
0189: Node v$56 = GNode.create("PrimaryIdentifier", "env");
0190: Node v$57 = GNode.create("IndirectionExpression", v$56);
0191: Node v$58 = GNode.create("IndirectComponentSelection", v$57,
0192: "DeleteLocalRef");
0193: Node v$59 = GNode.create("PrimaryIdentifier", "env");
0194: Node v$60 = GNode.create("PrimaryIdentifier", "cls");
0195: Node v$61 = GNode.create("ExpressionList", v$59, v$60);
0196: Node v$62 = GNode.create("FunctionCall", v$58, v$61);
0197: Node v$63 = GNode.create("ExpressionStatement", v$62);
0198: Node v$64 = GNode.create("PrimaryIdentifier", "tmp");
0199: Node v$65 = GNode.create("ExpressionStatement", v$64);
0200: Node v$66 = GNode.create("CompoundStatement", v$27, v$41, v$55,
0201: v$63, v$65, null);
0202: Node v$67 = GNode.create("StatementAsExpression", v$66);
0203: Node v$68 = GNode.create("LogicalOrExpression", v$14, v$67);
0204: Node v$69 = GNode.create("CompoundStatement", abruptFlowJump,
0205: null);
0206: Node v$70 = GNode.create("IfStatement", v$68, v$69);
0207: Node v$71 = GNode.create("CompoundStatement", v$12, v$70, null);
0208: return v$71;
0209: }
0210:
0211: /**
0212: * Create a goto statement.
0213: *
0214: * @param label The label.
0215: * @return The generic node.
0216: */
0217: public Node abruptFlowJumpOpenArray(String label) {
0218: Node v$1 = GNode.create("PrimaryIdentifier", label);
0219: Node v$2 = GNode.create("GotoStatement", null, v$1);
0220: return v$2;
0221: }
0222:
0223: /**
0224: * Create a compound statement.
0225: *
0226: * @param statements The statements.
0227: * @return The generic node.
0228: */
0229: public Node block(List<Node> statements) {
0230: Node v$1 = GNode.create("CompoundStatement",
0231: statements.size() + 1).addAll(statements).add(null);
0232: return v$1;
0233: }
0234:
0235: /**
0236: * Create a compound statement.
0237: *
0238: * @param releaseAbrupt The releaseAbrupt.
0239: * @param abruptFlowJump The abruptFlowJump.
0240: * @return The generic node.
0241: */
0242: public Node cancel(String releaseAbrupt, Node abruptFlowJump) {
0243: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
0244: Node v$2 = GNode.create("IndirectComponentSelection", v$1,
0245: releaseAbrupt);
0246: Node v$3 = GNode.create("IntegerConstant", "2");
0247: Node v$4 = GNode.create("AssignmentExpression", v$2, "=", v$3);
0248: Node v$5 = GNode.create("ExpressionStatement", v$4);
0249: Node v$6 = GNode.create("CompoundStatement", v$5,
0250: abruptFlowJump, null);
0251: return v$6;
0252: }
0253:
0254: /**
0255: * Create a statement as expression.
0256: *
0257: * @param tmpDeclaration The tmpDeclaration.
0258: * @param call The call.
0259: * @param abruptFlowCheck The abruptFlowCheck.
0260: * @return The generic node.
0261: */
0262: public Node checkedFunctionCallResult(Node tmpDeclaration,
0263: Node call, Node abruptFlowCheck) {
0264: Node v$1 = GNode.create("PrimaryIdentifier", "tmp");
0265: Node v$2 = GNode.create("AssignmentExpression", v$1, "=", call);
0266: Node v$3 = GNode.create("ExpressionStatement", v$2);
0267: Node v$4 = GNode.create("PrimaryIdentifier", "tmp");
0268: Node v$5 = GNode.create("ExpressionStatement", v$4);
0269: Node v$6 = GNode.create("CompoundStatement", tmpDeclaration,
0270: v$3, abruptFlowCheck, v$5, null);
0271: Node v$7 = GNode.create("StatementAsExpression", v$6);
0272: return v$7;
0273: }
0274:
0275: /**
0276: * Create a compound statement.
0277: *
0278: * @param call The call.
0279: * @param abruptFlowCheck The abruptFlowCheck.
0280: * @return The generic node.
0281: */
0282: public Node checkedFunctionCallVoid(Node call, Node abruptFlowCheck) {
0283: Node v$1 = GNode.create("ExpressionStatement", call);
0284: Node v$2 = GNode.create("CompoundStatement", v$1,
0285: abruptFlowCheck, null);
0286: return v$2;
0287: }
0288:
0289: /**
0290: * Create a compound statement.
0291: *
0292: * @param tag The tag.
0293: * @param expression The expression.
0294: * @return The generic node.
0295: */
0296: public Node cInJavaExpressionWithCEnv(String tag, Node expression) {
0297: Node v$1 = GNode.create("StructureTypeReference", null, tag);
0298: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0299: Node v$3 = GNode.create("TypeQualifierList", false);
0300: Node v$4 = GNode.create("Pointer", v$3, null);
0301: Node v$5 = GNode.create("SimpleDeclarator", "pcEnv");
0302: Node v$6 = GNode.create("PointerDeclarator", v$4, v$5);
0303: Node v$7 = GNode.create("StructureTypeReference", null, tag);
0304: Node v$8 = GNode.create("SpecifierQualifierList", v$7);
0305: Node v$9 = GNode.create("TypeQualifierList", false);
0306: Node v$10 = GNode.create("Pointer", v$9, null);
0307: Node v$11 = GNode.create("AbstractDeclarator", v$10, null);
0308: Node v$12 = GNode.create("TypeName", v$8, v$11);
0309: Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
0310: Node v$14 = GNode.create("CastExpression", v$12, v$13);
0311: Node v$15 = GNode.create("InitializedDeclarator", null, v$6,
0312: null, null, v$14);
0313: Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
0314: Node v$17 = GNode.create("Declaration", null, v$2, v$16);
0315: Node v$18 = GNode.create("ReturnStatement", expression);
0316: Node v$19 = GNode.create("PrimaryIdentifier", "pcEnv");
0317: Node v$20 = GNode.create("IntegerConstant", "0");
0318: Node v$21 = GNode.create("AssignmentExpression", v$19, "=",
0319: v$20);
0320: Node v$22 = GNode.create("ExpressionStatement", v$21);
0321: Node v$23 = GNode.create("CompoundStatement", v$17, v$18, v$22,
0322: null);
0323: return v$23;
0324: }
0325:
0326: /**
0327: * Create a compound statement.
0328: *
0329: * @param tag The tag.
0330: * @param expression The expression.
0331: * @return The generic node.
0332: */
0333: public Node cInJavaExpressionWithoutCEnv(String tag, Node expression) {
0334: Node v$1 = GNode.create("StructureTypeReference", null, tag);
0335: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0336: Node v$3 = GNode.create("SimpleDeclarator", "cEnv");
0337: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0338: null, null, null);
0339: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0340: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0341: Node v$7 = GNode.create("StructureTypeReference", null, tag);
0342: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0343: Node v$9 = GNode.create("TypeQualifierList", false);
0344: Node v$10 = GNode.create("Pointer", v$9, null);
0345: Node v$11 = GNode.create("SimpleDeclarator", "pcEnv");
0346: Node v$12 = GNode.create("PointerDeclarator", v$10, v$11);
0347: Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
0348: Node v$14 = GNode.create("AddressExpression", v$13);
0349: Node v$15 = GNode.create("InitializedDeclarator", null, v$12,
0350: null, null, v$14);
0351: Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
0352: Node v$17 = GNode.create("Declaration", null, v$8, v$16);
0353: Node v$18 = GNode.create("ReturnStatement", expression);
0354: Node v$19 = GNode.create("PrimaryIdentifier", "pcEnv");
0355: Node v$20 = GNode.create("IntegerConstant", "0");
0356: Node v$21 = GNode.create("AssignmentExpression", v$19, "=",
0357: v$20);
0358: Node v$22 = GNode.create("ExpressionStatement", v$21);
0359: Node v$23 = GNode.create("CompoundStatement", v$6, v$17, v$18,
0360: v$22, null);
0361: return v$23;
0362: }
0363:
0364: /**
0365: * Create a compound statement.
0366: *
0367: * @param tag The tag.
0368: * @param statement The statement.
0369: * @return The generic node.
0370: */
0371: public Node cInJavaStatementWithCEnv(String tag, Node statement) {
0372: Node v$1 = GNode.create("StructureTypeReference", null, tag);
0373: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0374: Node v$3 = GNode.create("TypeQualifierList", false);
0375: Node v$4 = GNode.create("Pointer", v$3, null);
0376: Node v$5 = GNode.create("SimpleDeclarator", "pcEnv");
0377: Node v$6 = GNode.create("PointerDeclarator", v$4, v$5);
0378: Node v$7 = GNode.create("StructureTypeReference", null, tag);
0379: Node v$8 = GNode.create("SpecifierQualifierList", v$7);
0380: Node v$9 = GNode.create("TypeQualifierList", false);
0381: Node v$10 = GNode.create("Pointer", v$9, null);
0382: Node v$11 = GNode.create("AbstractDeclarator", v$10, null);
0383: Node v$12 = GNode.create("TypeName", v$8, v$11);
0384: Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
0385: Node v$14 = GNode.create("CastExpression", v$12, v$13);
0386: Node v$15 = GNode.create("InitializedDeclarator", null, v$6,
0387: null, null, v$14);
0388: Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
0389: Node v$17 = GNode.create("Declaration", null, v$2, v$16);
0390: Node v$18 = GNode.create("PrimaryIdentifier", "pcEnv");
0391: Node v$19 = GNode.create("IntegerConstant", "0");
0392: Node v$20 = GNode.create("AssignmentExpression", v$18, "=",
0393: v$19);
0394: Node v$21 = GNode.create("ExpressionStatement", v$20);
0395: Node v$22 = GNode.create("CompoundStatement", v$17, statement,
0396: v$21, null);
0397: return v$22;
0398: }
0399:
0400: /**
0401: * Create a compound statement.
0402: *
0403: * @param tag The tag.
0404: * @param statement The statement.
0405: * @return The generic node.
0406: */
0407: public Node cInJavaStatementWithoutCEnv(String tag, Node statement) {
0408: Node v$1 = GNode.create("StructureTypeReference", null, tag);
0409: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0410: Node v$3 = GNode.create("SimpleDeclarator", "cEnv");
0411: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0412: null, null, null);
0413: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0414: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0415: Node v$7 = GNode.create("StructureTypeReference", null, tag);
0416: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0417: Node v$9 = GNode.create("TypeQualifierList", false);
0418: Node v$10 = GNode.create("Pointer", v$9, null);
0419: Node v$11 = GNode.create("SimpleDeclarator", "pcEnv");
0420: Node v$12 = GNode.create("PointerDeclarator", v$10, v$11);
0421: Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
0422: Node v$14 = GNode.create("AddressExpression", v$13);
0423: Node v$15 = GNode.create("InitializedDeclarator", null, v$12,
0424: null, null, v$14);
0425: Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
0426: Node v$17 = GNode.create("Declaration", null, v$8, v$16);
0427: Node v$18 = GNode.create("PrimaryIdentifier", "pcEnv");
0428: Node v$19 = GNode.create("IntegerConstant", "0");
0429: Node v$20 = GNode.create("AssignmentExpression", v$18, "=",
0430: v$19);
0431: Node v$21 = GNode.create("ExpressionStatement", v$20);
0432: Node v$22 = GNode.create("CompoundStatement", v$6, v$17,
0433: statement, v$21, null);
0434: return v$22;
0435: }
0436:
0437: /**
0438: * Create a compound statement.
0439: *
0440: * @param tag The tag.
0441: * @param copyFormals The copyFormals.
0442: * @param className The className.
0443: * @param statement The statement.
0444: * @return The generic node.
0445: */
0446: public Node closureStatement(String tag, Node copyFormals,
0447: Node className, Node statement) {
0448: Node v$1 = GNode.create("StructureTypeReference", null, tag);
0449: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0450: Node v$3 = GNode.create("SimpleDeclarator", "cEnv");
0451: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0452: null, null, null);
0453: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0454: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0455: Node v$7 = GNode.create("StructureTypeReference", null, tag);
0456: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0457: Node v$9 = GNode.create("TypeQualifierList", false);
0458: Node v$10 = GNode.create("Pointer", v$9, null);
0459: Node v$11 = GNode.create("SimpleDeclarator", "pcEnv");
0460: Node v$12 = GNode.create("PointerDeclarator", v$10, v$11);
0461: Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
0462: Node v$14 = GNode.create("AddressExpression", v$13);
0463: Node v$15 = GNode.create("InitializedDeclarator", null, v$12,
0464: null, null, v$14);
0465: Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
0466: Node v$17 = GNode.create("Declaration", null, v$8, v$16);
0467: Node v$18 = GNode.create("TypedefName", "jobject");
0468: Node v$19 = GNode.create("DeclarationSpecifiers", v$18);
0469: Node v$20 = GNode.create("SimpleDeclarator", "jEnv");
0470: Node v$21 = GNode.create("TypedefName", "jclass");
0471: Node v$22 = GNode.create("DeclarationSpecifiers", v$21);
0472: Node v$23 = GNode.create("SimpleDeclarator", "cls");
0473: Node v$24 = GNode.create("PrimaryIdentifier", "env");
0474: Node v$25 = GNode.create("IndirectionExpression", v$24);
0475: Node v$26 = GNode.create("IndirectComponentSelection", v$25,
0476: "FindClass");
0477: Node v$27 = GNode.create("PrimaryIdentifier", "env");
0478: Node v$28 = GNode.create("ExpressionList", v$27, className);
0479: Node v$29 = GNode.create("FunctionCall", v$26, v$28);
0480: Node v$30 = GNode.create("InitializedDeclarator", null, v$23,
0481: null, null, v$29);
0482: Node v$31 = GNode.create("InitializedDeclaratorList", v$30);
0483: Node v$32 = GNode.create("Declaration", null, v$22, v$31);
0484: Node v$33 = GNode.create("TypedefName", "jmethodID");
0485: Node v$34 = GNode.create("DeclarationSpecifiers", v$33);
0486: Node v$35 = GNode.create("SimpleDeclarator", "mid");
0487: Node v$36 = GNode.create("PrimaryIdentifier", "env");
0488: Node v$37 = GNode.create("IndirectionExpression", v$36);
0489: Node v$38 = GNode.create("IndirectComponentSelection", v$37,
0490: "GetMethodID");
0491: Node v$39 = GNode.create("PrimaryIdentifier", "env");
0492: Node v$40 = GNode.create("PrimaryIdentifier", "cls");
0493: Node v$41 = GNode.create("StringConstant", "\"<init>\"");
0494: Node v$42 = GNode.create("StringConstant", "\"()V\"");
0495: Node v$43 = GNode.create("ExpressionList", v$39, v$40, v$41,
0496: v$42);
0497: Node v$44 = GNode.create("FunctionCall", v$38, v$43);
0498: Node v$45 = GNode.create("InitializedDeclarator", null, v$35,
0499: null, null, v$44);
0500: Node v$46 = GNode.create("InitializedDeclaratorList", v$45);
0501: Node v$47 = GNode.create("Declaration", null, v$34, v$46);
0502: Node v$48 = GNode.create("TypedefName", "jobject");
0503: Node v$49 = GNode.create("DeclarationSpecifiers", v$48);
0504: Node v$50 = GNode.create("SimpleDeclarator", "tmp");
0505: Node v$51 = GNode.create("PrimaryIdentifier", "env");
0506: Node v$52 = GNode.create("IndirectionExpression", v$51);
0507: Node v$53 = GNode.create("IndirectComponentSelection", v$52,
0508: "NewObject");
0509: Node v$54 = GNode.create("PrimaryIdentifier", "env");
0510: Node v$55 = GNode.create("PrimaryIdentifier", "cls");
0511: Node v$56 = GNode.create("PrimaryIdentifier", "mid");
0512: Node v$57 = GNode.create("ExpressionList", v$54, v$55, v$56);
0513: Node v$58 = GNode.create("FunctionCall", v$53, v$57);
0514: Node v$59 = GNode.create("InitializedDeclarator", null, v$50,
0515: null, null, v$58);
0516: Node v$60 = GNode.create("InitializedDeclaratorList", v$59);
0517: Node v$61 = GNode.create("Declaration", null, v$49, v$60);
0518: Node v$62 = GNode.create("PrimaryIdentifier", "env");
0519: Node v$63 = GNode.create("IndirectionExpression", v$62);
0520: Node v$64 = GNode.create("IndirectComponentSelection", v$63,
0521: "DeleteLocalRef");
0522: Node v$65 = GNode.create("PrimaryIdentifier", "env");
0523: Node v$66 = GNode.create("PrimaryIdentifier", "cls");
0524: Node v$67 = GNode.create("ExpressionList", v$65, v$66);
0525: Node v$68 = GNode.create("FunctionCall", v$64, v$67);
0526: Node v$69 = GNode.create("ExpressionStatement", v$68);
0527: Node v$70 = GNode.create("PrimaryIdentifier", "tmp");
0528: Node v$71 = GNode.create("ExpressionStatement", v$70);
0529: Node v$72 = GNode.create("CompoundStatement", v$32, v$47, v$61,
0530: v$69, v$71, null);
0531: Node v$73 = GNode.create("StatementAsExpression", v$72);
0532: Node v$74 = GNode.create("InitializedDeclarator", null, v$20,
0533: null, null, v$73);
0534: Node v$75 = GNode.create("InitializedDeclaratorList", v$74);
0535: Node v$76 = GNode.create("Declaration", null, v$19, v$75);
0536: Node v$77 = GNode.create("PrimaryIdentifier", "pcEnv");
0537: Node v$78 = GNode.create("IntegerConstant", "0");
0538: Node v$79 = GNode.create("AssignmentExpression", v$77, "=",
0539: v$78);
0540: Node v$80 = GNode.create("ExpressionStatement", v$79);
0541: Node v$81 = GNode.create("CompoundStatement", v$6, v$17,
0542: copyFormals, v$76, statement, v$80, null);
0543: return v$81;
0544: }
0545:
0546: /**
0547: * Create a compound statement.
0548: *
0549: * @param releaseAbrupt The releaseAbrupt.
0550: * @param abruptFlowJump The abruptFlowJump.
0551: * @return The generic node.
0552: */
0553: public Node commit(String releaseAbrupt, Node abruptFlowJump) {
0554: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
0555: Node v$2 = GNode.create("IndirectComponentSelection", v$1,
0556: releaseAbrupt);
0557: Node v$3 = GNode.create("IntegerConstant", "1");
0558: Node v$4 = GNode.create("AssignmentExpression", v$2, "=", v$3);
0559: Node v$5 = GNode.create("ExpressionStatement", v$4);
0560: Node v$6 = GNode.create("CompoundStatement", v$5,
0561: abruptFlowJump, null);
0562: return v$6;
0563: }
0564:
0565: /**
0566: * Create a statement as expression.
0567: *
0568: * @param apiFunction The apiFunction.
0569: * @param javaArray The javaArray.
0570: * @param javaArrayStart The javaArrayStart.
0571: * @param length The length.
0572: * @param cArray The cArray.
0573: * @param cArrayStart The cArrayStart.
0574: * @param abruptFlowCheck The abruptFlowCheck.
0575: * @return The generic node.
0576: */
0577: public Node copyBetweenJavaAndC(String apiFunction, Node javaArray,
0578: Node javaArrayStart, Node length, Node cArray,
0579: Node cArrayStart, Node abruptFlowCheck) {
0580: Node v$1 = GNode.create("TypedefName", "jint");
0581: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0582: Node v$3 = GNode.create("SimpleDeclarator", "length");
0583: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0584: null, null, null);
0585: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0586: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0587: Node v$7 = GNode.create("PrimaryIdentifier", "env");
0588: Node v$8 = GNode.create("IndirectionExpression", v$7);
0589: Node v$9 = GNode.create("IndirectComponentSelection", v$8,
0590: apiFunction);
0591: Node v$10 = GNode.create("PrimaryIdentifier", "env");
0592: Node v$11 = GNode.create("PrimaryIdentifier", "length");
0593: Node v$12 = GNode.create("AssignmentExpression", v$11, "=",
0594: length);
0595: Node v$13 = GNode.create("AdditiveExpression", cArray, "+",
0596: cArrayStart);
0597: Node v$14 = GNode.create("ExpressionList", v$10, javaArray,
0598: javaArrayStart, v$12, v$13);
0599: Node v$15 = GNode.create("FunctionCall", v$9, v$14);
0600: Node v$16 = GNode.create("ExpressionStatement", v$15);
0601: Node v$17 = GNode.create("PrimaryIdentifier", "length");
0602: Node v$18 = GNode.create("ExpressionStatement", v$17);
0603: Node v$19 = GNode.create("CompoundStatement", v$6, v$16,
0604: abruptFlowCheck, v$18, null);
0605: Node v$20 = GNode.create("StatementAsExpression", v$19);
0606: return v$20;
0607: }
0608:
0609: /**
0610: * Create a statement as expression.
0611: *
0612: * @param javaArray The javaArray.
0613: * @param javaArrayStart The javaArrayStart.
0614: * @param length The length.
0615: * @param apiFunction The apiFunction.
0616: * @param cArray The cArray.
0617: * @param cArrayStart The cArrayStart.
0618: * @param abruptFlowCheck The abruptFlowCheck.
0619: * @return The generic node.
0620: */
0621: public Node copyBetweenJavaAndCUTF(Node javaArray,
0622: Node javaArrayStart, Node length, String apiFunction,
0623: Node cArray, Node cArrayStart, Node abruptFlowCheck) {
0624: Node v$1 = GNode.create("TypedefName", "jstring");
0625: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0626: Node v$3 = GNode.create("SimpleDeclarator", "javaArray");
0627: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0628: null, null, javaArray);
0629: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0630: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0631: Node v$7 = GNode.create("TypedefName", "jint");
0632: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0633: Node v$9 = GNode.create("SimpleDeclarator", "start");
0634: Node v$10 = GNode.create("InitializedDeclarator", null, v$9,
0635: null, null, javaArrayStart);
0636: Node v$11 = GNode.create("SimpleDeclarator", "length");
0637: Node v$12 = GNode.create("InitializedDeclarator", null, v$11,
0638: null, null, length);
0639: Node v$13 = GNode.create("InitializedDeclaratorList", v$10,
0640: v$12);
0641: Node v$14 = GNode.create("Declaration", null, v$8, v$13);
0642: Node v$15 = GNode.create("PrimaryIdentifier", "env");
0643: Node v$16 = GNode.create("IndirectionExpression", v$15);
0644: Node v$17 = GNode.create("IndirectComponentSelection", v$16,
0645: apiFunction);
0646: Node v$18 = GNode.create("PrimaryIdentifier", "env");
0647: Node v$19 = GNode.create("PrimaryIdentifier", "javaArray");
0648: Node v$20 = GNode.create("PrimaryIdentifier", "start");
0649: Node v$21 = GNode.create("PrimaryIdentifier", "length");
0650: Node v$22 = GNode.create("Char", false);
0651: Node v$23 = GNode.create("SpecifierQualifierList", v$22);
0652: Node v$24 = GNode.create("TypeQualifierList", false);
0653: Node v$25 = GNode.create("Pointer", v$24, null);
0654: Node v$26 = GNode.create("AbstractDeclarator", v$25, null);
0655: Node v$27 = GNode.create("TypeName", v$23, v$26);
0656: Node v$28 = GNode.create("AdditiveExpression", cArray, "+",
0657: cArrayStart);
0658: Node v$29 = GNode.create("CastExpression", v$27, v$28);
0659: Node v$30 = GNode.create("ExpressionList", v$18, v$19, v$20,
0660: v$21, v$29);
0661: Node v$31 = GNode.create("FunctionCall", v$17, v$30);
0662: Node v$32 = GNode.create("ExpressionStatement", v$31);
0663: Node v$33 = GNode.create("PrimaryIdentifier",
0664: "_stringUTFLength");
0665: Node v$34 = GNode.create("PrimaryIdentifier", "env");
0666: Node v$35 = GNode.create("PrimaryIdentifier", "javaArray");
0667: Node v$36 = GNode.create("PrimaryIdentifier", "start");
0668: Node v$37 = GNode.create("PrimaryIdentifier", "length");
0669: Node v$38 = GNode.create("ExpressionList", v$34, v$35, v$36,
0670: v$37);
0671: Node v$39 = GNode.create("FunctionCall", v$33, v$38);
0672: Node v$40 = GNode.create("ExpressionStatement", v$39);
0673: Node v$41 = GNode.create("CompoundStatement", v$6, v$14, v$32,
0674: abruptFlowCheck, v$40, null);
0675: Node v$42 = GNode.create("StatementAsExpression", v$41);
0676: return v$42;
0677: }
0678:
0679: /**
0680: * Create a statement as expression.
0681: *
0682: * @param javaArray The javaArray.
0683: * @param javaArrayStart The javaArrayStart.
0684: * @param length The length.
0685: * @param cArray The cArray.
0686: * @param cArrayStart The cArrayStart.
0687: * @param abruptFlowCheck The abruptFlowCheck.
0688: * @return The generic node.
0689: */
0690: public Node copyFromJavaReference(Node javaArray,
0691: Node javaArrayStart, Node length, Node cArray,
0692: Node cArrayStart, Node abruptFlowCheck) {
0693: Node v$1 = GNode.create("TypedefName", "jobjectArray");
0694: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0695: Node v$3 = GNode.create("SimpleDeclarator", "javaArray");
0696: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0697: null, null, javaArray);
0698: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0699: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0700: Node v$7 = GNode.create("TypedefName", "jint");
0701: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0702: Node v$9 = GNode.create("SimpleDeclarator", "start");
0703: Node v$10 = GNode.create("InitializedDeclarator", null, v$9,
0704: null, null, javaArrayStart);
0705: Node v$11 = GNode.create("SimpleDeclarator", "length");
0706: Node v$12 = GNode.create("InitializedDeclarator", null, v$11,
0707: null, null, length);
0708: Node v$13 = GNode.create("InitializedDeclaratorList", v$10,
0709: v$12);
0710: Node v$14 = GNode.create("Declaration", null, v$8, v$13);
0711: Node v$15 = GNode.create("TypedefName", "jobject");
0712: Node v$16 = GNode.create("DeclarationSpecifiers", v$15);
0713: Node v$17 = GNode.create("TypeQualifierList", false);
0714: Node v$18 = GNode.create("Pointer", v$17, null);
0715: Node v$19 = GNode.create("SimpleDeclarator", "cArray");
0716: Node v$20 = GNode.create("PointerDeclarator", v$18, v$19);
0717: Node v$21 = GNode.create("AdditiveExpression", cArray, "+",
0718: cArrayStart);
0719: Node v$22 = GNode.create("InitializedDeclarator", null, v$20,
0720: null, null, v$21);
0721: Node v$23 = GNode.create("InitializedDeclaratorList", v$22);
0722: Node v$24 = GNode.create("Declaration", null, v$16, v$23);
0723: Node v$25 = GNode.create("TypedefName", "jint");
0724: Node v$26 = GNode.create("DeclarationSpecifiers", v$25);
0725: Node v$27 = GNode.create("SimpleDeclarator", "i");
0726: Node v$28 = GNode.create("InitializedDeclarator", null, v$27,
0727: null, null, null);
0728: Node v$29 = GNode.create("InitializedDeclaratorList", v$28);
0729: Node v$30 = GNode.create("Declaration", null, v$26, v$29);
0730: Node v$31 = GNode.create("PrimaryIdentifier", "i");
0731: Node v$32 = GNode.create("IntegerConstant", "0");
0732: Node v$33 = GNode.create("AssignmentExpression", v$31, "=",
0733: v$32);
0734: Node v$34 = GNode.create("PrimaryIdentifier", "i");
0735: Node v$35 = GNode.create("PrimaryIdentifier", "length");
0736: Node v$36 = GNode.create("RelationalExpression", v$34, "<",
0737: v$35);
0738: Node v$37 = GNode.create("PrimaryIdentifier", "i");
0739: Node v$38 = GNode.create("PostincrementExpression", v$37);
0740: Node v$39 = GNode.create("PrimaryIdentifier", "cArray");
0741: Node v$40 = GNode.create("PrimaryIdentifier", "i");
0742: Node v$41 = GNode.create("SubscriptExpression", v$39, v$40);
0743: Node v$42 = GNode.create("PrimaryIdentifier", "env");
0744: Node v$43 = GNode.create("IndirectionExpression", v$42);
0745: Node v$44 = GNode.create("IndirectComponentSelection", v$43,
0746: "GetObjectArrayElement");
0747: Node v$45 = GNode.create("PrimaryIdentifier", "env");
0748: Node v$46 = GNode.create("PrimaryIdentifier", "javaArray");
0749: Node v$47 = GNode.create("PrimaryIdentifier", "start");
0750: Node v$48 = GNode.create("PrimaryIdentifier", "i");
0751: Node v$49 = GNode.create("AdditiveExpression", v$47, "+", v$48);
0752: Node v$50 = GNode.create("ExpressionList", v$45, v$46, v$49);
0753: Node v$51 = GNode.create("FunctionCall", v$44, v$50);
0754: Node v$52 = GNode.create("AssignmentExpression", v$41, "=",
0755: v$51);
0756: Node v$53 = GNode.create("ExpressionStatement", v$52);
0757: Node v$54 = GNode.create("PrimaryIdentifier", "env");
0758: Node v$55 = GNode.create("IndirectionExpression", v$54);
0759: Node v$56 = GNode.create("IndirectComponentSelection", v$55,
0760: "ExceptionCheck");
0761: Node v$57 = GNode.create("PrimaryIdentifier", "env");
0762: Node v$58 = GNode.create("ExpressionList", v$57);
0763: Node v$59 = GNode.create("FunctionCall", v$56, v$58);
0764: Node v$60 = GNode.create("BreakStatement", false);
0765: Node v$61 = GNode.create("IfStatement", v$59, v$60);
0766: Node v$62 = GNode.create("CompoundStatement", v$53, v$61, null);
0767: Node v$63 = GNode
0768: .create("ForStatement", v$33, v$36, v$38, v$62);
0769: Node v$64 = GNode.create("PrimaryIdentifier", "length");
0770: Node v$65 = GNode.create("ExpressionStatement", v$64);
0771: Node v$66 = GNode.create("CompoundStatement", v$6, v$14, v$24,
0772: v$30, v$63, abruptFlowCheck, v$65, null);
0773: Node v$67 = GNode.create("StatementAsExpression", v$66);
0774: return v$67;
0775: }
0776:
0777: /**
0778: * Create a statement as expression.
0779: *
0780: * @param javaArray The javaArray.
0781: * @param javaArrayStart The javaArrayStart.
0782: * @param length The length.
0783: * @param cArray The cArray.
0784: * @param cArrayStart The cArrayStart.
0785: * @param abruptFlowCheck The abruptFlowCheck.
0786: * @return The generic node.
0787: */
0788: public Node copyToJavaReference(Node javaArray,
0789: Node javaArrayStart, Node length, Node cArray,
0790: Node cArrayStart, Node abruptFlowCheck) {
0791: Node v$1 = GNode.create("TypedefName", "jobjectArray");
0792: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0793: Node v$3 = GNode.create("SimpleDeclarator", "javaArray");
0794: Node v$4 = GNode.create("InitializedDeclarator", null, v$3,
0795: null, null, javaArray);
0796: Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
0797: Node v$6 = GNode.create("Declaration", null, v$2, v$5);
0798: Node v$7 = GNode.create("TypedefName", "jint");
0799: Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
0800: Node v$9 = GNode.create("SimpleDeclarator", "start");
0801: Node v$10 = GNode.create("InitializedDeclarator", null, v$9,
0802: null, null, javaArrayStart);
0803: Node v$11 = GNode.create("SimpleDeclarator", "length");
0804: Node v$12 = GNode.create("InitializedDeclarator", null, v$11,
0805: null, null, length);
0806: Node v$13 = GNode.create("InitializedDeclaratorList", v$10,
0807: v$12);
0808: Node v$14 = GNode.create("Declaration", null, v$8, v$13);
0809: Node v$15 = GNode.create("TypedefName", "jobject");
0810: Node v$16 = GNode.create("DeclarationSpecifiers", v$15);
0811: Node v$17 = GNode.create("TypeQualifierList", false);
0812: Node v$18 = GNode.create("Pointer", v$17, null);
0813: Node v$19 = GNode.create("SimpleDeclarator", "cArray");
0814: Node v$20 = GNode.create("PointerDeclarator", v$18, v$19);
0815: Node v$21 = GNode.create("AdditiveExpression", cArray, "+",
0816: cArrayStart);
0817: Node v$22 = GNode.create("InitializedDeclarator", null, v$20,
0818: null, null, v$21);
0819: Node v$23 = GNode.create("InitializedDeclaratorList", v$22);
0820: Node v$24 = GNode.create("Declaration", null, v$16, v$23);
0821: Node v$25 = GNode.create("TypedefName", "jint");
0822: Node v$26 = GNode.create("DeclarationSpecifiers", v$25);
0823: Node v$27 = GNode.create("SimpleDeclarator", "i");
0824: Node v$28 = GNode.create("InitializedDeclarator", null, v$27,
0825: null, null, null);
0826: Node v$29 = GNode.create("InitializedDeclaratorList", v$28);
0827: Node v$30 = GNode.create("Declaration", null, v$26, v$29);
0828: Node v$31 = GNode.create("PrimaryIdentifier", "i");
0829: Node v$32 = GNode.create("IntegerConstant", "0");
0830: Node v$33 = GNode.create("AssignmentExpression", v$31, "=",
0831: v$32);
0832: Node v$34 = GNode.create("PrimaryIdentifier", "i");
0833: Node v$35 = GNode.create("PrimaryIdentifier", "length");
0834: Node v$36 = GNode.create("RelationalExpression", v$34, "<",
0835: v$35);
0836: Node v$37 = GNode.create("PrimaryIdentifier", "i");
0837: Node v$38 = GNode.create("PostincrementExpression", v$37);
0838: Node v$39 = GNode.create("PrimaryIdentifier", "env");
0839: Node v$40 = GNode.create("IndirectionExpression", v$39);
0840: Node v$41 = GNode.create("IndirectComponentSelection", v$40,
0841: "SetObjectArrayElement");
0842: Node v$42 = GNode.create("PrimaryIdentifier", "env");
0843: Node v$43 = GNode.create("PrimaryIdentifier", "javaArray");
0844: Node v$44 = GNode.create("PrimaryIdentifier", "start");
0845: Node v$45 = GNode.create("PrimaryIdentifier", "i");
0846: Node v$46 = GNode.create("AdditiveExpression", v$44, "+", v$45);
0847: Node v$47 = GNode.create("PrimaryIdentifier", "cArray");
0848: Node v$48 = GNode.create("PrimaryIdentifier", "i");
0849: Node v$49 = GNode.create("SubscriptExpression", v$47, v$48);
0850: Node v$50 = GNode.create("ExpressionList", v$42, v$43, v$46,
0851: v$49);
0852: Node v$51 = GNode.create("FunctionCall", v$41, v$50);
0853: Node v$52 = GNode.create("ExpressionStatement", v$51);
0854: Node v$53 = GNode.create("PrimaryIdentifier", "env");
0855: Node v$54 = GNode.create("IndirectionExpression", v$53);
0856: Node v$55 = GNode.create("IndirectComponentSelection", v$54,
0857: "ExceptionCheck");
0858: Node v$56 = GNode.create("PrimaryIdentifier", "env");
0859: Node v$57 = GNode.create("ExpressionList", v$56);
0860: Node v$58 = GNode.create("FunctionCall", v$55, v$57);
0861: Node v$59 = GNode.create("BreakStatement", false);
0862: Node v$60 = GNode.create("IfStatement", v$58, v$59);
0863: Node v$61 = GNode.create("CompoundStatement", v$52, v$60, null);
0864: Node v$62 = GNode
0865: .create("ForStatement", v$33, v$36, v$38, v$61);
0866: Node v$63 = GNode.create("PrimaryIdentifier", "length");
0867: Node v$64 = GNode.create("ExpressionStatement", v$63);
0868: Node v$65 = GNode.create("CompoundStatement", v$6, v$14, v$24,
0869: v$30, v$62, abruptFlowCheck, v$64, null);
0870: Node v$66 = GNode.create("StatementAsExpression", v$65);
0871: return v$66;
0872: }
0873:
0874: /**
0875: * Create a declaration.
0876: *
0877: * @param tag The tag.
0878: * @param members The members.
0879: * @return The generic node.
0880: */
0881: public Node declareStruct(String tag, List<Node> members) {
0882: Node v$1 = GNode.create("StructureDeclarationList",
0883: members.size() + 1).addAll(members).add(null);
0884: Node v$2 = GNode.create("StructureTypeDefinition", null, tag,
0885: v$1, null);
0886: Node v$3 = GNode.create("DeclarationSpecifiers", v$2);
0887: Node v$4 = GNode.create("Declaration", null, v$3, null);
0888: return v$4;
0889: }
0890:
0891: /**
0892: * Create an indirect component selection.
0893: *
0894: * @param name The name.
0895: * @return The generic node.
0896: */
0897: public Node getPCEnvField(String name) {
0898: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
0899: Node v$2 = GNode
0900: .create("IndirectComponentSelection", v$1, name);
0901: return v$2;
0902: }
0903:
0904: /**
0905: * Create a statement as expression.
0906: *
0907: * @param name The name.
0908: * @param signature The signature.
0909: * @param tmpDeclaration The tmpDeclaration.
0910: * @param apiFunction The apiFunction.
0911: * @param abruptFlowCheck The abruptFlowCheck.
0912: * @return The generic node.
0913: */
0914: public Node javaInCExpression32(Node name, Node signature,
0915: Node tmpDeclaration, String apiFunction,
0916: Node abruptFlowCheck) {
0917: Node v$1 = GNode.create("TypedefName", "jclass");
0918: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
0919: Node v$3 = GNode.create("SimpleDeclarator", "cls");
0920: Node v$4 = GNode.create("PrimaryIdentifier", "env");
0921: Node v$5 = GNode.create("IndirectionExpression", v$4);
0922: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
0923: "GetObjectClass");
0924: Node v$7 = GNode.create("PrimaryIdentifier", "env");
0925: Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
0926: Node v$9 = GNode.create("ExpressionList", v$7, v$8);
0927: Node v$10 = GNode.create("FunctionCall", v$6, v$9);
0928: Node v$11 = GNode.create("InitializedDeclarator", null, v$3,
0929: null, null, v$10);
0930: Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
0931: Node v$13 = GNode.create("Declaration", null, v$2, v$12);
0932: Node v$14 = GNode.create("TypedefName", "jmethodID");
0933: Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
0934: Node v$16 = GNode.create("SimpleDeclarator", "mid");
0935: Node v$17 = GNode.create("PrimaryIdentifier", "env");
0936: Node v$18 = GNode.create("IndirectionExpression", v$17);
0937: Node v$19 = GNode.create("IndirectComponentSelection", v$18,
0938: "GetMethodID");
0939: Node v$20 = GNode.create("PrimaryIdentifier", "env");
0940: Node v$21 = GNode.create("PrimaryIdentifier", "cls");
0941: Node v$22 = GNode.create("ExpressionList", v$20, v$21, name,
0942: signature);
0943: Node v$23 = GNode.create("FunctionCall", v$19, v$22);
0944: Node v$24 = GNode.create("InitializedDeclarator", null, v$16,
0945: null, null, v$23);
0946: Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
0947: Node v$26 = GNode.create("Declaration", null, v$15, v$25);
0948: Node v$27 = GNode.create("PrimaryIdentifier", "tmp");
0949: Node v$28 = GNode.create("PrimaryIdentifier", "env");
0950: Node v$29 = GNode.create("IndirectionExpression", v$28);
0951: Node v$30 = GNode.create("IndirectComponentSelection", v$29,
0952: apiFunction);
0953: Node v$31 = GNode.create("PrimaryIdentifier", "env");
0954: Node v$32 = GNode.create("PrimaryIdentifier", "jEnv");
0955: Node v$33 = GNode.create("PrimaryIdentifier", "cls");
0956: Node v$34 = GNode.create("PrimaryIdentifier", "mid");
0957: Node v$35 = GNode.create("TypedefName", "jint");
0958: Node v$36 = GNode.create("SpecifierQualifierList", v$35);
0959: Node v$37 = GNode.create("TypeName", v$36, null);
0960: Node v$38 = GNode.create("PrimaryIdentifier", "pcEnv");
0961: Node v$39 = GNode.create("CastExpression", v$37, v$38);
0962: Node v$40 = GNode.create("ExpressionList", v$31, v$32, v$33,
0963: v$34, v$39);
0964: Node v$41 = GNode.create("FunctionCall", v$30, v$40);
0965: Node v$42 = GNode.create("AssignmentExpression", v$27, "=",
0966: v$41);
0967: Node v$43 = GNode.create("ExpressionStatement", v$42);
0968: Node v$44 = GNode.create("PrimaryIdentifier", "env");
0969: Node v$45 = GNode.create("IndirectionExpression", v$44);
0970: Node v$46 = GNode.create("IndirectComponentSelection", v$45,
0971: "DeleteLocalRef");
0972: Node v$47 = GNode.create("PrimaryIdentifier", "env");
0973: Node v$48 = GNode.create("PrimaryIdentifier", "cls");
0974: Node v$49 = GNode.create("ExpressionList", v$47, v$48);
0975: Node v$50 = GNode.create("FunctionCall", v$46, v$49);
0976: Node v$51 = GNode.create("ExpressionStatement", v$50);
0977: Node v$52 = GNode.create("PrimaryIdentifier", "tmp");
0978: Node v$53 = GNode.create("ExpressionStatement", v$52);
0979: Node v$54 = GNode
0980: .create("CompoundStatement", v$13, v$26,
0981: tmpDeclaration, v$43, v$51, abruptFlowCheck,
0982: v$53, null);
0983: Node v$55 = GNode.create("StatementAsExpression", v$54);
0984: return v$55;
0985: }
0986:
0987: /**
0988: * Create a statement as expression.
0989: *
0990: * @param name The name.
0991: * @param signature The signature.
0992: * @param tmpDeclaration The tmpDeclaration.
0993: * @param apiFunction The apiFunction.
0994: * @param abruptFlowCheck The abruptFlowCheck.
0995: * @return The generic node.
0996: */
0997: public Node javaInCExpression64(Node name, Node signature,
0998: Node tmpDeclaration, String apiFunction,
0999: Node abruptFlowCheck) {
1000: Node v$1 = GNode.create("TypedefName", "jclass");
1001: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
1002: Node v$3 = GNode.create("SimpleDeclarator", "cls");
1003: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1004: Node v$5 = GNode.create("IndirectionExpression", v$4);
1005: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1006: "GetObjectClass");
1007: Node v$7 = GNode.create("PrimaryIdentifier", "env");
1008: Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
1009: Node v$9 = GNode.create("ExpressionList", v$7, v$8);
1010: Node v$10 = GNode.create("FunctionCall", v$6, v$9);
1011: Node v$11 = GNode.create("InitializedDeclarator", null, v$3,
1012: null, null, v$10);
1013: Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
1014: Node v$13 = GNode.create("Declaration", null, v$2, v$12);
1015: Node v$14 = GNode.create("TypedefName", "jmethodID");
1016: Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
1017: Node v$16 = GNode.create("SimpleDeclarator", "mid");
1018: Node v$17 = GNode.create("PrimaryIdentifier", "env");
1019: Node v$18 = GNode.create("IndirectionExpression", v$17);
1020: Node v$19 = GNode.create("IndirectComponentSelection", v$18,
1021: "GetMethodID");
1022: Node v$20 = GNode.create("PrimaryIdentifier", "env");
1023: Node v$21 = GNode.create("PrimaryIdentifier", "cls");
1024: Node v$22 = GNode.create("ExpressionList", v$20, v$21, name,
1025: signature);
1026: Node v$23 = GNode.create("FunctionCall", v$19, v$22);
1027: Node v$24 = GNode.create("InitializedDeclarator", null, v$16,
1028: null, null, v$23);
1029: Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
1030: Node v$26 = GNode.create("Declaration", null, v$15, v$25);
1031: Node v$27 = GNode.create("PrimaryIdentifier", "tmp");
1032: Node v$28 = GNode.create("PrimaryIdentifier", "env");
1033: Node v$29 = GNode.create("IndirectionExpression", v$28);
1034: Node v$30 = GNode.create("IndirectComponentSelection", v$29,
1035: apiFunction);
1036: Node v$31 = GNode.create("PrimaryIdentifier", "env");
1037: Node v$32 = GNode.create("PrimaryIdentifier", "jEnv");
1038: Node v$33 = GNode.create("PrimaryIdentifier", "cls");
1039: Node v$34 = GNode.create("PrimaryIdentifier", "mid");
1040: Node v$35 = GNode.create("TypedefName", "jlong");
1041: Node v$36 = GNode.create("SpecifierQualifierList", v$35);
1042: Node v$37 = GNode.create("TypeName", v$36, null);
1043: Node v$38 = GNode.create("PrimaryIdentifier", "pcEnv");
1044: Node v$39 = GNode.create("CastExpression", v$37, v$38);
1045: Node v$40 = GNode.create("ExpressionList", v$31, v$32, v$33,
1046: v$34, v$39);
1047: Node v$41 = GNode.create("FunctionCall", v$30, v$40);
1048: Node v$42 = GNode.create("AssignmentExpression", v$27, "=",
1049: v$41);
1050: Node v$43 = GNode.create("ExpressionStatement", v$42);
1051: Node v$44 = GNode.create("PrimaryIdentifier", "env");
1052: Node v$45 = GNode.create("IndirectionExpression", v$44);
1053: Node v$46 = GNode.create("IndirectComponentSelection", v$45,
1054: "DeleteLocalRef");
1055: Node v$47 = GNode.create("PrimaryIdentifier", "env");
1056: Node v$48 = GNode.create("PrimaryIdentifier", "cls");
1057: Node v$49 = GNode.create("ExpressionList", v$47, v$48);
1058: Node v$50 = GNode.create("FunctionCall", v$46, v$49);
1059: Node v$51 = GNode.create("ExpressionStatement", v$50);
1060: Node v$52 = GNode.create("PrimaryIdentifier", "tmp");
1061: Node v$53 = GNode.create("ExpressionStatement", v$52);
1062: Node v$54 = GNode
1063: .create("CompoundStatement", v$13, v$26,
1064: tmpDeclaration, v$43, v$51, abruptFlowCheck,
1065: v$53, null);
1066: Node v$55 = GNode.create("StatementAsExpression", v$54);
1067: return v$55;
1068: }
1069:
1070: /**
1071: * Create a compound statement.
1072: *
1073: * @param name The name.
1074: * @param signature The signature.
1075: * @param apiFunction The apiFunction.
1076: * @param abruptFlowCheck The abruptFlowCheck.
1077: * @return The generic node.
1078: */
1079: public Node javaInCStatement32(Node name, Node signature,
1080: String apiFunction, Node abruptFlowCheck) {
1081: Node v$1 = GNode.create("TypedefName", "jclass");
1082: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
1083: Node v$3 = GNode.create("SimpleDeclarator", "cls");
1084: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1085: Node v$5 = GNode.create("IndirectionExpression", v$4);
1086: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1087: "GetObjectClass");
1088: Node v$7 = GNode.create("PrimaryIdentifier", "env");
1089: Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
1090: Node v$9 = GNode.create("ExpressionList", v$7, v$8);
1091: Node v$10 = GNode.create("FunctionCall", v$6, v$9);
1092: Node v$11 = GNode.create("InitializedDeclarator", null, v$3,
1093: null, null, v$10);
1094: Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
1095: Node v$13 = GNode.create("Declaration", null, v$2, v$12);
1096: Node v$14 = GNode.create("TypedefName", "jmethodID");
1097: Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
1098: Node v$16 = GNode.create("SimpleDeclarator", "mid");
1099: Node v$17 = GNode.create("PrimaryIdentifier", "env");
1100: Node v$18 = GNode.create("IndirectionExpression", v$17);
1101: Node v$19 = GNode.create("IndirectComponentSelection", v$18,
1102: "GetMethodID");
1103: Node v$20 = GNode.create("PrimaryIdentifier", "env");
1104: Node v$21 = GNode.create("PrimaryIdentifier", "cls");
1105: Node v$22 = GNode.create("ExpressionList", v$20, v$21, name,
1106: signature);
1107: Node v$23 = GNode.create("FunctionCall", v$19, v$22);
1108: Node v$24 = GNode.create("InitializedDeclarator", null, v$16,
1109: null, null, v$23);
1110: Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
1111: Node v$26 = GNode.create("Declaration", null, v$15, v$25);
1112: Node v$27 = GNode.create("PrimaryIdentifier", "env");
1113: Node v$28 = GNode.create("IndirectionExpression", v$27);
1114: Node v$29 = GNode.create("IndirectComponentSelection", v$28,
1115: apiFunction);
1116: Node v$30 = GNode.create("PrimaryIdentifier", "env");
1117: Node v$31 = GNode.create("PrimaryIdentifier", "jEnv");
1118: Node v$32 = GNode.create("PrimaryIdentifier", "cls");
1119: Node v$33 = GNode.create("PrimaryIdentifier", "mid");
1120: Node v$34 = GNode.create("TypedefName", "jint");
1121: Node v$35 = GNode.create("SpecifierQualifierList", v$34);
1122: Node v$36 = GNode.create("TypeName", v$35, null);
1123: Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
1124: Node v$38 = GNode.create("CastExpression", v$36, v$37);
1125: Node v$39 = GNode.create("ExpressionList", v$30, v$31, v$32,
1126: v$33, v$38);
1127: Node v$40 = GNode.create("FunctionCall", v$29, v$39);
1128: Node v$41 = GNode.create("ExpressionStatement", v$40);
1129: Node v$42 = GNode.create("PrimaryIdentifier", "env");
1130: Node v$43 = GNode.create("IndirectionExpression", v$42);
1131: Node v$44 = GNode.create("IndirectComponentSelection", v$43,
1132: "DeleteLocalRef");
1133: Node v$45 = GNode.create("PrimaryIdentifier", "env");
1134: Node v$46 = GNode.create("PrimaryIdentifier", "cls");
1135: Node v$47 = GNode.create("ExpressionList", v$45, v$46);
1136: Node v$48 = GNode.create("FunctionCall", v$44, v$47);
1137: Node v$49 = GNode.create("ExpressionStatement", v$48);
1138: Node v$50 = GNode.create("CompoundStatement", v$13, v$26, v$41,
1139: v$49, abruptFlowCheck, null);
1140: return v$50;
1141: }
1142:
1143: /**
1144: * Create a compound statement.
1145: *
1146: * @param name The name.
1147: * @param signature The signature.
1148: * @param apiFunction The apiFunction.
1149: * @param abruptFlowCheck The abruptFlowCheck.
1150: * @return The generic node.
1151: */
1152: public Node javaInCStatement64(Node name, Node signature,
1153: String apiFunction, Node abruptFlowCheck) {
1154: Node v$1 = GNode.create("TypedefName", "jclass");
1155: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
1156: Node v$3 = GNode.create("SimpleDeclarator", "cls");
1157: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1158: Node v$5 = GNode.create("IndirectionExpression", v$4);
1159: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1160: "GetObjectClass");
1161: Node v$7 = GNode.create("PrimaryIdentifier", "env");
1162: Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
1163: Node v$9 = GNode.create("ExpressionList", v$7, v$8);
1164: Node v$10 = GNode.create("FunctionCall", v$6, v$9);
1165: Node v$11 = GNode.create("InitializedDeclarator", null, v$3,
1166: null, null, v$10);
1167: Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
1168: Node v$13 = GNode.create("Declaration", null, v$2, v$12);
1169: Node v$14 = GNode.create("TypedefName", "jmethodID");
1170: Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
1171: Node v$16 = GNode.create("SimpleDeclarator", "mid");
1172: Node v$17 = GNode.create("PrimaryIdentifier", "env");
1173: Node v$18 = GNode.create("IndirectionExpression", v$17);
1174: Node v$19 = GNode.create("IndirectComponentSelection", v$18,
1175: "GetMethodID");
1176: Node v$20 = GNode.create("PrimaryIdentifier", "env");
1177: Node v$21 = GNode.create("PrimaryIdentifier", "cls");
1178: Node v$22 = GNode.create("ExpressionList", v$20, v$21, name,
1179: signature);
1180: Node v$23 = GNode.create("FunctionCall", v$19, v$22);
1181: Node v$24 = GNode.create("InitializedDeclarator", null, v$16,
1182: null, null, v$23);
1183: Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
1184: Node v$26 = GNode.create("Declaration", null, v$15, v$25);
1185: Node v$27 = GNode.create("PrimaryIdentifier", "env");
1186: Node v$28 = GNode.create("IndirectionExpression", v$27);
1187: Node v$29 = GNode.create("IndirectComponentSelection", v$28,
1188: apiFunction);
1189: Node v$30 = GNode.create("PrimaryIdentifier", "env");
1190: Node v$31 = GNode.create("PrimaryIdentifier", "jEnv");
1191: Node v$32 = GNode.create("PrimaryIdentifier", "cls");
1192: Node v$33 = GNode.create("PrimaryIdentifier", "mid");
1193: Node v$34 = GNode.create("TypedefName", "jlong");
1194: Node v$35 = GNode.create("SpecifierQualifierList", v$34);
1195: Node v$36 = GNode.create("TypeName", v$35, null);
1196: Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
1197: Node v$38 = GNode.create("CastExpression", v$36, v$37);
1198: Node v$39 = GNode.create("ExpressionList", v$30, v$31, v$32,
1199: v$33, v$38);
1200: Node v$40 = GNode.create("FunctionCall", v$29, v$39);
1201: Node v$41 = GNode.create("ExpressionStatement", v$40);
1202: Node v$42 = GNode.create("PrimaryIdentifier", "env");
1203: Node v$43 = GNode.create("IndirectionExpression", v$42);
1204: Node v$44 = GNode.create("IndirectComponentSelection", v$43,
1205: "DeleteLocalRef");
1206: Node v$45 = GNode.create("PrimaryIdentifier", "env");
1207: Node v$46 = GNode.create("PrimaryIdentifier", "cls");
1208: Node v$47 = GNode.create("ExpressionList", v$45, v$46);
1209: Node v$48 = GNode.create("FunctionCall", v$44, v$47);
1210: Node v$49 = GNode.create("ExpressionStatement", v$48);
1211: Node v$50 = GNode.create("CompoundStatement", v$13, v$26, v$41,
1212: v$49, abruptFlowCheck, null);
1213: return v$50;
1214: }
1215:
1216: /**
1217: * Create a statement as expression.
1218: *
1219: * @param apiFunction The apiFunction.
1220: * @param cString The cString.
1221: * @param abruptFlowCheck The abruptFlowCheck.
1222: * @return The generic node.
1223: */
1224: public Node newJavaString(String apiFunction, Node cString,
1225: Node abruptFlowCheck) {
1226: Node v$1 = GNode.create("TypedefName", "jstring");
1227: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
1228: Node v$3 = GNode.create("SimpleDeclarator", "tmp");
1229: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1230: Node v$5 = GNode.create("IndirectionExpression", v$4);
1231: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1232: apiFunction);
1233: Node v$7 = GNode.create("PrimaryIdentifier", "env");
1234: Node v$8 = GNode.create("ExpressionList", v$7, cString);
1235: Node v$9 = GNode.create("FunctionCall", v$6, v$8);
1236: Node v$10 = GNode.create("InitializedDeclarator", null, v$3,
1237: null, null, v$9);
1238: Node v$11 = GNode.create("InitializedDeclaratorList", v$10);
1239: Node v$12 = GNode.create("Declaration", null, v$2, v$11);
1240: Node v$13 = GNode.create("PrimaryIdentifier", "tmp");
1241: Node v$14 = GNode.create("ExpressionStatement", v$13);
1242: Node v$15 = GNode.create("CompoundStatement", v$12,
1243: abruptFlowCheck, v$14, null);
1244: Node v$16 = GNode.create("StatementAsExpression", v$15);
1245: return v$16;
1246: }
1247:
1248: /**
1249: * Create an expression statement.
1250: *
1251: * @param name The name.
1252: * @param value The value.
1253: * @return The generic node.
1254: */
1255: public Node setPCEnvField(String name, Node value) {
1256: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
1257: Node v$2 = GNode
1258: .create("IndirectComponentSelection", v$1, name);
1259: Node v$3 = GNode
1260: .create("AssignmentExpression", v$2, "=", value);
1261: Node v$4 = GNode.create("ExpressionStatement", v$3);
1262: return v$4;
1263: }
1264:
1265: /**
1266: * Create a function call.
1267: *
1268: * @param javaString The javaString.
1269: * @return The generic node.
1270: */
1271: public Node stringUTFLength1(Node javaString) {
1272: Node v$1 = GNode.create("PrimaryIdentifier", "env");
1273: Node v$2 = GNode.create("IndirectionExpression", v$1);
1274: Node v$3 = GNode.create("IndirectComponentSelection", v$2,
1275: "GetStringUTFLength");
1276: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1277: Node v$5 = GNode.create("ExpressionList", v$4, javaString);
1278: Node v$6 = GNode.create("FunctionCall", v$3, v$5);
1279: return v$6;
1280: }
1281:
1282: /**
1283: * Create a function call.
1284: *
1285: * @param javaString The javaString.
1286: * @param start The start.
1287: * @param length The length.
1288: * @return The generic node.
1289: */
1290: public Node stringUTFLength3(Node javaString, Node start,
1291: Node length) {
1292: Node v$1 = GNode
1293: .create("PrimaryIdentifier", "_stringUTFLength");
1294: Node v$2 = GNode.create("PrimaryIdentifier", "env");
1295: Node v$3 = GNode.create("ExpressionList", v$2, javaString,
1296: start, length);
1297: Node v$4 = GNode.create("FunctionCall", v$1, v$3);
1298: return v$4;
1299: }
1300:
1301: /**
1302: * Create a compound statement.
1303: *
1304: * @param result The result.
1305: * @param signature The signature.
1306: * @param apiFunction The apiFunction.
1307: * @param value The value.
1308: * @param abrupt The abrupt.
1309: * @param abruptFlowJump The abruptFlowJump.
1310: * @return The generic node.
1311: */
1312: public Node returnResult(Node result, Node signature,
1313: String apiFunction, Node value, Node abrupt,
1314: Node abruptFlowJump) {
1315: Node v$1 = GNode.create("TypedefName", "jclass");
1316: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
1317: Node v$3 = GNode.create("SimpleDeclarator", "cls");
1318: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1319: Node v$5 = GNode.create("IndirectionExpression", v$4);
1320: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1321: "GetObjectClass");
1322: Node v$7 = GNode.create("PrimaryIdentifier", "env");
1323: Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
1324: Node v$9 = GNode.create("ExpressionList", v$7, v$8);
1325: Node v$10 = GNode.create("FunctionCall", v$6, v$9);
1326: Node v$11 = GNode.create("InitializedDeclarator", null, v$3,
1327: null, null, v$10);
1328: Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
1329: Node v$13 = GNode.create("Declaration", null, v$2, v$12);
1330: Node v$14 = GNode.create("TypedefName", "jfieldID");
1331: Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
1332: Node v$16 = GNode.create("SimpleDeclarator", "fidResult");
1333: Node v$17 = GNode.create("PrimaryIdentifier", "env");
1334: Node v$18 = GNode.create("IndirectionExpression", v$17);
1335: Node v$19 = GNode.create("IndirectComponentSelection", v$18,
1336: "GetFieldID");
1337: Node v$20 = GNode.create("PrimaryIdentifier", "env");
1338: Node v$21 = GNode.create("PrimaryIdentifier", "cls");
1339: Node v$22 = GNode.create("ExpressionList", v$20, v$21, result,
1340: signature);
1341: Node v$23 = GNode.create("FunctionCall", v$19, v$22);
1342: Node v$24 = GNode.create("InitializedDeclarator", null, v$16,
1343: null, null, v$23);
1344: Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
1345: Node v$26 = GNode.create("Declaration", null, v$15, v$25);
1346: Node v$27 = GNode.create("PrimaryIdentifier", "env");
1347: Node v$28 = GNode.create("IndirectionExpression", v$27);
1348: Node v$29 = GNode.create("IndirectComponentSelection", v$28,
1349: apiFunction);
1350: Node v$30 = GNode.create("PrimaryIdentifier", "env");
1351: Node v$31 = GNode.create("PrimaryIdentifier", "jEnv");
1352: Node v$32 = GNode.create("PrimaryIdentifier", "fidResult");
1353: Node v$33 = GNode.create("ExpressionList", v$30, v$31, v$32,
1354: value);
1355: Node v$34 = GNode.create("FunctionCall", v$29, v$33);
1356: Node v$35 = GNode.create("ExpressionStatement", v$34);
1357: Node v$36 = GNode.create("TypedefName", "jfieldID");
1358: Node v$37 = GNode.create("DeclarationSpecifiers", v$36);
1359: Node v$38 = GNode.create("SimpleDeclarator", "fidAbrupt");
1360: Node v$39 = GNode.create("PrimaryIdentifier", "env");
1361: Node v$40 = GNode.create("IndirectionExpression", v$39);
1362: Node v$41 = GNode.create("IndirectComponentSelection", v$40,
1363: "GetFieldID");
1364: Node v$42 = GNode.create("PrimaryIdentifier", "env");
1365: Node v$43 = GNode.create("PrimaryIdentifier", "cls");
1366: Node v$44 = GNode.create("StringConstant", "\"Z\"");
1367: Node v$45 = GNode.create("ExpressionList", v$42, v$43, abrupt,
1368: v$44);
1369: Node v$46 = GNode.create("FunctionCall", v$41, v$45);
1370: Node v$47 = GNode.create("InitializedDeclarator", null, v$38,
1371: null, null, v$46);
1372: Node v$48 = GNode.create("InitializedDeclaratorList", v$47);
1373: Node v$49 = GNode.create("Declaration", null, v$37, v$48);
1374: Node v$50 = GNode.create("PrimaryIdentifier", "env");
1375: Node v$51 = GNode.create("IndirectionExpression", v$50);
1376: Node v$52 = GNode.create("IndirectComponentSelection", v$51,
1377: "SetBooleanField");
1378: Node v$53 = GNode.create("PrimaryIdentifier", "env");
1379: Node v$54 = GNode.create("PrimaryIdentifier", "jEnv");
1380: Node v$55 = GNode.create("PrimaryIdentifier", "fidAbrupt");
1381: Node v$56 = GNode.create("IntegerConstant", "1");
1382: Node v$57 = GNode.create("ExpressionList", v$53, v$54, v$55,
1383: v$56);
1384: Node v$58 = GNode.create("FunctionCall", v$52, v$57);
1385: Node v$59 = GNode.create("ExpressionStatement", v$58);
1386: Node v$60 = GNode.create("CompoundStatement", v$13, v$26, v$35,
1387: v$49, v$59, abruptFlowJump, null);
1388: return v$60;
1389: }
1390:
1391: /**
1392: * Create a compound statement.
1393: *
1394: * @param abrupt The abrupt.
1395: * @param abruptFlowJump The abruptFlowJump.
1396: * @return The generic node.
1397: */
1398: public Node returnVoid(Node abrupt, Node abruptFlowJump) {
1399: Node v$1 = GNode.create("TypedefName", "jclass");
1400: Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
1401: Node v$3 = GNode.create("SimpleDeclarator", "cls");
1402: Node v$4 = GNode.create("PrimaryIdentifier", "env");
1403: Node v$5 = GNode.create("IndirectionExpression", v$4);
1404: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1405: "GetObjectClass");
1406: Node v$7 = GNode.create("PrimaryIdentifier", "env");
1407: Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
1408: Node v$9 = GNode.create("ExpressionList", v$7, v$8);
1409: Node v$10 = GNode.create("FunctionCall", v$6, v$9);
1410: Node v$11 = GNode.create("InitializedDeclarator", null, v$3,
1411: null, null, v$10);
1412: Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
1413: Node v$13 = GNode.create("Declaration", null, v$2, v$12);
1414: Node v$14 = GNode.create("TypedefName", "jfieldID");
1415: Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
1416: Node v$16 = GNode.create("SimpleDeclarator", "fidAbrupt");
1417: Node v$17 = GNode.create("PrimaryIdentifier", "env");
1418: Node v$18 = GNode.create("IndirectionExpression", v$17);
1419: Node v$19 = GNode.create("IndirectComponentSelection", v$18,
1420: "GetFieldID");
1421: Node v$20 = GNode.create("PrimaryIdentifier", "env");
1422: Node v$21 = GNode.create("PrimaryIdentifier", "cls");
1423: Node v$22 = GNode.create("StringConstant", "\"Z\"");
1424: Node v$23 = GNode.create("ExpressionList", v$20, v$21, abrupt,
1425: v$22);
1426: Node v$24 = GNode.create("FunctionCall", v$19, v$23);
1427: Node v$25 = GNode.create("InitializedDeclarator", null, v$16,
1428: null, null, v$24);
1429: Node v$26 = GNode.create("InitializedDeclaratorList", v$25);
1430: Node v$27 = GNode.create("Declaration", null, v$15, v$26);
1431: Node v$28 = GNode.create("PrimaryIdentifier", "env");
1432: Node v$29 = GNode.create("IndirectionExpression", v$28);
1433: Node v$30 = GNode.create("IndirectComponentSelection", v$29,
1434: "SetBooleanField");
1435: Node v$31 = GNode.create("PrimaryIdentifier", "env");
1436: Node v$32 = GNode.create("PrimaryIdentifier", "jEnv");
1437: Node v$33 = GNode.create("PrimaryIdentifier", "fidAbrupt");
1438: Node v$34 = GNode.create("IntegerConstant", "1");
1439: Node v$35 = GNode.create("ExpressionList", v$31, v$32, v$33,
1440: v$34);
1441: Node v$36 = GNode.create("FunctionCall", v$30, v$35);
1442: Node v$37 = GNode.create("ExpressionStatement", v$36);
1443: Node v$38 = GNode.create("CompoundStatement", v$13, v$27, v$37,
1444: abruptFlowJump, null);
1445: return v$38;
1446: }
1447:
1448: /**
1449: * Create a compound statement.
1450: *
1451: * @param jaField The jaField.
1452: * @param init The init.
1453: * @param releaseAbrupt The releaseAbrupt.
1454: * @param caDecl The caDecl.
1455: * @param caField The caField.
1456: * @param getRegion The getRegion.
1457: * @param body The body.
1458: * @param label The label.
1459: * @param setRegion The setRegion.
1460: * @param abruptFlowCheck The abruptFlowCheck.
1461: * @return The generic node.
1462: */
1463: public Node withPrimitiveArray(String jaField, Node init,
1464: String releaseAbrupt, Node caDecl, String caField,
1465: String getRegion, Node body, String label,
1466: String setRegion, Node abruptFlowCheck) {
1467: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
1468: Node v$2 = GNode.create("IndirectComponentSelection", v$1,
1469: jaField);
1470: Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
1471: Node v$4 = GNode.create("ExpressionStatement", v$3);
1472: Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
1473: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1474: releaseAbrupt);
1475: Node v$7 = GNode.create("IntegerConstant", "0");
1476: Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
1477: Node v$9 = GNode.create("ExpressionStatement", v$8);
1478: Node v$10 = GNode.create("TypedefName", "jint");
1479: Node v$11 = GNode.create("DeclarationSpecifiers", v$10);
1480: Node v$12 = GNode.create("SimpleDeclarator", "length");
1481: Node v$13 = GNode.create("PrimaryIdentifier", "env");
1482: Node v$14 = GNode.create("IndirectionExpression", v$13);
1483: Node v$15 = GNode.create("IndirectComponentSelection", v$14,
1484: "GetArrayLength");
1485: Node v$16 = GNode.create("PrimaryIdentifier", "env");
1486: Node v$17 = GNode.create("PrimaryIdentifier", "pcEnv");
1487: Node v$18 = GNode.create("IndirectComponentSelection", v$17,
1488: jaField);
1489: Node v$19 = GNode.create("ExpressionList", v$16, v$18);
1490: Node v$20 = GNode.create("FunctionCall", v$15, v$19);
1491: Node v$21 = GNode.create("InitializedDeclarator", null, v$12,
1492: null, null, v$20);
1493: Node v$22 = GNode.create("InitializedDeclaratorList", v$21);
1494: Node v$23 = GNode.create("Declaration", null, v$11, v$22);
1495: Node v$24 = GNode.create("PrimaryIdentifier", "pcEnv");
1496: Node v$25 = GNode.create("IndirectComponentSelection", v$24,
1497: caField);
1498: Node v$26 = GNode.create("PrimaryIdentifier", "ca");
1499: Node v$27 = GNode.create("AssignmentExpression", v$25, "=",
1500: v$26);
1501: Node v$28 = GNode.create("ExpressionStatement", v$27);
1502: Node v$29 = GNode.create("PrimaryIdentifier", "env");
1503: Node v$30 = GNode.create("IndirectionExpression", v$29);
1504: Node v$31 = GNode.create("IndirectComponentSelection", v$30,
1505: getRegion);
1506: Node v$32 = GNode.create("PrimaryIdentifier", "env");
1507: Node v$33 = GNode.create("PrimaryIdentifier", "pcEnv");
1508: Node v$34 = GNode.create("IndirectComponentSelection", v$33,
1509: jaField);
1510: Node v$35 = GNode.create("IntegerConstant", "0");
1511: Node v$36 = GNode.create("PrimaryIdentifier", "length");
1512: Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
1513: Node v$38 = GNode.create("IndirectComponentSelection", v$37,
1514: caField);
1515: Node v$39 = GNode.create("ExpressionList", v$32, v$34, v$35,
1516: v$36, v$38);
1517: Node v$40 = GNode.create("FunctionCall", v$31, v$39);
1518: Node v$41 = GNode.create("ExpressionStatement", v$40);
1519: Node v$42 = GNode.create("PrimaryIdentifier", label);
1520: Node v$43 = GNode.create("GotoStatement", null, v$42);
1521: Node v$44 = GNode.create("NamedLabel", label, null);
1522: Node v$45 = GNode.create("IntegerConstant", "2");
1523: Node v$46 = GNode.create("PrimaryIdentifier", "pcEnv");
1524: Node v$47 = GNode.create("IndirectComponentSelection", v$46,
1525: releaseAbrupt);
1526: Node v$48 = GNode
1527: .create("EqualityExpression", v$45, "!=", v$47);
1528: Node v$49 = GNode.create("PrimaryIdentifier", "env");
1529: Node v$50 = GNode.create("IndirectionExpression", v$49);
1530: Node v$51 = GNode.create("IndirectComponentSelection", v$50,
1531: setRegion);
1532: Node v$52 = GNode.create("PrimaryIdentifier", "env");
1533: Node v$53 = GNode.create("PrimaryIdentifier", "pcEnv");
1534: Node v$54 = GNode.create("IndirectComponentSelection", v$53,
1535: jaField);
1536: Node v$55 = GNode.create("IntegerConstant", "0");
1537: Node v$56 = GNode.create("PrimaryIdentifier", "length");
1538: Node v$57 = GNode.create("PrimaryIdentifier", "pcEnv");
1539: Node v$58 = GNode.create("IndirectComponentSelection", v$57,
1540: caField);
1541: Node v$59 = GNode.create("ExpressionList", v$52, v$54, v$55,
1542: v$56, v$58);
1543: Node v$60 = GNode.create("FunctionCall", v$51, v$59);
1544: Node v$61 = GNode.create("ExpressionStatement", v$60);
1545: Node v$62 = GNode.create("IfStatement", v$48, v$61);
1546: Node v$63 = GNode.create("LabeledStatement", v$44, v$62);
1547: Node v$64 = GNode.create("CompoundStatement", v$23, caDecl,
1548: v$28, v$41, body, v$43, v$63, null);
1549: Node v$65 = GNode.create("CompoundStatement", v$4, v$9, v$64,
1550: abruptFlowCheck, null);
1551: return v$65;
1552: }
1553:
1554: /**
1555: * Create a compound statement.
1556: *
1557: * @param jaField The jaField.
1558: * @param init The init.
1559: * @param releaseAbrupt The releaseAbrupt.
1560: * @param caField The caField.
1561: * @param body The body.
1562: * @param label The label.
1563: * @param abruptFlowCheck The abruptFlowCheck.
1564: * @return The generic node.
1565: */
1566: public Node withReferenceArray(String jaField, Node init,
1567: String releaseAbrupt, String caField, Node body,
1568: String label, Node abruptFlowCheck) {
1569: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
1570: Node v$2 = GNode.create("IndirectComponentSelection", v$1,
1571: jaField);
1572: Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
1573: Node v$4 = GNode.create("ExpressionStatement", v$3);
1574: Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
1575: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1576: releaseAbrupt);
1577: Node v$7 = GNode.create("IntegerConstant", "0");
1578: Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
1579: Node v$9 = GNode.create("ExpressionStatement", v$8);
1580: Node v$10 = GNode.create("TypedefName", "jsize");
1581: Node v$11 = GNode.create("DeclarationSpecifiers", v$10);
1582: Node v$12 = GNode.create("SimpleDeclarator", "i");
1583: Node v$13 = GNode.create("InitializedDeclarator", null, v$12,
1584: null, null, null);
1585: Node v$14 = GNode.create("InitializedDeclaratorList", v$13);
1586: Node v$15 = GNode.create("Declaration", null, v$11, v$14);
1587: Node v$16 = GNode.create("TypedefName", "jint");
1588: Node v$17 = GNode.create("DeclarationSpecifiers", v$16);
1589: Node v$18 = GNode.create("SimpleDeclarator", "length");
1590: Node v$19 = GNode.create("PrimaryIdentifier", "env");
1591: Node v$20 = GNode.create("IndirectionExpression", v$19);
1592: Node v$21 = GNode.create("IndirectComponentSelection", v$20,
1593: "GetArrayLength");
1594: Node v$22 = GNode.create("PrimaryIdentifier", "env");
1595: Node v$23 = GNode.create("PrimaryIdentifier", "pcEnv");
1596: Node v$24 = GNode.create("IndirectComponentSelection", v$23,
1597: jaField);
1598: Node v$25 = GNode.create("ExpressionList", v$22, v$24);
1599: Node v$26 = GNode.create("FunctionCall", v$21, v$25);
1600: Node v$27 = GNode.create("InitializedDeclarator", null, v$18,
1601: null, null, v$26);
1602: Node v$28 = GNode.create("InitializedDeclaratorList", v$27);
1603: Node v$29 = GNode.create("Declaration", null, v$17, v$28);
1604: Node v$30 = GNode.create("TypedefName", "jobject");
1605: Node v$31 = GNode.create("DeclarationSpecifiers", v$30);
1606: Node v$32 = GNode.create("SimpleDeclarator", "ca");
1607: Node v$33 = GNode.create("ArrayQualifierList", false);
1608: Node v$34 = GNode.create("PrimaryIdentifier", "length");
1609: Node v$35 = GNode.create("ArrayDeclarator", v$32, v$33, v$34);
1610: Node v$36 = GNode.create("InitializedDeclarator", null, v$35,
1611: null, null, null);
1612: Node v$37 = GNode.create("InitializedDeclaratorList", v$36);
1613: Node v$38 = GNode.create("Declaration", null, v$31, v$37);
1614: Node v$39 = GNode.create("PrimaryIdentifier", "pcEnv");
1615: Node v$40 = GNode.create("IndirectComponentSelection", v$39,
1616: caField);
1617: Node v$41 = GNode.create("PrimaryIdentifier", "ca");
1618: Node v$42 = GNode.create("AssignmentExpression", v$40, "=",
1619: v$41);
1620: Node v$43 = GNode.create("ExpressionStatement", v$42);
1621: Node v$44 = GNode.create("PrimaryIdentifier", "i");
1622: Node v$45 = GNode.create("IntegerConstant", "0");
1623: Node v$46 = GNode.create("AssignmentExpression", v$44, "=",
1624: v$45);
1625: Node v$47 = GNode.create("PrimaryIdentifier", "i");
1626: Node v$48 = GNode.create("PrimaryIdentifier", "length");
1627: Node v$49 = GNode.create("RelationalExpression", v$47, "<",
1628: v$48);
1629: Node v$50 = GNode.create("PrimaryIdentifier", "i");
1630: Node v$51 = GNode.create("PostincrementExpression", v$50);
1631: Node v$52 = GNode.create("PrimaryIdentifier", "ca");
1632: Node v$53 = GNode.create("PrimaryIdentifier", "i");
1633: Node v$54 = GNode.create("SubscriptExpression", v$52, v$53);
1634: Node v$55 = GNode.create("PrimaryIdentifier", "env");
1635: Node v$56 = GNode.create("IndirectionExpression", v$55);
1636: Node v$57 = GNode.create("IndirectComponentSelection", v$56,
1637: "GetObjectArrayElement");
1638: Node v$58 = GNode.create("PrimaryIdentifier", "env");
1639: Node v$59 = GNode.create("PrimaryIdentifier", "pcEnv");
1640: Node v$60 = GNode.create("IndirectComponentSelection", v$59,
1641: jaField);
1642: Node v$61 = GNode.create("PrimaryIdentifier", "i");
1643: Node v$62 = GNode.create("ExpressionList", v$58, v$60, v$61);
1644: Node v$63 = GNode.create("FunctionCall", v$57, v$62);
1645: Node v$64 = GNode.create("AssignmentExpression", v$54, "=",
1646: v$63);
1647: Node v$65 = GNode.create("ExpressionStatement", v$64);
1648: Node v$66 = GNode
1649: .create("ForStatement", v$46, v$49, v$51, v$65);
1650: Node v$67 = GNode.create("PrimaryIdentifier", label);
1651: Node v$68 = GNode.create("GotoStatement", null, v$67);
1652: Node v$69 = GNode.create("NamedLabel", label, null);
1653: Node v$70 = GNode.create("IntegerConstant", "2");
1654: Node v$71 = GNode.create("PrimaryIdentifier", "pcEnv");
1655: Node v$72 = GNode.create("IndirectComponentSelection", v$71,
1656: releaseAbrupt);
1657: Node v$73 = GNode
1658: .create("EqualityExpression", v$70, "!=", v$72);
1659: Node v$74 = GNode.create("PrimaryIdentifier", "i");
1660: Node v$75 = GNode.create("IntegerConstant", "0");
1661: Node v$76 = GNode.create("AssignmentExpression", v$74, "=",
1662: v$75);
1663: Node v$77 = GNode.create("PrimaryIdentifier", "i");
1664: Node v$78 = GNode.create("PrimaryIdentifier", "length");
1665: Node v$79 = GNode.create("RelationalExpression", v$77, "<",
1666: v$78);
1667: Node v$80 = GNode.create("PrimaryIdentifier", "i");
1668: Node v$81 = GNode.create("PostincrementExpression", v$80);
1669: Node v$82 = GNode.create("PrimaryIdentifier", "env");
1670: Node v$83 = GNode.create("IndirectionExpression", v$82);
1671: Node v$84 = GNode.create("IndirectComponentSelection", v$83,
1672: "SetObjectArrayElement");
1673: Node v$85 = GNode.create("PrimaryIdentifier", "env");
1674: Node v$86 = GNode.create("PrimaryIdentifier", "pcEnv");
1675: Node v$87 = GNode.create("IndirectComponentSelection", v$86,
1676: jaField);
1677: Node v$88 = GNode.create("PrimaryIdentifier", "i");
1678: Node v$89 = GNode.create("PrimaryIdentifier", "ca");
1679: Node v$90 = GNode.create("PrimaryIdentifier", "i");
1680: Node v$91 = GNode.create("SubscriptExpression", v$89, v$90);
1681: Node v$92 = GNode.create("ExpressionList", v$85, v$87, v$88,
1682: v$91);
1683: Node v$93 = GNode.create("FunctionCall", v$84, v$92);
1684: Node v$94 = GNode.create("ExpressionStatement", v$93);
1685: Node v$95 = GNode.create("PrimaryIdentifier", "env");
1686: Node v$96 = GNode.create("IndirectionExpression", v$95);
1687: Node v$97 = GNode.create("IndirectComponentSelection", v$96,
1688: "ExceptionCheck");
1689: Node v$98 = GNode.create("PrimaryIdentifier", "env");
1690: Node v$99 = GNode.create("ExpressionList", v$98);
1691: Node v$100 = GNode.create("FunctionCall", v$97, v$99);
1692: Node v$101 = GNode.create("BreakStatement", false);
1693: Node v$102 = GNode.create("IfStatement", v$100, v$101);
1694: Node v$103 = GNode.create("CompoundStatement", v$94, v$102,
1695: null);
1696: Node v$104 = GNode.create("ForStatement", v$76, v$79, v$81,
1697: v$103);
1698: Node v$105 = GNode.create("IfStatement", v$73, v$104);
1699: Node v$106 = GNode.create("LabeledStatement", v$69, v$105);
1700: Node v$107 = GNode.create("CompoundStatement", 9).add(v$15)
1701: .add(v$29).add(v$38).add(v$43).add(v$66).add(body).add(
1702: v$68).add(v$106).add(null);
1703: Node v$108 = GNode.create("CompoundStatement", v$4, v$9, v$107,
1704: abruptFlowCheck, null);
1705: return v$108;
1706: }
1707:
1708: /**
1709: * Create a compound statement.
1710: *
1711: * @param jsField The jsField.
1712: * @param init The init.
1713: * @param releaseAbrupt The releaseAbrupt.
1714: * @param csField The csField.
1715: * @param body The body.
1716: * @param label The label.
1717: * @param abruptFlowCheck The abruptFlowCheck.
1718: * @return The generic node.
1719: */
1720: public Node withString(String jsField, Node init,
1721: String releaseAbrupt, String csField, Node body,
1722: String label, Node abruptFlowCheck) {
1723: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
1724: Node v$2 = GNode.create("IndirectComponentSelection", v$1,
1725: jsField);
1726: Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
1727: Node v$4 = GNode.create("ExpressionStatement", v$3);
1728: Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
1729: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1730: releaseAbrupt);
1731: Node v$7 = GNode.create("IntegerConstant", "0");
1732: Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
1733: Node v$9 = GNode.create("ExpressionStatement", v$8);
1734: Node v$10 = GNode.create("PrimaryIdentifier", "pcEnv");
1735: Node v$11 = GNode.create("IndirectComponentSelection", v$10,
1736: csField);
1737: Node v$12 = GNode.create("TypedefName", "jchar");
1738: Node v$13 = GNode.create("SpecifierQualifierList", v$12);
1739: Node v$14 = GNode.create("TypeQualifierList", false);
1740: Node v$15 = GNode.create("Pointer", v$14, null);
1741: Node v$16 = GNode.create("AbstractDeclarator", v$15, null);
1742: Node v$17 = GNode.create("TypeName", v$13, v$16);
1743: Node v$18 = GNode.create("PrimaryIdentifier", "env");
1744: Node v$19 = GNode.create("IndirectionExpression", v$18);
1745: Node v$20 = GNode.create("IndirectComponentSelection", v$19,
1746: "GetStringChars");
1747: Node v$21 = GNode.create("PrimaryIdentifier", "env");
1748: Node v$22 = GNode.create("PrimaryIdentifier", "pcEnv");
1749: Node v$23 = GNode.create("IndirectComponentSelection", v$22,
1750: jsField);
1751: Node v$24 = GNode.create("IntegerConstant", "0");
1752: Node v$25 = GNode.create("ExpressionList", v$21, v$23, v$24);
1753: Node v$26 = GNode.create("FunctionCall", v$20, v$25);
1754: Node v$27 = GNode.create("CastExpression", v$17, v$26);
1755: Node v$28 = GNode.create("AssignmentExpression", v$11, "=",
1756: v$27);
1757: Node v$29 = GNode.create("ExpressionStatement", v$28);
1758: Node v$30 = GNode.create("PrimaryIdentifier", label);
1759: Node v$31 = GNode.create("GotoStatement", null, v$30);
1760: Node v$32 = GNode.create("NamedLabel", label, null);
1761: Node v$33 = GNode.create("PrimaryIdentifier", "env");
1762: Node v$34 = GNode.create("IndirectionExpression", v$33);
1763: Node v$35 = GNode.create("IndirectComponentSelection", v$34,
1764: "ReleaseStringChars");
1765: Node v$36 = GNode.create("PrimaryIdentifier", "env");
1766: Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
1767: Node v$38 = GNode.create("IndirectComponentSelection", v$37,
1768: jsField);
1769: Node v$39 = GNode.create("PrimaryIdentifier", "pcEnv");
1770: Node v$40 = GNode.create("IndirectComponentSelection", v$39,
1771: csField);
1772: Node v$41 = GNode.create("ExpressionList", v$36, v$38, v$40);
1773: Node v$42 = GNode.create("FunctionCall", v$35, v$41);
1774: Node v$43 = GNode.create("ExpressionStatement", v$42);
1775: Node v$44 = GNode.create("LabeledStatement", v$32, v$43);
1776: Node v$45 = GNode.create("CompoundStatement", v$4, v$9, v$29,
1777: body, v$31, v$44, abruptFlowCheck, null);
1778: return v$45;
1779: }
1780:
1781: /**
1782: * Create a compound statement.
1783: *
1784: * @param jsField The jsField.
1785: * @param init The init.
1786: * @param releaseAbrupt The releaseAbrupt.
1787: * @param csField The csField.
1788: * @param body The body.
1789: * @param label The label.
1790: * @param abruptFlowCheck The abruptFlowCheck.
1791: * @return The generic node.
1792: */
1793: public Node withStringUTF(String jsField, Node init,
1794: String releaseAbrupt, String csField, Node body,
1795: String label, Node abruptFlowCheck) {
1796: Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
1797: Node v$2 = GNode.create("IndirectComponentSelection", v$1,
1798: jsField);
1799: Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
1800: Node v$4 = GNode.create("ExpressionStatement", v$3);
1801: Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
1802: Node v$6 = GNode.create("IndirectComponentSelection", v$5,
1803: releaseAbrupt);
1804: Node v$7 = GNode.create("IntegerConstant", "0");
1805: Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
1806: Node v$9 = GNode.create("ExpressionStatement", v$8);
1807: Node v$10 = GNode.create("PrimaryIdentifier", "pcEnv");
1808: Node v$11 = GNode.create("IndirectComponentSelection", v$10,
1809: csField);
1810: Node v$12 = GNode.create("TypedefName", "jbyte");
1811: Node v$13 = GNode.create("SpecifierQualifierList", v$12);
1812: Node v$14 = GNode.create("TypeQualifierList", false);
1813: Node v$15 = GNode.create("Pointer", v$14, null);
1814: Node v$16 = GNode.create("AbstractDeclarator", v$15, null);
1815: Node v$17 = GNode.create("TypeName", v$13, v$16);
1816: Node v$18 = GNode.create("PrimaryIdentifier", "env");
1817: Node v$19 = GNode.create("IndirectionExpression", v$18);
1818: Node v$20 = GNode.create("IndirectComponentSelection", v$19,
1819: "GetStringUTFChars");
1820: Node v$21 = GNode.create("PrimaryIdentifier", "env");
1821: Node v$22 = GNode.create("PrimaryIdentifier", "pcEnv");
1822: Node v$23 = GNode.create("IndirectComponentSelection", v$22,
1823: jsField);
1824: Node v$24 = GNode.create("IntegerConstant", "0");
1825: Node v$25 = GNode.create("ExpressionList", v$21, v$23, v$24);
1826: Node v$26 = GNode.create("FunctionCall", v$20, v$25);
1827: Node v$27 = GNode.create("CastExpression", v$17, v$26);
1828: Node v$28 = GNode.create("AssignmentExpression", v$11, "=",
1829: v$27);
1830: Node v$29 = GNode.create("ExpressionStatement", v$28);
1831: Node v$30 = GNode.create("NamedLabel", label, null);
1832: Node v$31 = GNode.create("PrimaryIdentifier", "env");
1833: Node v$32 = GNode.create("IndirectionExpression", v$31);
1834: Node v$33 = GNode.create("IndirectComponentSelection", v$32,
1835: "ReleaseStringUTFChars");
1836: Node v$34 = GNode.create("PrimaryIdentifier", "env");
1837: Node v$35 = GNode.create("PrimaryIdentifier", "pcEnv");
1838: Node v$36 = GNode.create("IndirectComponentSelection", v$35,
1839: jsField);
1840: Node v$37 = GNode.create("Char", false);
1841: Node v$38 = GNode.create("SpecifierQualifierList", v$37);
1842: Node v$39 = GNode.create("TypeQualifierList", false);
1843: Node v$40 = GNode.create("Pointer", v$39, null);
1844: Node v$41 = GNode.create("AbstractDeclarator", v$40, null);
1845: Node v$42 = GNode.create("TypeName", v$38, v$41);
1846: Node v$43 = GNode.create("PrimaryIdentifier", "pcEnv");
1847: Node v$44 = GNode.create("IndirectComponentSelection", v$43,
1848: csField);
1849: Node v$45 = GNode.create("CastExpression", v$42, v$44);
1850: Node v$46 = GNode.create("ExpressionList", v$34, v$36, v$45);
1851: Node v$47 = GNode.create("FunctionCall", v$33, v$46);
1852: Node v$48 = GNode.create("ExpressionStatement", v$47);
1853: Node v$49 = GNode.create("LabeledStatement", v$30, v$48);
1854: Node v$50 = GNode.create("CompoundStatement", v$4, v$9, v$29,
1855: body, v$49, abruptFlowCheck, null);
1856: return v$50;
1857: }
1858:
1859: }
|