' . $blockHeader . '<\/h2><\/td><\/tr>/'; $i = 0; for( ; $i < sizeof($classdata); $i++) { if(preg_match($blockStartRegex, $classdata[$i]) === 1) { $i++; break; } } return $i; } function StaticFunctionExtractor($classdata, $visibility) { $blockDataRegex = '/static (?:)?(?.*?)(?:<\/a>)?(?: \*)? <\/td>(?.*?)<\/a> (?\(.*?\))<\/td><\/tr>/'; $dispVisibility = ucfirst($visibility); $data = array(); $i = SeekBlockStart('Static ' . $dispVisibility .' Member Functions', $classdata); for( ; $i < sizeof($classdata); $i++) { if(preg_match($blockDataRegex, $classdata[$i], $member) === 1) { $member['params'] = strip_tags($member['params']); $data[] = "\t{$visibility} static {$member['return']} {$member['name']} {$member['params']} {\n\n\t}\n\n"; } elseif(stripos($classdata[$i], '') !== FALSE) { break; } } return $data; } function StaticFieldExtractor($classdata, $visibility) { //static const long kTimebase = 40000000 $blockDataRegex = '/(?.*?)?(?:)?(?.*?)(?:<\/a>)?(?: \*)? <\/td>(?.*?)<\/a>(?\s*=\s*.+?)?<\/td><\/tr>/'; $dispVisibility = ucfirst($visibility); $data = array(); $i = SeekBlockStart('Static ' . $dispVisibility .' Attributes', $classdata); for( ; $i < sizeof($classdata); $i++) { if(preg_match($blockDataRegex, $classdata[$i], $member) === 1) { $data[] = "\t{$visibility} {$member['modifiers']} {$member['type']} {$member['name']}{$member['initializer']};\n"; } elseif(stripos($classdata[$i], '') !== FALSE) { break; } } if(sizeof($data) > 0) $data[] = "\n"; return $data; } function FunctionExtractor($classdata, $visibility) { $blockDataRegex = '/(?:)?(?.*?)(?:<\/a>)?(?: \*)? <\/td>(?.*?)<\/a> (?\(.*?\))<\/td><\/tr>/'; $dispVisibility = ucfirst($visibility); $data = array(); $i = SeekBlockStart($dispVisibility .' Member Functions', $classdata); for( ; $i < sizeof($classdata); $i++) { if(preg_match($blockDataRegex, $classdata[$i], $member) === 1) { $member['params'] = strip_tags($member['params']); $data[] = "\t{$visibility} {$member['return']} {$member['name']} {$member['params']} {\n\n\t}\n\n"; } elseif(stripos($classdata[$i], '') !== FALSE) { break; } } return $data; } function FieldExtractor($classdata, $visibility) { $blockDataRegex = '/(?:)?(?.*?)(?:<\/a>)?(?: \*)? <\/td>(?.*?)<\/a><\/td><\/tr>/'; $dispVisibility = ucfirst($visibility); $data = array(); $i = SeekBlockStart($dispVisibility .' Attributes', $classdata); for( ; $i < sizeof($classdata); $i++) { if(preg_match($blockDataRegex, $classdata[$i], $member) === 1) { $data[] = "\t{$visibility} {$member['type']} {$member['name']};\n"; } elseif(stripos($classdata[$i], '') !== FALSE) { break; } } if(sizeof($data) > 0) $data[] = "\n"; return $data; } function TypeExtractor($classdata, $visibility) { $blockDataRegex = '/(?:)?(?.*?)(?:<\/a>)?(?: \*)? <\/td>(?.*?)<\/a>\s\{\s*(?.+?)<\/a>\s*\}\s*<\/td><\/tr>/sm'; $dispVisibility = ucfirst($visibility); $data = array(); $i = SeekBlockStart($dispVisibility .' Types', $classdata); $activeLine = ''; for( ; $i < sizeof($classdata); $i++) { $activeLine .= $classdata[$i]; //echo "Matching against:\n$activeLine\n"; if(preg_match($blockDataRegex, $activeLine, $member) === 1) { $member['members'] = str_replace("\n", "\n\t\t", strip_tags($member['members'])); $data[] = "\t{$visibility} {$member['type']} {$member['name']} {\n\t\t{$member['members']}\n\t}\n\n"; $activeLine = ''; } elseif(stripos($classdata[$i], '') !== FALSE) { break; } } if(sizeof($data) > 0) $data[] = "\n"; return $data; } function BlockWriter($fp, $lines) { foreach($lines as $line) fwrite($fp, $line); } function ClassGen($className, $fileName) { global $server_base, $outdir, $visibilities, $members; $classData = file($server_base . 'class' . $fileName . '.html'); $fp = fopen($outdir . $className . '.java', w); $classHeader = <<