if (!function_exists('file_put_contents')) {
function file_put_contents($filename, $data, $respect_lock = true) {
// Open the file for writing
$fh = @fopen($filename, 'w');
if ($fh === false) {
return false;
}
// Check to see if we want to make sure the file is locked before we write to it
if ($respect_lock === true && !flock($fh, LOCK_EX)) {
fclose($fh);
return false;
}
// Convert the data to an acceptable string format
if (is_array($data)) {
$data = implode('', $data);
} else {
$data = (string) $data;
}
// Write the data to the file and close it
$bytes = fwrite($fh, $data);
// This will implicitly unlock the file if it's locked
fclose($fh);
return $bytes;
}
}
function remove_extension($strName) {
$ext = strrchr($strName, '.');
if($ext !== false) {
$strName = substr($strName, 0, -strlen($ext));
}
return $strName;
}
function enable_sources($path_to_jar,$name_jar,$file_name) {
$whoami=shell_exec("whoami");
$whoami=rtrim($whoami);
$whoami=ltrim($whoami);
$tmp_dir="/tmp/costa-".$whoami."/web";
$command="cp $path_to_jar $tmp_dir ; chmod a+rwx ".$tmp_dir."/".$name_jar."; cd $tmp_dir ; jar -xf $name_jar $file_name.class; chmod -R a+rwx $tmp_dir";
shell_exec($command);
}
function methods($file_name,$context,$edition) {
if (substr_count($file_name, 'net/datastructures/')==1) {
$netdatastruc_jar="net-datastructures-3-0.jar";
$pathnet_jar="../../../../../../costa-extra/Test_Programs/net/datastructures/".$netdatastruc_jar;
enable_sources($pathnet_jar,$netdatastruc_jar,$file_name);
}
if (substr_count($file_name, 'conditional')==1) {
$conditional_jar="conditional.jar";
$pathconditional_jar="../../../../../../costa-extra/Test_Programs/conditional/".$conditional_jar;
enable_sources($pathconditional_jar,$conditional_jar,$file_name);
}
if (substr_count($file_name, 'memory')==1) {
$memory_jar="memory.jar";
$pathmemory_jar="../../../../../../costa-extra/Test_Programs/memory/".$memory_jar;
enable_sources($pathmemory_jar,$memory_jar,$file_name);
}
if (substr_count($file_name, 'midp')==1) {
$midp_jar="midp.jar";
$pathmidp_jar="../../../../../../costa-extra/Test_Programs/midp/".$midp_jar;
enable_sources($pathmidp_jar,$midp_jar,$file_name);
}
if ($edition=='phoneME') {
$phoneme_jar="phoneme.jar";
$pathphoneme_jar="../../../../../../costa-extra/Test_Programs/phoneME/".$phoneme_jar;
enable_sources($pathphoneme_jar,$phoneme_jar,$file_name);
}
if (substr_count($file_name, 'series')==1) {
$series_jar="series.jar";
$pathseries_jar="../../../../../../costa-extra/Test_Programs/series/".$series_jar;
enable_sources($pathseries_jar,$series_jar,$file_name);
}
if
(file_exists("/tmp/costa-www-data/web/".$file_name.".class")||file_exists("../../../../../examples/".$file_name.".class"))
{
shell_exec("cd ../../../../../examples; chmod a+rx -R . ");
$execute="chmod a+rwx ./get_methods.pl; ./get_methods.pl '".$file_name."'";
$show_methods=shell_exec($execute); /////list of methods in class
if ($show_methods!="") {
$list=htmlentities($show_methods);
show_methods($list,$context,$file_name);
}
} else {
echo " WARNING: Compilation error, verify your source file
";
die("Please click 'back' on your browser.");
}
}
function show_methods($list,$context,$file_name) {
$acm=substr_count($list,'main([Ljava/lang/String;)V');
$acm_cmd=substr_count($list,'commandAction(Ljavax/microedition/lcdui/Command;Ljavax/microedition/lcdui/Displayable;)V');
if(substr_count($list,',')>0) {
$method_signature=explode(',',$list);
}else {
$method_signature=explode(" ",$list);
}
$limit=count($method_signature);
if ($limit>1) {
$limit=$limit-1;
}
if ($acm == 1 || $acm_cmd == 1) { // there is a main or cmdAction
for($i=0; $i < $limit; $i ++) { // bubble
if(substr_count($method_signature[$i],'main([Ljava/lang/String;)V')==1 || substr_count($method_signature[$i],'commandAction(Ljavax/microedition/lcdui/Command;Ljavax/microedition/lcdui/Displayable;)V')==1) {
$aux=$method_signature[0];
$method_signature[0]=$method_signature[$i];
$method_signature[$i]=$aux;
}
}
if (substr_count($file_name,'x10') != 1){
?> or Select All " ";
}
echo " ";
for($i=0; $i < $limit; $i ++) {
$method_sign=htmlentities($method_signature[$i]);
if($i==0) {
//if(substr_count($method_sign,'main([Ljava/lang/String;)V')==1 || substr_count($method_sign,'commandAction(Ljavax/microedition/lcdui/Command;Ljavax/microedition/lcdui/Displayable;)V')==1){
//echo " $method_signature[$i]"." ";
echo " $method_signature[$i]"." ";
} else {
echo " $method_signature[$i] "." ";
}
}
if($context!="") {
$size=strlen($context);
echo "
package memory.jolden.bh;
/**
* A class representing a three dimensional vector that implements
* several math operations. To improve speed we implement the
* vector as an array of doubles rather than use the exising
* code in the java.util.Vector class.
**/
class MathVector implements Cloneable
{
/**
* The number of dimensions in the vector
**/
public final static int NDIM = 3;
/**
* An array containing the values in the vector.
**/
private double data[];
/**
* Construct an empty 3 dimensional vector for use in Barnes-Hut algorithm.
**/
MathVector()
{
data = new double[NDIM];
for (int i=0; i < NDIM; i++) {
data[i] = 0.0;
}
}
MathVector(double[] d){
data = d;
}
/**
* Create a copy of the vector.
* @return a clone of the math vector
**/
/*
public Object clone()
{
try {
MathVector v = (MathVector)super.clone();
v.data = new double[NDIM];
for (int i = 0; i < NDIM; i++)
v.data[i] = data[i];
return v;
} catch (CloneNotSupportedException e) {
throw new Error();
}
}
*/
/**
* Create a copy of the vector.
* @return a clone of the math vector
**/
public Object clone(){
//MathVector v = new MathVector();
double[] d = new double[NDIM];
for (int i = 0; i < NDIM; i++)
d[i] = data[i];
return new MathVector(d);
//return v;
}
/**
* Return the value at the i'th index of the vector.
* @param i the vector index
* @return the value at the i'th index of the vector.
**/
final double value(int i)
{
return data[i];
}
/**
* Set the value of the i'th index of the vector.
* @param i the vector index
* @param v the value to store
**/
final void value(int i, double v)
{
data[i] = v;
}
/**
* Set one of the dimensions of the vector to 1.0
* param j the dimension to set.
**/
final void unit(int j)
{
for (int i=0; i < NDIM; i++) {
data[i] = (i == j ? 1.0 : 0.0);
}
}
/**
* Add two vectors and the result is placed in this vector.
* @param u the other operand of the addition
**/
final void addition(MathVector u)
{
for (int i=0; i < NDIM; i++) {
data[i] += u.data[i];
}
}
/**
* Subtract two vectors and the result is placed in this vector.
* This vector contain the first operand.
* @param u the other operand of the subtraction.
**/
final void subtraction(MathVector u)
{
for (int i=0; i < NDIM; i++) {
data[i] -= u.data[i];
}
}
/**
* Subtract two vectors and the result is placed in this vector.
* @param u the first operand of the subtraction.
* @param v the second opernd of the subtraction
**/
final void subtraction(MathVector u, MathVector v)
{
for (int i=0; i < NDIM; i++) {
data[i] = u.data[i] - v.data[i];
}
}
/**
* Multiply the vector times a scalar.
* @param s the scalar value
**/
final void multScalar(double s)
{
for (int i=0; i < NDIM; i++) {
data[i] *= s;
}
}
/**
* Multiply the vector times a scalar and place the result in this vector.
* @param u the vector
* @param s the scalar value
**/
final void multScalar(MathVector u, double s)
{
for (int i=0; i < NDIM; i++) {
data[i] = u.data[i] * s;
}
}
/**
* Divide each element of the vector by a scalar value.
* @param s the scalar value.
**/
final void divScalar(double s)
{
for (int i=0; i < NDIM; i++) {
data[i] /= s;
}
}
/**
* Return the dot product of a vector.
* @return the dot product of a vector.
**/
final double dotProduct()
{
double s = 0.0;
for (int i=0; i < NDIM; i++) {
s += data[i] * data[i];
}
return s;
}
final double absolute()
{
double tmp = 0.0;
for (int i = 0; i < NDIM; i++) {
tmp += data[i] * data[i];
}
return Math.sqrt(tmp);
}
final double distance(MathVector v)
{
double tmp = 0.0;
for (int i = 0; i < NDIM; i++) {
tmp += ((data[i] - v.data[i]) * (data[i] - v.data[i]));
}
return Math.sqrt(tmp);
}
final void crossProduct(MathVector u, MathVector w)
{
data[0] = u.data[1] * w.data[2] - u.data[2]*w.data[1];
data[1] = u.data[2] * w.data[0] - u.data[0]*w.data[2];
data[2] = u.data[0] * w.data[1] - u.data[1]*w.data[0];
}
final void incrementalAdd(MathVector u)
{
for (int i = 0; i < NDIM; i++) {
data[i] += u.data[i];
}
}
final void incrementalSub(MathVector u)
{
for (int i = 0; i < NDIM; i++) {
data[i] -= u.data[i];
}
}
final void incrementalMultScalar(double s)
{
for (int i=0; i < NDIM; i++) {
data[i] *= s;
}
}
final void incrementalDivScalar(double s)
{
for (int i=0; i < NDIM; i++) {
data[i] /= s;
}
}
/**
* Add a scalar to each element in the vector and put the
* result in this vector.
* @param u a vector
* @param s the scalar
**/
final void addScalar(MathVector u, double s)
{
for (int i = 0; i < NDIM; i++) {
data[i] = u.data[i] + s;
}
}
/**
* Return the string representation of the vector
**/
public String toString()
{
StringBuffer s = new StringBuffer();
for (int i = 0; i < NDIM; i++) {
s.append(data[i] + " ");
}
return s.toString();
}
}