bmk_modinfo.bmx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. Strict
  2. Import "bmk_modutil.bmx"
  3. Import "bmk_util.bmx"
  4. Type TInfo
  5. Field info:TList=New TList
  6. Method Find$( key$ )
  7. key=key.ToLower()+":"
  8. For Local t$=EachIn info
  9. If t.ToLower()[..Len(key)]=key Return t[Len(key)..].Trim()
  10. Next
  11. End Method
  12. Method ReadFromStream:TModInfo( stream:TStream )
  13. While Not stream.Eof()
  14. Local t$=stream.ReadLine()
  15. If Not t Return
  16. info.AddLast t
  17. Wend
  18. End Method
  19. End Type
  20. Type TModInfo Extends TInfo
  21. Field name$
  22. Field version#
  23. Field modprivs$
  24. Field modserver$
  25. Field serverinfo:Object
  26. Function CreateFromModule:TModInfo( name$ )
  27. Local path$=ModuleInterface( name,"release."+processor.Platform()+"."+processor.CPU() )
  28. If FileType(path)<>FILETYPE_FILE Return
  29. Local src:TSourceFile=ParseSourceFile( path )
  30. If Not src Return
  31. Local modinfo:TModInfo=New TModInfo
  32. modinfo.name=name
  33. modinfo.info=src.info
  34. modinfo.info.AddFirst "Module: "+name
  35. modinfo.version=Float( modinfo.Find( "Version" ) )
  36. modinfo.modserver=modinfo.Find( "ModServer" )
  37. Return modinfo
  38. End Function
  39. Function CreateFromStream:TModInfo( stream:TStream )
  40. Local modinfo:TModInfo=New TModInfo
  41. modinfo.ReadFromStream stream
  42. modinfo.name=modinfo.Find( "Module" )
  43. If Not modinfo.name Return
  44. modinfo.version=Float( modinfo.Find( "Version" ) )
  45. modinfo.modprivs=modinfo.Find( "ModPrivs" )
  46. modinfo.modserver=modinfo.Find( "ModServer" )
  47. Return modinfo
  48. End Function
  49. End Type