Comments (12)
Your first issue reduces to:
#ifndef MAX_MATERIAL_MAPS
#define MAX_MATERIAL_MAPS 12
#endif
unsigned int x;
And the problem lies with the hacky header guard remover like I suspected. It assumes all code to translate is between the #define
and #endif
and leaves the rest of the file untranslated. Working on a fix right now.
from ctod.
OK, the preprocessor directives seem to really mess with ctod. If I comment out all #ifdefs and #endif and #define, then it seems to do a LOT better. I can work with this.
from ctod.
It probably thinks that your define is a header guard and removes it.
Edit: looking at the source file you linked, the problem is bigger than that
I'll look at the code later.
from ctod.
My plan is to comment out the ifdefs anyway, and leave them there for reference, so for now I'm OK with it. It would be good to allow that without having to comment manually though.
One thing jumped out at me immediately -- it does not replace unsigned char
with ubyte
or unsigned int
with uint
.
from ctod.
One thing jumped out at me immediately -- it does not replace
unsigned char
withubyte
orunsigned int
withuint
.
That's weird, I'm explicitly testing unsigned int
:
Lines 21 to 22 in b33a2f2
I added a test for unsigned char
and that passes for me as well.
from ctod.
I'll push the C file I translated to a branch, and maybe you can discover why it didn't do that.
from ctod.
I think I sniffed it out. Looking at all the cases where unsigned
was still present were all cases of sizeof(unsigned int)
-> unsigned int.sizeof
. So I think maybe that translation is overriding the other?
In any case, here is the file that produces those: https://github.com/schveiguy/draylib/blob/rmodelsctod/raylib/rmodels2.c
from ctod.
I fixed type translation inside sizeof()
, I'm now looking at your original failure in rmodels.c
from ctod.
BTW, I think this is going to help me a ton. Parts that I was just going to leave as C I may be able to translate all of them.
Thanks for doing this, I would never have gotten this far!
from ctod.
I'm glad you find it useful too. It really does change the scale at which you can translate C, I would translate a 1000 line single-header library by hand, but would not have translated tens of thousands of lines like in glfw-d without a tool like this.
from ctod.
This issue is fixed by be78cc4 , please open a new one when you find something else.
from ctod.
raylib's rcore took me about a month of small free time pockets to translate. And that was about 6k LOC.
I'm almost tempted to run ctod on it and see how close it is to my hand-ported version lol.
from ctod.
Related Issues (20)
- What to do with linkage definitions? HOT 4
- ifndef with definition HOT 1
- for loop with multiple variables with different types doesn't translate well. HOT 5
- `typedef enum { ... } E;` should provide aliases for values HOT 5
- if(arr[idx] == val) adds the .ptr HOT 1
- casts using custom types and parentheses don't turn into cast statements HOT 5
- #defines ending with a comment get the semicolon at the end of the comment HOT 1
- varargs calls would be nice to translate HOT 2
- What to do with `char x[] = "str"` HOT 1
- static array parameters HOT 4
- non-initial float member of union shouldn't be default initialized to 0 HOT 1
- Somehow whole statements are missing HOT 2
- versions vs. enums HOT 3
- Let's talk about macros HOT 3
- bad static array translation HOT 2
- M1(arm) macOS support? HOT 1
- Integers 128bit support HOT 1
- Incorrect translation of array of structs HOT 2
- Fails to translate many C symbols in newer version of `raygui.h`, while it succeeded before. HOT 2
- Convert L"" literals to wstring HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ctod.