diff --git a/bwapi_bridge.dll b/bwapi_bridge.dll
index c8329c6..5920353 100644
Binary files a/bwapi_bridge.dll and b/bwapi_bridge.dll differ
diff --git a/bwapi_bridge.exp b/bwapi_bridge.exp
index 031deac..198662d 100644
Binary files a/bwapi_bridge.exp and b/bwapi_bridge.exp differ
diff --git a/bwapi_bridge.lib b/bwapi_bridge.lib
index d31700b..64928e0 100644
Binary files a/bwapi_bridge.lib and b/bwapi_bridge.lib differ
diff --git a/bwmirror_v1_0.jar b/bwmirror_v1_0.jar
index b359f9f..9569bc0 100644
Binary files a/bwmirror_v1_0.jar and b/bwmirror_v1_0.jar differ
diff --git a/bwta/BWTA.java b/bwta/BWTA.java
new file mode 100644
index 0000000..3816944
--- /dev/null
+++ b/bwta/BWTA.java
@@ -0,0 +1,158 @@
+package bwta;
+
+import bwta.*;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Collection;
+import java.util.List;
+import bwapi.Position;
+import bwapi.TilePosition;
+import bwapi.Player;
+
+/**
+BWTA class wraps the functionality of BWTA library
+
+*/
+public class BWTA {
+
+/**
+Reads the contents of the map in to BWTA. This was added so analyze() can be executed in another thread.
+
+*/
+ public static native void readMap();
+
+/**
+Before any other global functions can be called, the map must first be analyzed. Analyzing a starcraft map can take a long time, depending on your computer, so BWTA also automatically saves the results to a file when it is done. When you call analyze on the same map, BWTA will see that the results file for that map already exists, and load the results from file, rather than re-analyze the map.
+
+*/
+ public static native void analyze();
+
+/**
+Returns the set of regions in the map.
+
+*/
+ public static native List getRegions();
+
+/**
+Returns the set of chokepoints in the map.
+
+*/
+ public static native List getChokepoints();
+
+/**
+Returns the set of base locations on the map.
+
+*/
+ public static native List getBaseLocations();
+
+/**
+Returns the set of base locations that are start locations.
+
+*/
+ public static native List getStartLocations();
+
+/**
+Returns the set of unwalkable polygons.
+
+*/
+ public static native List getUnwalkablePolygons();
+
+/**
+Given a pointer to a Player object, this function returns a pointer to the player's starting base location.
+
+*/
+ public static native BaseLocation getStartLocation(Player player);
+
+/**
+Returns the region that the tile position is inside. Returns NULL if the tile position is not inside any valid region.
+
+*/
+ public static native Region getRegion(int x, int y);
+
+/**
+Returns the region that the tile position is inside. Returns NULL if the tile position is not inside any valid region.
+
+*/
+ public static native Region getRegion(TilePosition tileposition);
+
+/**
+Returns the region that the tile position is inside. Returns NULL if the tile position is not inside any valid region.
+
+*/
+ public static native Region getRegion(Position position);
+
+/**
+Returns the nearest chokepoint (in ground/walking distance). Returns NULL if no chokepoint is reachable from the given tile position (such as in an island component with no chokepoints). The Position version of this function has walk tile accuracy, while the other two have build tile accuracy.
+
+*/
+ public static native Chokepoint getNearestChokepoint(int x, int y);
+
+/**
+Returns the nearest chokepoint (in ground/walking distance). Returns NULL if no chokepoint is reachable from the given tile position (such as in an island component with no chokepoints). The Position version of this function has walk tile accuracy, while the other two have build tile accuracy.
+
+*/
+ public static native Chokepoint getNearestChokepoint(TilePosition tileposition);
+
+/**
+Returns the nearest chokepoint (in ground/walking distance). Returns NULL if no chokepoint is reachable from the given tile position (such as in an island component with no chokepoints). The Position version of this function has walk tile accuracy, while the other two have build tile accuracy.
+
+*/
+ public static native Chokepoint getNearestChokepoint(Position position);
+
+/**
+Returns the nearest base location(in ground/walking distance). Returns NULL if no base location is reachable from the given tile position. The Position version of this function has walk tile accuracy, while the other two have build tile accuracy.
+
+*/
+ public static native BaseLocation getNearestBaseLocation(int x, int y);
+
+/**
+Returns the nearest base location(in ground/walking distance). Returns NULL if no base location is reachable from the given tile position. The Position version of this function has walk tile accuracy, while the other two have build tile accuracy.
+
+*/
+ public static native BaseLocation getNearestBaseLocation(TilePosition tileposition);
+
+/**
+Returns the nearest base location(in ground/walking distance). Returns NULL if no base location is reachable from the given tile position. The Position version of this function has walk tile accuracy, while the other two have build tile accuracy.
+
+*/
+ public static native BaseLocation getNearestBaseLocation(Position position);
+
+/**
+Returns the nearest unwalkable polygon. Note: The border of the map is not considered an unwalkable polygon.
+
+*/
+ public static native Polygon getNearestUnwalkablePolygon(int x, int y);
+
+/**
+Returns the nearest unwalkable polygon. Note: The border of the map is not considered an unwalkable polygon.
+
+*/
+ public static native Polygon getNearestUnwalkablePolygon(TilePosition tileposition);
+
+/**
+Returns the nearest position that is on the boundary of an unwalkable polygon, or border of the map.
+
+*/
+ public static native Position getNearestUnwalkablePosition(Position position);
+
+/**
+Returns true if there exists a static path between the two given tile positions.
+
+*/
+ public static native boolean isConnected(int x1, int y1, int x2, int y2);
+
+/**
+Returns true if there exists a static path between the two given tile positions.
+
+*/
+ public static native boolean isConnected(TilePosition a, TilePosition b);
+
+/**
+Returns the ground distance between the two given tile positions.
+
+*/
+ public static native double getGroundDistance(TilePosition start, TilePosition end);
+
+
+}
diff --git a/c/impl.cpp b/c/impl.cpp
index 6bb230e..401b855 100644
--- a/c/impl.cpp
+++ b/c/impl.cpp
@@ -3389,6 +3389,188 @@ JNIEXPORT jboolean JNICALL Java_bwta_BaseLocation_isStartLocation_1native(JNIEnv
BWTA::BaseLocation* x_baseLocation = (BWTA::BaseLocation*)pointer;
return x_baseLocation->isStartLocation();
}
+JNIEXPORT void JNICALL Java_bwta_BWTA_readMap(JNIEnv * env, jclass jclz){
+BWTA::readMap();
+}
+JNIEXPORT void JNICALL Java_bwta_BWTA_analyze(JNIEnv * env, jclass jclz){
+BWTA::analyze();
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getRegions(JNIEnv * env, jclass jclz){
+std::set cresult = BWTA::getRegions();
+jclass listCls = FindCachedClass(env, "java/util/ArrayList");
+jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V");
+jobject result = env->NewObject(listCls, listConsID);
+jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z");
+jclass elemClass = FindCachedClass(env, "bwta/Region");
+jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwta/Region;");
+for(std::set::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){
+const BWTA::Region* elem_ptr = *it;
+jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ;
+env->CallVoidMethod(result, addMethodID, elem);
+}
+return result;
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getChokepoints(JNIEnv * env, jclass jclz){
+std::set cresult = BWTA::getChokepoints();
+jclass listCls = FindCachedClass(env, "java/util/ArrayList");
+jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V");
+jobject result = env->NewObject(listCls, listConsID);
+jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z");
+jclass elemClass = FindCachedClass(env, "bwta/Chokepoint");
+jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwta/Chokepoint;");
+for(std::set::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){
+const BWTA::Chokepoint* elem_ptr = *it;
+jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ;
+env->CallVoidMethod(result, addMethodID, elem);
+}
+return result;
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getBaseLocations(JNIEnv * env, jclass jclz){
+std::set cresult = BWTA::getBaseLocations();
+jclass listCls = FindCachedClass(env, "java/util/ArrayList");
+jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V");
+jobject result = env->NewObject(listCls, listConsID);
+jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z");
+jclass elemClass = FindCachedClass(env, "bwta/BaseLocation");
+jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwta/BaseLocation;");
+for(std::set::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){
+const BWTA::BaseLocation* elem_ptr = *it;
+jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ;
+env->CallVoidMethod(result, addMethodID, elem);
+}
+return result;
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getStartLocations(JNIEnv * env, jclass jclz){
+std::set cresult = BWTA::getStartLocations();
+jclass listCls = FindCachedClass(env, "java/util/ArrayList");
+jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V");
+jobject result = env->NewObject(listCls, listConsID);
+jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z");
+jclass elemClass = FindCachedClass(env, "bwta/BaseLocation");
+jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwta/BaseLocation;");
+for(std::set::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){
+const BWTA::BaseLocation* elem_ptr = *it;
+jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ;
+env->CallVoidMethod(result, addMethodID, elem);
+}
+return result;
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getUnwalkablePolygons(JNIEnv * env, jclass jclz){
+std::set cresult = BWTA::getUnwalkablePolygons();
+jclass listCls = FindCachedClass(env, "java/util/ArrayList");
+jmethodID listConsID = FindCachedMethod(env, listCls, "", "()V");
+jobject result = env->NewObject(listCls, listConsID);
+jmethodID addMethodID = FindCachedMethod(env, listCls, "add", "(Ljava/lang/Object;)Z");
+jclass elemClass = FindCachedClass(env, "bwta/Polygon");
+jmethodID getMethodID = FindCachedMethodStatic(env, elemClass, "get", "(J)Lbwta/Polygon;");
+for(std::set::const_iterator it = cresult.begin(); it != cresult.end(); it++ ){
+const BWTA::Polygon* elem_ptr = *it;
+jobject elem = env->CallStaticObjectMethod(elemClass, getMethodID, (long)elem_ptr) ;
+env->CallVoidMethod(result, addMethodID, elem);
+}
+return result;
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getStartLocation(JNIEnv * env, jclass jclz, jobject p_player){
+Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J"));
+jlong resptr = (jlong)BWTA::getStartLocation(player);
+jclass retcls = FindCachedClass(env, "bwta/BaseLocation");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/BaseLocation;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getRegion__II(JNIEnv * env, jclass jclz, jint x, jint y){
+jlong resptr = (jlong)BWTA::getRegion(x, y);
+jclass retcls = FindCachedClass(env, "bwta/Region");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Region;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getRegion__Lbwapi_TilePosition_2(JNIEnv * env, jclass jclz, jobject p_tileposition){
+TilePosition tileposition((int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "x", "I")), (int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "y", "I")));
+jlong resptr = (jlong)BWTA::getRegion(tileposition);
+jclass retcls = FindCachedClass(env, "bwta/Region");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Region;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getRegion__Lbwapi_Position_2(JNIEnv * env, jclass jclz, jobject p_position){
+Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I")));
+jlong resptr = (jlong)BWTA::getRegion(position);
+jclass retcls = FindCachedClass(env, "bwta/Region");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Region;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestChokepoint__II(JNIEnv * env, jclass jclz, jint x, jint y){
+jlong resptr = (jlong)BWTA::getNearestChokepoint(x, y);
+jclass retcls = FindCachedClass(env, "bwta/Chokepoint");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Chokepoint;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestChokepoint__Lbwapi_TilePosition_2(JNIEnv * env, jclass jclz, jobject p_tileposition){
+TilePosition tileposition((int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "x", "I")), (int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "y", "I")));
+jlong resptr = (jlong)BWTA::getNearestChokepoint(tileposition);
+jclass retcls = FindCachedClass(env, "bwta/Chokepoint");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Chokepoint;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestChokepoint__Lbwapi_Position_2(JNIEnv * env, jclass jclz, jobject p_position){
+Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I")));
+jlong resptr = (jlong)BWTA::getNearestChokepoint(position);
+jclass retcls = FindCachedClass(env, "bwta/Chokepoint");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Chokepoint;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestBaseLocation__II(JNIEnv * env, jclass jclz, jint x, jint y){
+jlong resptr = (jlong)BWTA::getNearestBaseLocation(x, y);
+jclass retcls = FindCachedClass(env, "bwta/BaseLocation");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/BaseLocation;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestBaseLocation__Lbwapi_TilePosition_2(JNIEnv * env, jclass jclz, jobject p_tileposition){
+TilePosition tileposition((int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "x", "I")), (int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "y", "I")));
+jlong resptr = (jlong)BWTA::getNearestBaseLocation(tileposition);
+jclass retcls = FindCachedClass(env, "bwta/BaseLocation");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/BaseLocation;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestBaseLocation__Lbwapi_Position_2(JNIEnv * env, jclass jclz, jobject p_position){
+Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I")));
+jlong resptr = (jlong)BWTA::getNearestBaseLocation(position);
+jclass retcls = FindCachedClass(env, "bwta/BaseLocation");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/BaseLocation;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestUnwalkablePolygon__II(JNIEnv * env, jclass jclz, jint x, jint y){
+jlong resptr = (jlong)BWTA::getNearestUnwalkablePolygon(x, y);
+jclass retcls = FindCachedClass(env, "bwta/Polygon");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Polygon;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestUnwalkablePolygon__Lbwapi_TilePosition_2(JNIEnv * env, jclass jclz, jobject p_tileposition){
+TilePosition tileposition((int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "x", "I")), (int)env->GetIntField(p_tileposition, FindCachedField(env, env->GetObjectClass(p_tileposition), "y", "I")));
+jlong resptr = (jlong)BWTA::getNearestUnwalkablePolygon(tileposition);
+jclass retcls = FindCachedClass(env, "bwta/Polygon");
+jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwta/Polygon;");
+return env->CallStaticObjectMethod(retcls, mid, resptr);
+}
+JNIEXPORT jobject JNICALL Java_bwta_BWTA_getNearestUnwalkablePosition(JNIEnv * env, jclass jclz, jobject p_position){
+Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I")));
+Position cresult = BWTA::getNearestUnwalkablePosition(position);
+jclass retcls = FindCachedClass(env, "bwapi/Position");
+jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V");
+jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y());
+return result;
+}
+JNIEXPORT jboolean JNICALL Java_bwta_BWTA_isConnected__IIII(JNIEnv * env, jclass jclz, jint x1, jint y1, jint x2, jint y2){
+return BWTA::isConnected(x1, y1, x2, y2);
+}
+JNIEXPORT jboolean JNICALL Java_bwta_BWTA_isConnected__Lbwapi_TilePosition_2Lbwapi_TilePosition_2(JNIEnv * env, jclass jclz, jobject p_a, jobject p_b){
+TilePosition a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I")));
+TilePosition b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I")));
+return BWTA::isConnected(a, b);
+}
+JNIEXPORT jdouble JNICALL Java_bwta_BWTA_getGroundDistance(JNIEnv * env, jclass jclz, jobject p_start, jobject p_end){
+TilePosition start((int)env->GetIntField(p_start, FindCachedField(env, env->GetObjectClass(p_start), "x", "I")), (int)env->GetIntField(p_start, FindCachedField(env, env->GetObjectClass(p_start), "y", "I")));
+TilePosition end((int)env->GetIntField(p_end, FindCachedField(env, env->GetObjectClass(p_end), "x", "I")), (int)env->GetIntField(p_end, FindCachedField(env, env->GetObjectClass(p_end), "y", "I")));
+return BWTA::getGroundDistance(start, end);
+}
JNIEXPORT jobject JNICALL Java_bwta_Chokepoint_getCenter_1native(JNIEnv * env, jobject obj, jlong pointer){
BWTA::Chokepoint* x_chokepoint = (BWTA::Chokepoint*)pointer;
Position cresult = x_chokepoint->getCenter();
diff --git a/out/production/InvokeGenerator/Main.class b/out/production/InvokeGenerator/Main.class
deleted file mode 100644
index 98219f1..0000000
Binary files a/out/production/InvokeGenerator/Main.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/ccalls/CallImplementer.class b/out/production/InvokeGenerator/ccalls/CallImplementer.class
deleted file mode 100644
index 9978e79..0000000
Binary files a/out/production/InvokeGenerator/ccalls/CallImplementer.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline$1.class b/out/production/InvokeGenerator/generator/CJavaPipeline$1.class
index 6906524..90c8149 100644
Binary files a/out/production/InvokeGenerator/generator/CJavaPipeline$1.class and b/out/production/InvokeGenerator/generator/CJavaPipeline$1.class differ
diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline$2.class b/out/production/InvokeGenerator/generator/CJavaPipeline$2.class
index 08f53ec..34f7170 100644
Binary files a/out/production/InvokeGenerator/generator/CJavaPipeline$2.class and b/out/production/InvokeGenerator/generator/CJavaPipeline$2.class differ
diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline.class b/out/production/InvokeGenerator/generator/CJavaPipeline.class
index 625296f..ee295d4 100644
Binary files a/out/production/InvokeGenerator/generator/CJavaPipeline.class and b/out/production/InvokeGenerator/generator/CJavaPipeline.class differ
diff --git a/out/production/InvokeGenerator/generator/Generator.class b/out/production/InvokeGenerator/generator/Generator.class
index c71a805..4ed5c74 100644
Binary files a/out/production/InvokeGenerator/generator/Generator.class and b/out/production/InvokeGenerator/generator/Generator.class differ
diff --git a/out/production/InvokeGenerator/generator/JavaHContext.class b/out/production/InvokeGenerator/generator/JavaContext.class
similarity index 80%
rename from out/production/InvokeGenerator/generator/JavaHContext.class
rename to out/production/InvokeGenerator/generator/JavaContext.class
index 11e2d59..ff6bf79 100644
Binary files a/out/production/InvokeGenerator/generator/JavaHContext.class and b/out/production/InvokeGenerator/generator/JavaContext.class differ
diff --git a/out/production/InvokeGenerator/generator/ccalls/CallImplementer.class b/out/production/InvokeGenerator/generator/ccalls/CallImplementer.class
new file mode 100644
index 0000000..4ac35cd
Binary files /dev/null and b/out/production/InvokeGenerator/generator/ccalls/CallImplementer.class differ
diff --git a/out/production/InvokeGenerator/impl/CApiParser$1.class b/out/production/InvokeGenerator/impl/CApiParser$1.class
index bf41f7e..b67532a 100644
Binary files a/out/production/InvokeGenerator/impl/CApiParser$1.class and b/out/production/InvokeGenerator/impl/CApiParser$1.class differ
diff --git a/out/production/InvokeGenerator/impl/CApiParser.class b/out/production/InvokeGenerator/impl/CApiParser.class
index 1509754..da27459 100644
Binary files a/out/production/InvokeGenerator/impl/CApiParser.class and b/out/production/InvokeGenerator/impl/CApiParser.class differ
diff --git a/out/production/InvokeGenerator/runner/Runner$1.class b/out/production/InvokeGenerator/runner/Runner$1.class
deleted file mode 100644
index 6574559..0000000
Binary files a/out/production/InvokeGenerator/runner/Runner$1.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/runner/Runner.class b/out/production/InvokeGenerator/runner/Runner.class
deleted file mode 100644
index a8acd03..0000000
Binary files a/out/production/InvokeGenerator/runner/Runner.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/CallTest.class b/out/production/InvokeGenerator/test/CallTest.class
deleted file mode 100644
index 2a1f33d..0000000
Binary files a/out/production/InvokeGenerator/test/CallTest.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/HeaderTest.class b/out/production/InvokeGenerator/test/HeaderTest.class
deleted file mode 100644
index 472b56c..0000000
Binary files a/out/production/InvokeGenerator/test/HeaderTest.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/NativeTest.class b/out/production/InvokeGenerator/test/NativeTest.class
deleted file mode 100644
index bcda513..0000000
Binary files a/out/production/InvokeGenerator/test/NativeTest.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/SampleCClass.class b/out/production/InvokeGenerator/test/SampleCClass.class
deleted file mode 100644
index 71ce006..0000000
Binary files a/out/production/InvokeGenerator/test/SampleCClass.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/SampleMethod.class b/out/production/InvokeGenerator/test/SampleMethod.class
deleted file mode 100644
index f7731f8..0000000
Binary files a/out/production/InvokeGenerator/test/SampleMethod.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/SampleTest1.class b/out/production/InvokeGenerator/test/SampleTest1.class
deleted file mode 100644
index 60350bf..0000000
Binary files a/out/production/InvokeGenerator/test/SampleTest1.class and /dev/null differ
diff --git a/out/production/InvokeGenerator/test/TestBWMaster.class b/out/production/InvokeGenerator/test/TestBWMaster.class
deleted file mode 100644
index d03e3c7..0000000
Binary files a/out/production/InvokeGenerator/test/TestBWMaster.class and /dev/null differ
diff --git a/src/generator/CJavaPipeline.java b/src/generator/CJavaPipeline.java
index a4b7ff1..8f5f96e 100644
--- a/src/generator/CJavaPipeline.java
+++ b/src/generator/CJavaPipeline.java
@@ -235,6 +235,7 @@ public class CJavaPipeline {
Properties props = new Properties();
props.put(COMPILE_DIR_PROPERTY, "compiled");
props.put(HEADERS_DIR_PROPERTY, "headers");
+ props.put(C_IMPLEMENTATION_FILE_PROPERTY, "c/impl.cpp");
new CJavaPipeline().run(new PackageProcessOptions[]{bwapiOptions, bwtaOptions}, props);
@@ -242,6 +243,6 @@ public class CJavaPipeline {
private static final String COMPILE_DIR_PROPERTY = "compiled_dir";
private static final String HEADERS_DIR_PROPERTY = "headers_dir";
- private static final String C_IMPLEMENTATION_FILE_PROPERTY = "c/impl.cpp";
+ private static final String C_IMPLEMENTATION_FILE_PROPERTY = "impl_file";
}
diff --git a/src/impl/CApiParser.java b/src/impl/CApiParser.java
index fb75662..8d64942 100644
--- a/src/impl/CApiParser.java
+++ b/src/impl/CApiParser.java
@@ -64,6 +64,7 @@ public class CApiParser {
public void setGlobalClass(CClass globalClass) {
this.globalClass = globalClass;
+ declarations.add(globalClass);
}
private String javadoc = null;