c'est une erreur mais bon je vous donne le code de la dll si vous ne voulez pas dl
Public Class VBGenerator
Public Function Generate(ByVal Class_ As Classes)
Dim str As String = ""
str += GenerateImport(Class_.Import)
str += GenerateNamspace(Class_.Namspace)
str += "Public Class " + Class_.Name + vbCrLf
str += GenerateParent(Class_.Parent)
str += GeneratePublicVar(Class_.Vars)
str += "Dim _isInitialized as Boolean = false" + vbCrLf
str += "Public Const protocolId as UInteger = " + Class_.ProtocolId.ToString + vbCrLf
str += GenerateNew(Class_)
str += GenerateInit(Class_)
str += GeneratePack(Class_)
str += GenerateDeSerializ(Class_)
str += GenerateSerializeAs(Class_)
str += GenerateSerializ(Class_)
str += GenerateDeserializeAs(Class_)
str += "End Class" + vbCrLf + "End Namespace"
Return str
End Function
Private Function GenerateNamspace(ByVal namespac As String)
Return "Namespace " + namespac.Replace("com.ankamagames.dofus.network.", "") + vbCrLf
End Function
Private Function GenerateSerializ(ByVal class_ As Classes)
Return GenerateFnc(class_, "serialize(ByVal param1 as DofusWriter)", "serializeAs_" + class_.Name + "(param1)")
End Function
Private Function GenerateDeSerializ(ByVal class_ As Classes)
Return GenerateFnc(class_, "deserialize(ByVal param1 as DofusReader)", "deserializeAs_" + class_.Name + "(param1)")
End Function
Private Function GenerateParent(ByVal parent As String)
If Not parent = "NetworkMessage" Then
Return "Inherits " + parent + vbCrLf
Else
Return ""
End If
End Function
Private Function GeneratePublicVar(ByVal Var As List(Of Vars)) As String
Dim str As String = ""
For i As Integer = 0 To Var.Count - 1
str += "Public " + Var(i).Name + " as " + Var(i).Type + vbCrLf
Next
Return str
End Function
Private Function GenerateImport(importLst As List(Of String)) As String
Dim str As String = ""
For i As Integer = 0 To importLst.Count - 1
If Not importLst(i).Trim = "__AS3__.vec" And Not importLst(i).Trim = "*" And Not importLst(i).Trim = "com.ankamagames.jerakine.network" And Not importLst(i).Trim = "flash.utils" Then
str += " Imports " + importLst(i).Replace("com.ankamagames.dofus.network.", "BooBot.Network.") + vbCrLf
End If
Next
str += "Imports BooBot.Network.Utils" + vbCrLf
Return str
End Function
Private Function GenerateFnc(ByVal class_ As Classes, ByVal fncName As String, ByVal scr As String, Optional ByVal IsSub As Boolean = False) As String
Dim str As String = ""
If class_.Parent.Trim = "NetworkMessage" Or class_.Parent.Trim = "Object" Then
str += "public "
If IsSub Then
str += "Sub "
Else
str += "Function "
End If
Else
str += "Public Overloads "
If IsSub Then
str += "Sub "
Else
str += "Function "
End If
End If
str += fncName + vbCrLf
str += scr + vbCrLf
str += "End "
If IsSub Then
str += "Sub "
Else
str += "Function "
End If
str += vbCrLf
Return str
End Function
Private Function GenerateNew(ByVal class_ As Classes) As String
Dim scr As String = ""
For i As Integer = 0 To class_.Vars.Count - 1
scr += class_.Vars(i).Name + " = "
If class_.Vars(i).Type.StartsWith("List(") Then
scr += "New " + class_.Vars(i).Type
Else
scr += "Nothing"
End If
scr += vbCrLf
Next
Return GenerateFnc(class_, "New()", scr, True).Replace("Overloads", "")
End Function
Private Function GenerateSerializeAs(ByVal class_ As Classes) As String
Dim scr As String = ""
For i As Integer = 0 To class_.Vars.Count - 1
Dim Var As Vars = class_.Vars(i)
If Var.Type.StartsWith("List(") Then
scr += "param1.writeShort(" + Var.Name + ".Count)" + Chr(10)
scr += "For i as integer = 0 to " + Var.Name + ".Count - 1" + Chr(10)
scr += "param1.writeShort(" + Var.Name + "(i).protocolId)" + Chr(10)
If ParseUtility.TypeIsPrimitive(Var.Type.Replace("List(Of ", "").Replace(")", "")) Then
scr += Var.Name + "." + Var.ReadMetode + "()"
Else
scr += Var.Name + "(i).serialize(param1)" + Chr(10)
End If
scr += "Next" + Chr(10)
Else
Dim WriteType As String = Var.ReadMetode.Replace("read", "write")
If ParseUtility.TypeIsPrimitive(Var.Type) Then
scr += "param1." + WriteType + "(" + Var.Name + ")" + Chr(10)
Else
scr += Var.Name + ".serialize(param1)" + Chr(10)
End If
End If
Next
Return GenerateFnc(class_, "serializeAs_" + class_.Name + "(param1 as DofusWriter)", scr)
End Function
Private Function GenerateDeserializeAs(ByVal class_ As Classes) As String
Dim scr As String = ""
For i As Integer = 0 To class_.Vars.Count - 1
Dim var As Vars = class_.Vars(i)
If var.Type.StartsWith("List(") Then
If var.MultiSource Then
scr += "Dim " + var.Name + "_Class_Id" + " as Integer" + Chr(10)
scr += "Dim " + var.Name + "_Temp" + " as " + var.Type.Replace("List(Of ", "").Replace(")", "") + Chr(10)
Else
scr += "Dim " + var.Name + "_Temp" + " as " + var.Type.Replace("List(Of ", "").Replace(")", "") + Chr(10)
End If
End If
Next
For i As Integer = 0 To class_.Vars.Count - 1
Dim Var As Vars = class_.Vars(i)
If Var.Type.StartsWith("List(") Then
If Var.MultiSource Then
scr += "Dim " + Var.Name + "_Count = param1.readUnsignedShort()" + Chr(10)
scr += "For i as integer = 0 to " + Var.Name + "_Count - 1" + Chr(10)
scr += Var.Name + "_Class_Id = param1.readUnsignedShort()" + Chr(10)
scr += Var.Name + "_Temp = ProtocolTypeManager.getInstance(" + Var.Name + "_Class_Id)" + Chr(10)
scr += Var.Name + "_Temp.deserialize(param1)" + Chr(10)
scr += Var.Name + ".Add(" + Var.Name + "_Temp)" + Chr(10)
scr += "Next" + Chr(10)
Else
scr += "Dim " + Var.Name + "_Count = param1.readUnsignedShort()" + Chr(10)
scr += "For i as integer = 0 to " + Var.Name + "_Count - 1" + Chr(10)
If ParseUtility.TypeIsPrimitive(Var.Type.Replace("List(Of ", "").Replace(")", "")) Then
scr += Var.Name + "_Temp = param1." + Var.ReadMetode.Replace("read", "write") + "()" + Chr(10)
Else
scr += Var.Name + "_Temp = new " + Var.Type.Replace("List(Of ", "").Replace(")", "") + "()" + Chr(10)
scr += Var.Name + "_Temp.deserialize(param1)" + Chr(10)
End If
scr += Var.Name + ".Add(" + Var.Name + "_Temp)" + Chr(10)
scr += "Next" + Chr(10)
End If
Else
If ParseUtility.TypeIsPrimitive(Var.Type) Then
scr += Var.Name + " = param1." + Var.ReadMetode + "()" + Chr(10)
Else
scr += Var.Name + " = new " + Var.Type + "()" + Chr(10)
scr += Var.Name + ".deserialize(param1)" + Chr(10)
End If
End If
Next
Return GenerateFnc(class_, "deserializeAs_" + class_.Name + "(param1 as DofusReader)", scr)
End Function
Private Function GenerateInit(ByVal class_ As Classes) As String
Dim str As String = ""
Dim argStr As String = "("
For i As Integer = 0 To class_.Vars.Count - 1
Dim var As Vars = class_.Vars(i)
argStr += "ByVal " + var.Name + "_param,"
str += var.Name + " = " + var.Name + "_param" + Chr(10)
Next
If class_.Vars.Count > 0 Then
argStr = argStr.Remove(argStr.Length - 1)
End If
argStr += ")"
Return GenerateFnc(class_, "Init" + argStr, str)
End Function
Private Function GeneratePack(ByVal class_ As Classes) As String
Dim scr As String = ""
scr += " Dim _Writer As New DofusWriter()" + Chr(10)
scr += " Me.serializeAs_" + class_.Name + "(_Writer)" + Chr(10)
scr += "DofusWriter.Send(protocolId, sock)" + Chr(10)
scr += "Return Me" + Chr(10)
Return GenerateFnc(class_, "pack(ByVal sock As Object)", scr)
End Function
End Class
Public Class ParseUtility
Shared Function GetNamspace(ByVal str As String)
str = str.Trim
str = str.Remove(0, 8)
Return str
End Function
Shared Function GetImporte(ByVal str As String) As String
str = str.Trim
If str.StartsWith("import") Then
str = str.Replace(".*;", "")
str = str.Replace("import ", "")
str = str.Trim
End If
Return str
End Function
Shared Function GetVar(ByVal str As String) As Vars
str = str.Trim
If str.StartsWith("public var") Then
str = str.Remove(0, 11)
str = str.Replace(";", "")
Dim splited() As String = Split(str, ":")
Dim newVar As New Vars
newVar.Name = splited(0)
Dim type() As String = Split(splited(1), " = ")
newVar.Type = ParseUtility.GetTypes(type(0))
Return newVar
Else
Return Nothing
End If
End Function
Shared Function GetClassName(ByVal str As String) As String
str = str.Trim
If str.StartsWith("public class") Then
str = str.Replace("public class ", "")
Dim splited() As String = Split(str, " ")
Return splited(0)
Else
Return Nothing
End If
End Function
Shared Function GetParent(ByVal str As String) As String
str = str.Trim
If str.StartsWith("public class") Then
str = str.Replace("public class ", "")
Dim splited() As String = Split(str, " ")
Return splited(2)
Else
Return Nothing
End If
End Function
Shared Function GetProtocoleId(ByVal str As String) As Integer
str = str.Trim
If str.StartsWith("public static const") Then
str = str.Replace("public static const ", "")
str = str.Replace(";", "")
Dim splited() As String = Split(str, ":")
Dim splited2() As String = Split(splited(1), " = ")
Return CInt(splited2(1))
Else
Return ""
End If
End Function
Shared Function GetVarReadType(ByVal var As Vars, ByVal str As String) As String
str = str.Trim
If str.StartsWith("this." + var.Name + " = ") Then
str = str.Replace("this." + var.Name + " = param1.", "")
str = str.Replace("();", "")
End If
Return str
End Function
Shared Function GetVarWriteType(ByVal var As Vars, ByVal str As String) As String
str = str.Remove(0, 7)
Dim splited() As String = Split(str, "(")
str = splited(0)
Return str
End Function
Shared Function GetVarMultivSource(ByVal var As Vars, ByVal scr As String, ByVal class_ As Classes) As Boolean
Dim isMultiveSource As Boolean = False
Dim pl() As String = Split(GetFonctionScr(scr, "deserializeAs_" + class_.Name), Chr(10))
For i As Integer = 0 To pl.Count - 1
Dim ln As String = pl(i).Trim
If ln.Contains("ProtocolTypeManager.getInstance") Then
Dim p1() As String = Split(ln, "(")
Dim p2() As String = Split(p1(1).Replace(");", ""), ",")
If p2(0).Trim = var.Type.Replace("List(Of ", "").Replace(")", "") Then
isMultiveSource = True
End If
End If
Next
Return isMultiveSource
End Function
Shared Function GetFonctionScr(ByVal scr As String, ByVal fncName As String) As String
Dim ln() As String = scr.Split(Chr(10))
Dim newScr As String = ""
For i As Integer = 0 To ln.Count - 1
If ln(i).Contains("public function ") Then
Dim Name As String = GetFonctionName(ln(i))
If Name.Trim = fncName.Trim Then
Dim pass As Boolean = False
For ii As Integer = i To ln.Count - 1
newScr += vbCrLf + ln(ii)
ln(ii) = ln(ii).Trim
If ln(ii).StartsWith("if (") Then pass = True
If ln(ii).StartsWith("while (") Then pass = True
If ln(ii).Trim = "}" And pass = False Then Exit For
Next
End If
End If
Next
Return newScr
End Function
Shared Function GetFonctionName(ByVal scr As String) As String
scr = scr.Trim
If scr.Contains("public function ") Then
scr = scr.Remove(0, 16)
Dim splited() As String = Split(scr, "(")
Return splited(0).Trim
Else
Return Nothing
End If
End Function
Shared Function GetTypes(ByVal str As String)
str = str.Trim
If str.StartsWith("Vector.<") Then
str = str.Remove(str.Length - 1)
str = str.Remove(0, 8)
str = GetTypes(str)
str = "List(Of " + str + ")"
Else
If str = "uint" Then str = "UInteger"
If str = "int" Then str = "Integer"
If str = "Number" Then str = "Long"
End If
Return str
End Function
Shared Function TypeIsPrimitive(ByVal str As String) As Boolean
Dim pr As Boolean = False
Select Case str.Trim.ToLower
Case "integer"
pr = True
Case "uinteger"
pr = True
Case "long"
pr = True
Case "short"
pr = True
Case "string"
pr = True
Case "boolean"
pr = True
End Select
Return pr
End Function
End Class
Public Class ASReader
Shared Function ReadFile(ByVal str As String) As Classes
Dim lines() As String = Split(str, Chr(10))
Dim newClass As New Classes
For i As Integer = 0 To lines.Count - 1
Dim ln As String = lines(i).Trim
If ln.StartsWith("public class") Then
newClass.Name = ParseUtility.GetClassName(ln)
newClass.Parent = ParseUtility.GetParent(ln)
End If
If ln.StartsWith("package ") Then
newClass.Namspace = ParseUtility.GetNamspace(ln)
End If
If ln.StartsWith("import ") Then
newClass.Import.Add(ParseUtility.GetImporte(ln))
End If
If ln.StartsWith("public var") Then
newClass.Vars.Add(ParseUtility.GetVar(ln))
End If
If ln.StartsWith("public static const") Then
newClass.ProtocolId = ParseUtility.GetProtocoleId(ln)
End If
Next
Dim fncScr As String = ParseUtility.GetFonctionScr(str, "deserializeAs_" + newClass.Name)
Dim scrLines() As String = Split(fncScr, Chr(10))
For i As Integer = 0 To scrLines.Count - 1
Dim ln As String = scrLines(i).Trim
For ii As Integer = 0 To newClass.Vars.Count - 1
If ln.StartsWith("this." + newClass.Vars(ii).Name + " = ") Then
newClass.Vars(ii).ReadMetode = ParseUtility.GetVarReadType(newClass.Vars(ii), ln)
End If
Next
Next
For i As Integer = 0 To newClass.Vars.Count - 1
newClass.Vars(i).MultiSource = ParseUtility.GetVarMultivSource(newClass.Vars(i), str, newClass)
If newClass.Vars(i).ReadMetode Is Nothing Then
fncScr = ParseUtility.GetFonctionScr(str, "serializeAs_" + newClass.Name)
Dim pl2() As String = Split(fncScr, Chr(10))
For iii As Integer = 0 To pl2.Count - 1
Dim lln As String = pl2(iii).Trim
If lln.Contains("(this." + newClass.Vars(i).Name + "[") And lln.Contains("]);") Then
newClass.Vars(i).ReadMetode = ParseUtility.GetVarWriteType(newClass.Vars(i), lln).Replace("write", "read")
End If
Next
End If
If newClass.Vars(i).ReadMetode Is Nothing Then
fncScr = ParseUtility.GetFonctionScr(str, "serializeAs_" + newClass.Name)
Dim pl2() As String = Split(fncScr, Chr(10))
For iii As Integer = 0 To pl2.Count - 1
Dim lln As String = pl2(iii).Trim
If lln.Contains("(" + newClass.Vars(i).Name + "[") And lln.Contains("]);") Then
newClass.Vars(i).ReadMetode = ParseUtility.GetVarWriteType(newClass.Vars(i), lln).Replace("write", "read")
End If
Next
End If
Next
Return newClass
End Function
End Class
Public Class Vars
Dim _name As String
Dim _type As String
Dim _readMetode As String
Dim _multiSource As Boolean
Property Name As String
Get
Name = _name
End Get
Set(value As String)
_name = value
End Set
End Property
Property Type As String
Get
Type = _type
End Get
Set(value As String)
_type = value
End Set
End Property
Property ReadMetode As String
Get
ReadMetode = _readMetode
End Get
Set(value As String)
_readMetode = value
End Set
End Property
Property MultiSource As Boolean
Get
MultiSource = _multiSource
End Get
Set(value As Boolean)
_multiSource = value
End Set
End Property
End Class
Public Class Classes
Dim _vars As List(Of Vars)
Dim _imports As List(Of String)
Dim _protocolId As Integer
Dim _Name As String
Dim _Namspaces As String
Dim _Parent As String
Dim _Interface As String
Public Sub New()
_vars = New List(Of Vars)
_imports = New List(Of String)
_protocolId = 0
_Name = ""
_Namspaces = ""
_Parent = ""
_Interface = ""
End Sub
Property Vars As List(Of Vars)
Get
Vars = _vars
End Get
Set(value As List(Of Vars))
_vars = value
End Set
End Property
Property Import As List(Of String)
Get
Import = _imports
End Get
Set(value As List(Of String))
_imports = value
End Set
End Property
Property ProtocolId As Integer
Get
ProtocolId = _protocolId
End Get
Set(value As Integer)
_protocolId = value
End Set
End Property
Property Name As String
Get
Name = _Name
End Get
Set(value As String)
_Name = value
End Set
End Property
Property Namspace
Get
Namspace = _Namspaces
End Get
Set(value)
_Namspaces = value
End Set
End Property
Property Parent As String
Get
Parent = _Parent
End Get
Set(value As String)
_Parent = value
End Set
End Property
Property Interfaces As String
Get
Interfaces = _Interface
End Get
Set(value As String)
_Interface = value
End Set
End Property
End Class