Under Review
over 1 year ago

Feature-request: add pre-processor with inline functions to Monkey C

Please consider adding some pre-processor to Monkey C, similar to C.

For example we could have inline functions. It would make developers life much easier: the readability of the code would improve, in many cases the binary size could be decreased  litte-bit.

#inline function myfunc(a) {return App.getApp().getProperty("LeftGoalType") == GOAL_TYPE_FOO || App.getApp().getProperty("RightGoalType") == GOAL_TYPE_FOO;}

or:

#inline myfunc(a) App.getApp().getProperty("LeftGoalType") == GOAL_TYPE_FOO || App.getApp().getProperty("RightGoalType") == GOAL_TYPE_FOO

Parents
  • Not quite the same, but I've just published an extension which does source-to-source optimization. Currently it just substitutes enums and consts for their values, does simple inlining when the result is a literal, and does some constant folding on the results. It also strips dead code where possible. I'm also planning to do conditional elimination when the condition is constant. so you could do things like:

    (:release)
    const DEBUG = false;
    (:debug)
    const DEBUG = true;
    ...
    function foo() {
      if (DEBUG) {
         System.println("whatever");
      }
      ...
    }

    and the code under DEBUG would be fully eliminated in release builds.

    See forums.garmin.com/.../optimizing-monkey-c-code

Comment
  • Not quite the same, but I've just published an extension which does source-to-source optimization. Currently it just substitutes enums and consts for their values, does simple inlining when the result is a literal, and does some constant folding on the results. It also strips dead code where possible. I'm also planning to do conditional elimination when the condition is constant. so you could do things like:

    (:release)
    const DEBUG = false;
    (:debug)
    const DEBUG = true;
    ...
    function foo() {
      if (DEBUG) {
         System.println("whatever");
      }
      ...
    }

    and the code under DEBUG would be fully eliminated in release builds.

    See forums.garmin.com/.../optimizing-monkey-c-code

Children
No Data