🎉 Added files
This commit is contained in:
292
raydium/headers/raydoc.php
Normal file
292
raydium/headers/raydoc.php
Normal file
@ -0,0 +1,292 @@
|
||||
#!/usr/bin/php
|
||||
<?
|
||||
/*
|
||||
Raydium - CQFD Corp.
|
||||
http://raydium.org/
|
||||
License: GPL - GNU General Public License, see "gpl.txt" file.
|
||||
*/
|
||||
|
||||
// This script generates a Wiki(ni) style documentation from comments of
|
||||
// all header files of Raydium (raydium/header/*.h)
|
||||
|
||||
$page="http://wiki.raydium.org/wiki/RaydiumApiReference";
|
||||
|
||||
$intro="
|
||||
======Raydium API Reference======
|
||||
|
||||
=====CQFD Corp.=====
|
||||
|
||||
This document is the most up-to-date version. **This is a work in progress**:
|
||||
there's again some errors and wrong informations. Try, wait, or contribute ;)
|
||||
|
||||
\"\"<a href=$page#chapters>Index of chapters</a>\"\"
|
||||
\"\"<a href=$page#index>Index of all Raydium functions</a>\"\"
|
||||
|
||||
----
|
||||
This document is autogenerated, any change will be lost,
|
||||
use RaydiumApiReferenceComments for any need.
|
||||
{DATE}, for Raydium **{VERSION}**
|
||||
----
|
||||
";
|
||||
|
||||
|
||||
|
||||
function getTagLine($tag,$lines,$from=0)
|
||||
{
|
||||
for($i=$from;$i<count($lines);$i++)
|
||||
{
|
||||
$l=$lines[$i];
|
||||
if(substr(trim($l),0,strlen($tag))==$tag)
|
||||
return $i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
function getVersion()
|
||||
{
|
||||
$file="../common.h";
|
||||
$f=file($file);
|
||||
$maj=getTagLine("#define RAYDIUM_MAJOR",$f);
|
||||
$min=getTagLine("#define RAYDIUM_MINOR",$f);
|
||||
|
||||
$maj=str_replace("\t"," ",trim($f[$maj]));
|
||||
$min=str_replace("\t"," ",trim($f[$min]));
|
||||
|
||||
$maj=explode(" ",$maj);
|
||||
$min=explode(" ",$min);
|
||||
$maj=$maj[count($maj)-1];
|
||||
$min=$min[count($min)-1];
|
||||
|
||||
return sprintf("%d.%03d",$maj,$min);
|
||||
}
|
||||
|
||||
function getMain($filename,$offset)
|
||||
{
|
||||
$f=file($filename);
|
||||
$l=getTagLine("/*=",$f);
|
||||
if($l==-1)
|
||||
return -1;
|
||||
$res=trim($f[$l+$offset]);
|
||||
return $res;
|
||||
}
|
||||
|
||||
function getPriority($filename)
|
||||
{
|
||||
$res=trim(getMain($filename,2));
|
||||
if(is_numeric($res))
|
||||
return $res;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
function getTitle($filename)
|
||||
{
|
||||
return trim(getMain($filename,1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
function getHeaders($directory)
|
||||
{
|
||||
$res=array();
|
||||
if (is_dir($directory))
|
||||
{
|
||||
if ($dh = opendir($directory))
|
||||
{
|
||||
while (($file = readdir($dh)) !== false)
|
||||
{
|
||||
if(substr($file,-2)==".h")
|
||||
{
|
||||
$res[]=$file;
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
else echo "'$directory' is not a directory";
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
$chapters=array();
|
||||
function h1($str,$addchap=true)
|
||||
{
|
||||
global $chapters;
|
||||
static $i=1;
|
||||
if($addchap)
|
||||
{
|
||||
echo '""'."<a name=chap$i></a>".'""';
|
||||
$chapters[$i]=$str;
|
||||
$i++;
|
||||
}
|
||||
echo "\n=====$str:=====\n";
|
||||
}
|
||||
|
||||
function h2($str)
|
||||
{
|
||||
echo "====$str:====\n";
|
||||
}
|
||||
|
||||
function body($str)
|
||||
{
|
||||
echo $str."\n\n";
|
||||
}
|
||||
|
||||
function intro($str)
|
||||
{
|
||||
$str=str_replace("{DATE}","Generated: ".date("Y-m-d H:i:s"),$str);
|
||||
$str=str_replace("{VERSION}",getVersion(),$str);
|
||||
echo $str;
|
||||
}
|
||||
|
||||
$index=array();
|
||||
function addToIndex($f)
|
||||
{
|
||||
static $i=0;
|
||||
global $index;
|
||||
|
||||
$p=strpos($f,"raydium_");
|
||||
if($p!==false)
|
||||
$f=substr($f,$p);
|
||||
else
|
||||
$f="unsupported - $f";
|
||||
|
||||
$index[$i]=$f."|$i";
|
||||
return $i++;
|
||||
}
|
||||
|
||||
// Main
|
||||
|
||||
$id="";
|
||||
$files=getHeaders(".");
|
||||
//var_dump($files);
|
||||
if($files==-1)
|
||||
die("No header found");
|
||||
|
||||
unset($sorted);
|
||||
for($i=0;$i<count($files);$i++)
|
||||
{
|
||||
$file=$files[$i];
|
||||
$p=getPriority($file);
|
||||
if($p==-1)
|
||||
$p=999000+$i;
|
||||
|
||||
while(isset($sorted[$p]))
|
||||
$p++;
|
||||
$sorted[$p]=$file;
|
||||
}
|
||||
ksort($sorted);
|
||||
$sorted=array_values($sorted);
|
||||
//var_dump($sorted);
|
||||
|
||||
// Files are sorted, now
|
||||
|
||||
intro($intro);
|
||||
|
||||
for($i=0;$i<count($sorted);$i++)
|
||||
{
|
||||
$file=$sorted[$i];
|
||||
$title=getTitle($file);
|
||||
|
||||
if($title==-1)
|
||||
{
|
||||
h1(($i+1)." no documentation for $file");
|
||||
continue;
|
||||
}
|
||||
|
||||
h1(($i+1)." $title");
|
||||
|
||||
$f=file($file);
|
||||
$last=0;
|
||||
$n=0;
|
||||
while(($l=getTagLine("/**",$f,$last))!=-1)
|
||||
{
|
||||
$title=trim($f[$l-1]);
|
||||
if($title=="")
|
||||
$title="// unknown item";
|
||||
|
||||
// types:
|
||||
// 1 - Comment (//)
|
||||
// 2 - Macro (#)
|
||||
// 3 - Code (...)
|
||||
$type=3;
|
||||
if($title[0]=="/")
|
||||
{
|
||||
$type=1;
|
||||
$title=trim(substr($title,2));
|
||||
}
|
||||
|
||||
if($title[0]=="#")
|
||||
{
|
||||
$type=2;
|
||||
$pos=strpos($title,")");
|
||||
if($pos)
|
||||
{
|
||||
$title=substr($title,0,$pos+1);
|
||||
}
|
||||
$title=trim(str_replace("#define ","",$title))." (macro)";
|
||||
|
||||
}
|
||||
|
||||
if($type==3)
|
||||
{
|
||||
if(substr($title,0,7)=="extern ")
|
||||
$title=trim(substr($title,7));
|
||||
if(substr($title,0,9)=="__rayapi ")
|
||||
$title=trim(substr($title,9));
|
||||
if($title[strlen($title)-1]==";")
|
||||
$title=substr($title,0,-1);
|
||||
$title=trim(str_replace("**","* *",$title));
|
||||
}
|
||||
|
||||
if($type==2 || $type==3)
|
||||
$id=addToIndex($title);
|
||||
|
||||
h2('""'."<a name=$id></a>".'""'.($i+1).".".($n+1)." $title");
|
||||
|
||||
$last=$l+1;
|
||||
$end=getTagLine("**/",$f,$last);
|
||||
if($end==-1)
|
||||
die("expected '**/' (started line $l)");
|
||||
|
||||
unset($body);
|
||||
/* for($j=$l+1;$j<$end;$j++)
|
||||
{
|
||||
$lj=trim($f[$j]);
|
||||
if($lj=="")
|
||||
$lj="\n\n";
|
||||
else
|
||||
$lj.=" ";
|
||||
$body[]=$lj;
|
||||
}
|
||||
$str=implode("",$body);*/
|
||||
for($j=$l+1;$j<$end;$j++)
|
||||
{
|
||||
$lj=trim($f[$j]);
|
||||
$body[]=$lj;
|
||||
}
|
||||
$str=@implode("\n",$body);
|
||||
body($str);
|
||||
|
||||
$last=$end+1;
|
||||
$n++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
h1('""<a name=chapters></a>""Chapters',false);
|
||||
foreach($chapters as $key => $val)
|
||||
{
|
||||
echo('====""'."<a href=$page#chap$key>$val</a>".'""====')."\n";
|
||||
}
|
||||
|
||||
sort($index);
|
||||
h1('""<a name=index></a>""Index');
|
||||
for($i=0;$i<count($index);$i++)
|
||||
{
|
||||
$j=explode("|",$index[$i]);
|
||||
$k=$j[0];
|
||||
$l=$j[1];
|
||||
echo '""'."<a href=$page#$l><tt>$k</tt></a>".'""'."\n";
|
||||
}
|
||||
|
Reference in New Issue
Block a user