浏览代码

REVIEWED: RENAMED: Renamed tool `raylib_parser` to `rlparser`

The tool can work with other libraries following `raylib.h` structure, keeping the `raylib_parser` name could be missleading. Also added an icon an reviewed Makefile an CI.
pull/5232/head
Ray 1周前
committed by Saksham Goyal
父节点
当前提交
51a9f07cba
找不到此签名对应的密钥 GPG 密钥 ID: 287D96BB5977A168
共有 13 个文件被更改,包括 163 次插入65 次删除
  1. +2
    -2
      .github/workflows/parse_api.yml
  2. +0
    -44
      tools/parser/Makefile
  3. +0
    -0
      tools/rlparser/LICENSE
  4. +118
    -0
      tools/rlparser/Makefile
  5. +13
    -11
      tools/rlparser/README.md
  6. +0
    -0
      tools/rlparser/output/raylib_api.json
  7. +0
    -0
      tools/rlparser/output/raylib_api.lua
  8. +0
    -0
      tools/rlparser/output/raylib_api.txt
  9. +0
    -0
      tools/rlparser/output/raylib_api.xml
  10. +6
    -8
      tools/rlparser/rlparser.c
  11. 二进制
      tools/rlparser/rlparser.ico
  12. +24
    -0
      tools/rlparser/rlparser.rc
  13. 二进制
      tools/rlparser/rlparser.rc.data

+ 2
- 2
.github/workflows/parse_api.yml 查看文件

@ -32,6 +32,6 @@ jobs:
set -x
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add tools/parser
git commit -m "Update raylib_api.* by CI"
git add tools/rlparser
git commit -m "rlparser: update raylib_api.* by CI"
git push

+ 0
- 44
tools/parser/Makefile 查看文件

@ -1,44 +0,0 @@
EXTENSION?=txt
FORMAT?=DEFAULT
.PHONY: all parse clean raylib_api
raylib_parser: raylib_parser.c
cc raylib_parser.c -o raylib_parser
raylib_api: ../../src/raylib.h raylib_parser
FORMAT=DEFAULT EXTENSION=txt $(MAKE) raylib_api.txt
FORMAT=JSON EXTENSION=json $(MAKE) raylib_api.json
FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml
FORMAT=LUA EXTENSION=lua $(MAKE) raylib_api.lua
raylib_api.$(EXTENSION): ../../src/raylib.h raylib_parser
./raylib_parser -i ../../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI
raymath_api.$(EXTENSION): ../../src/raymath.h raylib_parser
./raylib_parser -i ../../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI
rlgl_api.$(EXTENSION): ../../src/rlgl.h raylib_parser
./raylib_parser -i ../../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION"
reasings_api.$(EXTENSION): ../../examples/others/reasings.h raylib_parser
./raylib_parser -i ../../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF
raygui_api.$(EXTENSION): ../raygui.h raylib_parser
./raylib_parser -i ../raygui.h -o raygui_api.$(EXTENSION) -f $(FORMAT) -d RAYGUIAPI -t "RAYGUI IMPLEMENTATION"
parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) raygui_api.$(EXTENSION)
# `make parse` (and therefore `make all) requires
# rmem.h, physac.h and raygui.h to exist in the correct directory
# API files for individual headers can be created likeso, provided the relevant header exists:
# FORMAT=JSON EXTENSION=json make raygui_api.json
all: raylib_parser
FORMAT=DEFAULT EXTENSION=txt $(MAKE) parse
FORMAT=JSON EXTENSION=json $(MAKE) parse
FORMAT=XML EXTENSION=xml $(MAKE) parse
FORMAT=LUA EXTENSION=lua $(MAKE) parse
clean:
rm -f raylib_parser *.json *.txt *.xml *.lua

tools/parser/LICENSE → tools/rlparser/LICENSE 查看文件


+ 118
- 0
tools/rlparser/Makefile 查看文件

@ -0,0 +1,118 @@
EXTENSION?=txt
FORMAT?=DEFAULT
.PHONY: all parse clean raylib_api
# Determine PLATFORM_OS
# No uname.exe on MinGW!, but OS=Windows_NT on Windows!
# ifeq ($(UNAME),Msys) -> Windows
ifeq ($(OS),Windows_NT)
PLATFORM_OS = WINDOWS
else
UNAMEOS = $(shell uname)
ifeq ($(UNAMEOS),Linux)
PLATFORM_OS = LINUX
endif
ifeq ($(UNAMEOS),FreeBSD)
PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),OpenBSD)
PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),NetBSD)
PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),DragonFly)
PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),Darwin)
PLATFORM_OS = OSX
endif
endif
# Define default C compiler: CC
#------------------------------------------------------------------------------------------------
CC = gcc
ifeq ($(PLATFORM_OS),OSX)
# OSX default compiler
CC = clang
endif
ifeq ($(PLATFORM_OS),BSD)
# FreeBSD, OpenBSD, NetBSD, DragonFly default compiler
CC = clang
endif
# Define default make program: MAKE
#------------------------------------------------------------------------------------------------
MAKE ?= make
ifeq ($(PLATFORM_OS),WINDOWS)
MAKE = mingw32-make
endif
# Define compiler flags: CFLAGS
#------------------------------------------------------------------------------------------------
CFLAGS = -Wall -std=c99
#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes
ifeq ($(BUILD_MODE),DEBUG)
CFLAGS += -g -D_DEBUG
else
ifeq ($(PLATFORM_OS),OSX)
CFLAGS += -O2
else
CFLAGS += -s -O2
endif
endif
ifeq ($(PLATFORM_OS),WINDOWS)
# NOTE: The resource .rc file contains windows executable icon and properties
CFLAGS += rlparser.rc.data
endif
# Define processes to execute
#------------------------------------------------------------------------------------------------
# rlparser compilation
rlparser: rlparser.c
$(CC) rlparser.c -o rlparser $(CFLAGS)
# rlparser execution: [raylib.h] parse, generating some output files
raylib_api: ../../src/raylib.h rlparser
FORMAT=DEFAULT EXTENSION=txt $(MAKE) raylib_api.txt
FORMAT=JSON EXTENSION=json $(MAKE) raylib_api.json
FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml
FORMAT=LUA EXTENSION=lua $(MAKE) raylib_api.lua
# rlparser execution: [raylib.h] parse, generating some output files
raylib_api.$(EXTENSION): ../../src/raylib.h rlparser
./rlparser -i ../../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI
# rlparser execution: [rlgl.h] parse, generating some output files
rlgl_api.$(EXTENSION): ../../src/rlgl.h rlparser
./rlparser -i ../../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION"
# rlparser execution: [raymath.h] parse, generating some output files
raymath_api.$(EXTENSION): ../../src/raymath.h rlparser
./rlparser -i ../../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI
# rlparser execution: [reasings.h] parse, generating some output files
reasings_api.$(EXTENSION): ../../examples/others/reasings.h rlparser
./rlparser -i ../../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF
# rlparser execution: [raygui.h] parse, generating some output files
raygui_api.$(EXTENSION): ../raygui.h rlparser
./rlparser -i ../raygui.h -o raygui_api.$(EXTENSION) -f $(FORMAT) -d RAYGUIAPI -t "RAYGUI IMPLEMENTATION"
# Target to generate required APIs output files
parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) raygui_api.$(EXTENSION)
# "make parse" (and therefore "make all") requires
# raygui.h and reasings_api.h to exist in the correct directory
# API files for individual headers can be created likeso, provided the relevant header exists:
# FORMAT=JSON EXTENSION=json make raygui_api.json
all: rlparser
FORMAT=DEFAULT EXTENSION=txt $(MAKE) parse
FORMAT=JSON EXTENSION=json $(MAKE) parse
FORMAT=XML EXTENSION=xml $(MAKE) parse
FORMAT=LUA EXTENSION=lua $(MAKE) parse
# Clean rlparser and generated output files
clean:
rm -f rlparser *.json *.txt *.xml *.lua

tools/parser/README.md → tools/rlparser/README.md 查看文件

@ -1,4 +1,4 @@
# raylib parser
# rlparser - raylib parser
This parser scans [`raylib.h`](../src/raylib.h) to get information about `defines`, `structs`, `enums` and `functions`.
All data is separated into parts, usually as strings. The following types are used for data:
@ -8,16 +8,16 @@ All data is separated into parts, usually as strings. The following types are us
- `struct StructInfo`
- `struct EnumInfo`
Check `raylib_parser.c` for details about those structs.
Check `rlparser.c` for details about those structs.
## Command Line
```
//////////////////////////////////////////////////////////////////////////////////
// //
// raylib API parser //
// rlparser - raylib header API parser //
// //
// more info and bugs-report: github.com/raysan5/raylib/parser //
// more info and bugs-report: github.com/raysan5/raylib/tools/rlparser //
// //
// Copyright (c) 2021-2025 Ramon Santamaria (@raysan5) //
// //
@ -25,7 +25,7 @@ Check `raylib_parser.c` for details about those structs.
USAGE:
> raylib_parser [--help] [--input <filename.h>] [--output <filename.ext>] [--format <type>]
> rlparser [--help] [--input <filename.h>] [--output <filename.ext>] [--format <type>]
OPTIONS:
@ -50,19 +50,19 @@ OPTIONS:
EXAMPLES:
> raylib_parser --input raylib.h --output api.json
> rlparser --input raylib.h --output api.json
Process <raylib.h> to generate <api.json>
> raylib_parser --output raylib_data.info --format XML
> rlparser --output raylib_data.info --format XML
Process <raylib.h> to generate <raylib_data.info> as XML text data
> raylib_parser --input raymath.h --output raymath_data.info --format XML --define RMAPI
> rlparser --input raymath.h --output raymath_data.info --format XML --define RMAPI
Process <raymath.h> to generate <raymath_data.info> as XML text data
```
## Constraints
This parser is specifically designed to work with raylib.h, so, it has some constraints:
`rlparser` is specifically designed to work with `raylib.h`, so, it has some constraints:
- Functions are expected as a single line with the following structure:
```
@ -91,7 +91,7 @@ This parser is specifically designed to work with raylib.h, so, it has some cons
```
_NOTE: For enums, multiple options are supported:_
- If value is not provided, (<valueInteger[i -1]> + 1) is assigned
- Value description can be provided or not
@ -103,5 +103,7 @@ This parser **does not require `` library**, all data is parsed direct
### LICENSE: zlib/libpng
raylib-parser is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details.
raylib-parser is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software.
Check [LICENSE](LICENSE) for further details.

tools/parser/output/raylib_api.json → tools/rlparser/output/raylib_api.json 查看文件


tools/parser/output/raylib_api.lua → tools/rlparser/output/raylib_api.lua 查看文件


tools/parser/output/raylib_api.txt → tools/rlparser/output/raylib_api.txt 查看文件


tools/parser/output/raylib_api.xml → tools/rlparser/output/raylib_api.xml 查看文件


tools/parser/raylib_parser.c → tools/rlparser/rlparser.c 查看文件

@ -1,28 +1,28 @@
/**********************************************************************************************
raylib API parser
rlparser - raylib header API parser, extracts API information as separate tokens
This parser scans raylib.h to get API information about defines, structs, aliases, enums, callbacks and functions.
All data is divided into pieces, usually as strings. The following types are used for data:
- struct DefineInfo
- struct StructInfo
- struct AliasInfo
- struct EnumInfo
- struct FunctionInfo
WARNING: This parser is specifically designed to work with raylib.h, and has some contraints
in that regards. Still, it can also work with other header files that follow same file structure
conventions as raylib.h: rlgl.h, raymath.h, raygui.h, reasings.h
CONSTRAINTS:
This parser is specifically designed to work with raylib.h, so, it has some constraints:
- Functions are expected as a single line with the following structure:
<retType> <name>(<paramType[0]> <paramName[0]>, <paramType[1]> <paramName[1]>); <desc>
Be careful with functions broken into several lines, it breaks the process!
l">WARNING: Be careful with functions broken into several lines, it breaks the process!
- Structures are expected as several lines with the following form:
<desc>
typedef struct <name> {
<fieldType[0]> <fieldName[0]>; <fieldDesc[0]>
@ -31,7 +31,6 @@
} <name>;
- Enums are expected as several lines with the following form:
<desc>
typedef enum {
<valueName[0]> = <valueInteger[0]>, <valueDesc[0]>
@ -45,7 +44,6 @@
- Value description can be provided or not
OTHER NOTES:
- This parser could work with other C header files if mentioned constraints are followed.
- This parser does not require <string.h> library, all data is parsed directly from char buffers.

二进制
tools/rlparser/rlparser.ico 查看文件

之前 之后

+ 24
- 0
tools/rlparser/rlparser.rc 查看文件

@ -0,0 +1,24 @@
IDI_APP_ICON ICON "rlparser.ico"
1 VERSIONINFO
FILEVERSION 5,5,0,0
PRODUCTVERSION 5,5,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4" // English US
BEGIN
VALUE "CompanyName", "raylib technologies"
VALUE "FileDescription", "rlparser | raylib header API parser"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "rlparser"
VALUE "LegalCopyright", "(c) 2025 Ramon Santamaria (@raysan5)"
VALUE "OriginalFilename", "rlparser"
VALUE "ProductName", "rlparser"
VALUE "ProductVersion", "1.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252 // English US
END
END

二进制
tools/rlparser/rlparser.rc.data 查看文件


正在加载...
取消
保存