mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-25 22:23:42 +08:00
27 lines
972 B
TypeScript
27 lines
972 B
TypeScript
import { Type, toSnakeCase } from '../types';
|
|
|
|
export class EnumGenerator {
|
|
generate(enumType: Type): string[] {
|
|
const lines: string[] = [];
|
|
const enumName = `spine_${toSnakeCase(enumType.name)}`;
|
|
|
|
lines.push(`typedef enum ${enumName} {`);
|
|
|
|
if (enumType.values) {
|
|
for (let i = 0; i < enumType.values.length; i++) {
|
|
const value = enumType.values[i];
|
|
const cName = `SPINE_${toSnakeCase(enumType.name).toUpperCase()}_${toSnakeCase(value.name).toUpperCase()}`;
|
|
|
|
if (value.value !== undefined) {
|
|
lines.push(` ${cName} = ${value.value}${i < enumType.values.length - 1 ? ',' : ''}`);
|
|
} else {
|
|
lines.push(` ${cName}${i < enumType.values.length - 1 ? ',' : ''}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
lines.push(`} ${enumName};`);
|
|
|
|
return lines;
|
|
}
|
|
} |