void JSBTypeScript::ExportFunction(JSBFunction* function) { if (function->Skip()) return; String scriptName = "constructor"; //constructor(width?: number, height?: number, options?: PixiRendererOptions); if (!function->isConstructor_) { scriptName = function->name_; scriptName[0] = tolower(scriptName[0]); } if (function->docString_.Length()) source_ += " " + function->docString_ + "\n"; source_ += " " + scriptName + "("; for (unsigned i = 0; i < function->parameters_.Size(); i++) { JSBFunctionType* ftype = function->parameters_.At(i); String scriptType = GetScriptType(ftype); if (scriptType == "Context") continue; source_ += ftype->name_; if (ftype->initializer_.Length()) source_ += "?"; source_ += ": " + scriptType; if (i < function->parameters_.Size() - 1) source_ += ", "; } if (function->isConstructor_) source_ += ");\n"; else { if (!function->returnType_) source_ += "): void;\n"; else source_ += "): " + GetScriptType(function->returnType_) + ";\n"; } }
void JSBTypeScript::ExportModuleClasses(const String& moduleName) { JSBModule* module = JSBindings::Instance()->GetModuleByName(moduleName); if (!module->classes_.Size()) return; source_ += "\n"; for (unsigned i = 0; i < module->classes_.Size(); i++) { JSBClass* klass = module->classes_.At(i); source_ += " export class " + klass->GetName(); if (klass->GetBaseClass()) source_ += " extends " + klass->GetBaseClass()->GetName(); source_ += " {\n\n"; Vector<String> propertyNames; klass->GetPropertyNames(propertyNames); for (unsigned j = 0; j < propertyNames.Size(); j++) { JSBProperty* prop = klass->GetProperty(propertyNames[j]); JSBFunctionType* ftype = NULL; if (prop->getter_ && !prop->getter_->Skip()) { ftype = prop->getter_->returnType_; } else if (prop->setter_ && !prop->setter_->Skip()) ftype = prop->setter_->parameters_[0]; if (!ftype) continue; String scriptType = GetScriptType(ftype); String scriptName = propertyNames[j]; scriptName[0] = tolower(scriptName[0]); source_ += " " + scriptName + ": " + scriptType + ";\n"; } if (propertyNames.Size()) source_ += "\n"; JSBFunction* constructor = klass->GetConstructor(); if (constructor) { ExportFunction(constructor); source_ += "\n"; } for (unsigned j = 0; j < klass->GetFunctionCount(); j++) { JSBFunction* func = klass->GetFunction(j); if (func->isConstructor_ || func->isDestructor_ || func->Skip()) continue; ExportFunction(func); } source_ += "\n }\n\n"; } source_ += "\n"; }
void JSBHaxe::ExportModuleClasses(JSBModule* module) { Vector<SharedPtr<JSBClass>> classes = module->GetClasses(); if (!classes.Size()) return; source_ += "\n"; for (unsigned i = 0; i < classes.Size(); i++) { JSBClass* klass = classes.At(i); if (klass->IsNumberArray()) { source_ += "typedef " + klass->GetName() + " = Array<Float>;\n"; continue; } source_ += "@:native(\"Atomic." + klass->GetName() + "\")\n"; source_ += "extern class " + klass->GetName(); JSBClass* base = klass->GetBaseClass(); if (base) { source_ += " extends " + base->GetName(); } source_ += " {\n\n"; Vector<String> propertyNames; klass->GetPropertyNames(propertyNames); for (unsigned j = 0; j < propertyNames.Size(); j++) { JSBProperty* prop = klass->GetProperty(propertyNames[j]); JSBFunctionType* ftype = NULL; if (prop->getter_ && !prop->getter_->Skip()) { ftype = prop->getter_->GetReturnType(); } else if (prop->setter_ && !prop->setter_->Skip()) ftype = prop->setter_->GetParameters()[0]; if (!ftype) continue; String scriptType = GetScriptType(ftype); String scriptName = prop->GetCasePropertyName(); if (!checkV(klass, scriptName, scriptType)) { //rename haxe reserved words if (scriptName == "override") { scriptName = "overide"; } if (scriptName == "dynamic") { scriptName = "dynamik"; } source_ += " var " + scriptName + ": " + scriptType + ";\n"; } } if (propertyNames.Size()) source_ += "\n"; JSBFunction* constructor = klass->GetConstructor(); if (constructor) { ExportFunction(constructor); source_ += "\n"; } PODVector<JSBFunction*>& functions = klass->GetFunctions(); for (unsigned j = 0; j < functions.Size(); j++) { JSBFunction* func = functions[j]; if (func->IsConstructor() || func->IsDestructor() || func->Skip()) continue; ExportFunction(func); } for (unsigned j = 0; j < klass->GetNumHaxeDecl(); j++) { source_ += " " + klass->GetHaxeDecl(j) + "\n"; } source_ += "\n}\n\n"; } source_ += "\n"; }
void JSBHaxe::ExportFunction(JSBFunction* function) { //probably no need to check if (function->Skip()) return; String scriptName = "new"; if (!function->IsConstructor()) { scriptName = function->GetName(); scriptName[0] = tolower(scriptName[0]); } if (function->GetDocString().Length()) source_ += " //" + function->GetDocString() + "\n"; //Add @:overload annotation if (IsOverride(function)) { //if (function->IsOverload()) { source_ += " @:overload(function("; Vector<JSBFunctionType*>& parameters = function->GetParameters(); for (unsigned i = 0; i < parameters.Size(); i++) { JSBFunctionType* ftype = parameters.At(i); String scriptType = GetScriptType(ftype); if (scriptType == "Context" || scriptType == "Atomic.Context") continue; String name = ftype->name_; if (ftype->initializer_.Length()) source_ += "?"; source_ += name; source_ += ": " + scriptType; if (i < parameters.Size() - 1) source_ += ", "; } if (!function->GetReturnType()) source_ += "): Void{})\n"; else source_ += "): " + GetScriptType(function->GetReturnType()) + "{})\n"; } source_ += " override function "; } else { source_ += " function "; } source_ += scriptName + "("; Vector<JSBFunctionType*>& parameters = function->GetParameters(); if (IsOverride(function)) parameters = findFunctionInBase(function)->GetParameters(); for (unsigned i = 0; i < parameters.Size(); i++) { JSBFunctionType* ftype = parameters.At(i); String scriptType = GetScriptType(ftype); if (scriptType == "Context" || scriptType == "Atomic.Context") continue; String name = ftype->name_; if (ftype->initializer_.Length()) source_ += "?"; source_ += name; source_ += ": " + scriptType; if (i < parameters.Size() - 1) source_ += ", "; } if (function->IsConstructor()) source_ += ");\n"; else { if (!function->GetReturnType()) source_ += "): Void;\n"; else source_ += "): " + GetScriptType(function->GetReturnType()) + ";\n"; } }
Bool CRipZwei2Text::GetAllText(vector<string> &vec) { u32 u32ScpType; char *pLine; while (1) { pLine = GetNextLinePos(); if (pLine == NULL || pLine >= m_pEndOfScript) break; if (*pLine == '\n' || *pLine == 0) continue; if (*pLine == '#') { u32ScpType = GetScriptType(pLine); if (u32ScpType != None) { m_u32ScpType = u32ScpType; continue; } } switch (m_u32ScpType) { case None: case EndOfTable: continue; case ItemTable: RipItemTable(vec, pLine); break; case StageTable: RipStageTable(vec, pLine); break; case CharNoteTable: RipCharNoteTable(vec, pLine); break; case MailTable: RipMailTable(vec, pLine); break; case NikkiTable: RipNikkiTable(vec, pLine); break; case MapTable: RipMapTable(vec, pLine); break; case TAKARATable: RipTAKARATable(vec, pLine); break; case CharTable: RipCharTable(vec, pLine); break; case ScriptTable: RipScripTable(vec, pLine); break; case CharMotTable: RipCharMotTable(vec, pLine); break; } } return True; }
void JSBTypeScript::ExportFunction(JSBFunction* function) { if (function->Skip()) return; String scriptName = "constructor"; //constructor(width?: number, height?: number, options?: PixiRendererOptions); if (!function->IsConstructor()) { scriptName = function->GetName(); scriptName[0] = tolower(scriptName[0]); } if (function->GetDocString().Length()) source_ += " //" + function->GetDocString() + "\n"; source_ += " " + scriptName + "("; Vector<JSBFunctionType*>& parameters = function->GetParameters(); for (unsigned i = 0; i < parameters.Size(); i++) { JSBFunctionType* ftype = parameters.At(i); String scriptType = GetScriptType(ftype); if (scriptType == "Context" || scriptType == "Atomic.Context") continue; String name = ftype->name_; // TS doesn't like arguments named arguments if (name == "arguments") name = "args"; source_ += name; if (ftype->initializer_.Length()) source_ += "?"; source_ += ": " + scriptType; if (i < parameters.Size() - 1) source_ += ", "; } if (function->IsConstructor()) source_ += ");\n"; else { if (!function->GetReturnType()) source_ += "): void;\n"; else source_ += "): " + GetScriptType(function->GetReturnType()) + ";\n"; } }
void JSBTypeScript::ExportModuleClasses(JSBModule* module) { Vector<SharedPtr<JSBClass>> classes = module->GetClasses(); if (!classes.Size()) return; source_ += "\n"; for (unsigned i = 0; i < classes.Size(); i++) { JSBClass* klass = classes.At(i); source_ += " export class " + klass->GetName(); JSBClass* base = klass->GetBaseClass(); if (base) { if (klass->GetPackage() != base->GetPackage()) { source_ += " extends " + base->GetPackage()->GetName() + "." + base->GetName(); } else { source_ += " extends " + base->GetName(); } } source_ += " {\n\n"; Vector<String> propertyNames; klass->GetPropertyNames(propertyNames); for (unsigned j = 0; j < propertyNames.Size(); j++) { JSBProperty* prop = klass->GetProperty(propertyNames[j]); JSBFunctionType* ftype = NULL; if (prop->getter_ && !prop->getter_->Skip()) { ftype = prop->getter_->GetReturnType(); } else if (prop->setter_ && !prop->setter_->Skip()) ftype = prop->setter_->GetParameters()[0]; if (!ftype) continue; String scriptType = GetScriptType(ftype); String scriptName = prop->GetCasePropertyName(); source_ += " " + scriptName + ": " + scriptType + ";\n"; } if (propertyNames.Size()) source_ += "\n"; JSBFunction* constructor = klass->GetConstructor(); if (constructor) { ExportFunction(constructor); source_ += "\n"; } PODVector<JSBFunction*>& functions = klass->GetFunctions(); for (unsigned j = 0; j < functions.Size(); j++) { JSBFunction* func = functions[j]; if (func->IsConstructor() || func->IsDestructor() || func->Skip()) continue; ExportFunction(func); } for (unsigned j = 0; j < klass->GetNumTypeScriptDecl(); j++) { source_ += " " + klass->GetTypeScriptDecl(j) + "\n"; } source_ += "\n }\n\n"; } source_ += "\n"; }