82 lines
2.2 KiB
Groovy
82 lines
2.2 KiB
Groovy
def inputTxt = new File(args[0]).text
|
|
def outputFile = new File(args[1])
|
|
def jStructName = args[2] as String
|
|
|
|
outputFile.text = ''
|
|
|
|
inputTxt = inputTxt
|
|
.replace('ImGuiID', 'int')
|
|
.replace('bool', 'boolean')
|
|
.replace('char*', 'String')
|
|
.replace('const char*', 'String')
|
|
|
|
def regex = ~'(\\w+)\\s+(\\w+)(?:.*?//(.+))?'
|
|
|
|
inputTxt.eachLine { line ->
|
|
def trimmedLine = line.trim()
|
|
|
|
if (!trimmedLine.contains(';') || trimmedLine.startsWith('#'))
|
|
return
|
|
|
|
def m = regex.matcher(trimmedLine)
|
|
|
|
def fieldType
|
|
def fieldName
|
|
def fieldComment
|
|
|
|
m.find()
|
|
|
|
fieldType = m.group(1)
|
|
fieldName = m.group(2)
|
|
fieldComment = m.group(3)?.trim()
|
|
|
|
def javadoc = null
|
|
|
|
if (fieldComment) {
|
|
javadoc = """ /**
|
|
| * $fieldComment
|
|
| */""".stripMargin()
|
|
}
|
|
|
|
def classTxt
|
|
|
|
if (fieldType == 'ImVec2') {
|
|
classTxt = """
|
|
|${javadoc ? javadoc : ''}
|
|
| public native void get${fieldName.capitalize()}(ImVec2 dstImVec2); /*
|
|
| Jni::ImVec2Cpy(env, &$jStructName->$fieldName, dstImVec2);
|
|
| */
|
|
|
|
|
|${javadoc ? javadoc : ''}
|
|
| public native float get${fieldName.capitalize()}X(); /*
|
|
| return $jStructName->${fieldName}.x;
|
|
| */
|
|
|
|
|
|${javadoc ? javadoc : ''}
|
|
| public native float get${fieldName.capitalize()}Y(); /*
|
|
| return $jStructName->${fieldName}.y;
|
|
| */
|
|
|
|
|
|${javadoc ? javadoc : ''}
|
|
| public native void set${fieldName.capitalize()}(float x, float y); /*
|
|
| $jStructName->${fieldName}.x = x;
|
|
| $jStructName->${fieldName}.y = y;
|
|
| */
|
|
""".stripMargin()
|
|
} else {
|
|
classTxt = """
|
|
|${javadoc ? javadoc : ''}
|
|
| public native $fieldType get${fieldName.capitalize()}(); /*
|
|
| return $jStructName->$fieldName;
|
|
| */
|
|
|
|
|
|${javadoc ? javadoc : ''}
|
|
| public native void set${fieldName.capitalize()}($fieldType ${fieldName.uncapitalize()}); /*
|
|
| $jStructName->$fieldName = ${fieldName.uncapitalize()};
|
|
| */
|
|
""".stripMargin()
|
|
}
|
|
|
|
outputFile << classTxt
|
|
}
|