Coder Social home page Coder Social logo

What am I doing wrong? about ctod HOT 12 CLOSED

schveiguy avatar schveiguy commented on May 27, 2024
What am I doing wrong?

from ctod.

Comments (12)

dkorpel avatar dkorpel commented on May 27, 2024 1

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.

schveiguy avatar schveiguy commented on May 27, 2024

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.

dkorpel avatar dkorpel commented on May 27, 2024

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.

schveiguy avatar schveiguy commented on May 27, 2024

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.

dkorpel avatar dkorpel commented on May 27, 2024

One thing jumped out at me immediately -- it does not replace unsigned char with ubyte or unsigned int with uint.

That's weird, I'm explicitly testing unsigned int:

ctod/source/ctod/test.d

Lines 21 to 22 in b33a2f2

@("types") unittest {
test("unsigned int x0;", "uint x0;");

I added a test for unsigned char and that passes for me as well.

from ctod.

schveiguy avatar schveiguy commented on May 27, 2024

I'll push the C file I translated to a branch, and maybe you can discover why it didn't do that.

from ctod.

schveiguy avatar schveiguy commented on May 27, 2024

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.

dkorpel avatar dkorpel commented on May 27, 2024

I fixed type translation inside sizeof(), I'm now looking at your original failure in rmodels.c

from ctod.

schveiguy avatar schveiguy commented on May 27, 2024

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.

dkorpel avatar dkorpel commented on May 27, 2024

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.

dkorpel avatar dkorpel commented on May 27, 2024

This issue is fixed by be78cc4 , please open a new one when you find something else.

from ctod.

schveiguy avatar schveiguy commented on May 27, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.