blenderGenerate.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import dump
  2. header = """/* Copyright (C) 2006 Charlie C
  3. *
  4. * This software is provided 'as-is', without any express or implied
  5. * warranty. In no event will the authors be held liable for any damages
  6. * arising from the use of this software.
  7. *
  8. * Permission is granted to anyone to use this software for any purpose,
  9. * including commercial applications, and to alter it and redistribute it
  10. * freely, subject to the following restrictions:
  11. *
  12. * 1. The origin of this software must not be misrepresented; you must not
  13. * claim that you wrote the original software. If you use this software
  14. * in a product, an acknowledgment in the product documentation would be
  15. * appreciated but is not required.
  16. * 2. Altered source versions must be plainly marked as such, and must not be
  17. * misrepresented as being the original software.
  18. * 3. This notice may not be removed or altered from any source distribution.
  19. */
  20. // Auto generated from makesdna dna.c
  21. """
  22. dtList = dump.DataTypeList
  23. out = "../BlenderSerialize/autogenerated/"
  24. spaces = 4
  25. def addSpaces(file, space):
  26. for i in range(0, space):
  27. file.write(" ")
  28. def write(file, spaces, string):
  29. addSpaces(file, spaces)
  30. file.write(string)
  31. ###################################################################################
  32. blender = open(out+"blender.h", 'w')
  33. blender.write(header)
  34. blender.write("#ifndef __BLENDER_H__\n")
  35. blender.write("#define __BLENDER_H__\n")
  36. for dt in dtList:
  37. blender.write("#include \"%s.h\"\n"%dt.filename)
  38. blender.write("#endif//__BLENDER_H__")
  39. blender.close()
  40. ###################################################################################
  41. blenderC = open(out+"blender_Common.h", 'w')
  42. blenderC.write(header)
  43. blenderC.write("#ifndef __BLENDERCOMMON_H__\n")
  44. blenderC.write("#define __BLENDERCOMMON_H__\n")
  45. strUnRes = """
  46. // put an empty struct in the case
  47. typedef struct bInvalidHandle {
  48. int unused;
  49. }bInvalidHandle;
  50. """
  51. blenderC.write(strUnRes)
  52. blenderC.write("namespace Blender {\n")
  53. for dt in dtList:
  54. write(blenderC, 4, "class %s;\n"%dt.name)
  55. blenderC.write("}\n")
  56. blenderC.write("#endif//__BLENDERCOMMON_H__")
  57. blenderC.close()
  58. for dt in dtList:
  59. fp = open(out+dt.filename+".h", 'w')
  60. fp.write(header)
  61. strUpper = dt.filename.upper()
  62. fp.write("#ifndef __%s__H__\n"%strUpper)
  63. fp.write("#define __%s__H__\n"%strUpper)
  64. fp.write("\n\n")
  65. fp.write("// -------------------------------------------------- //\n")
  66. fp.write("#include \"blender_Common.h\"\n")
  67. for i in dt.includes:
  68. fp.write("#include \"%s\"\n"%i)
  69. fp.write("\nnamespace Blender {\n")
  70. fp.write("\n\n")
  71. addSpaces(fp,4)
  72. fp.write("// ---------------------------------------------- //\n")
  73. write(fp, 4, "class %s\n"%dt.name)
  74. write(fp, 4, "{\n")
  75. write(fp, 4, "public:\n")
  76. for i in dt.dataTypes:
  77. write(fp, 8, i+";\n")
  78. write(fp, 4, "};\n")
  79. fp.write("}\n")
  80. fp.write("\n\n")
  81. fp.write("#endif//__%s__H__\n"%strUpper)
  82. fp.close()