소스 검색

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
No known key found for this signature in database 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. BIN
      tools/rlparser/rlparser.ico
  12. +24
    -0
      tools/rlparser/rlparser.rc
  13. BIN
      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.

BIN
tools/rlparser/rlparser.ico 파일 보기

Before After

+ 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

BIN
tools/rlparser/rlparser.rc.data 파일 보기


불러오는 중...
취소
저장