MetaC language extends C in a 100% backward compatible way.
Version: r70125MetaC language extends C in a 100% backward compatible way with reflective features and techniques for refactoring, reconfiguring and modifying arbitrary C source code.
Operating System: Linux
Therefore, the extensions provide special metadata types for working with source code information, syntactical structures for the definiton of code templates, and metafunctions to gather information about source code and refactor, modify, delete, or insert code.
Some of the modifications that can be done with MetaC, are also realizable with the C preprocessor. But the C preprocessor suffers certain limitations that can be overcome using MetaC.
The area of applications for MetaC is not limited to specific domains. But its concepts and its motivation has been derived from problems of CASE tools for embedded real-time systems (e.g. Mathwork's Matlab, Telelogic's Tau, Aonix's STP).
· Source code reconfiguration and refactoring in general.
· Abstraction of APIs and hardware-specific or vendor-specific implementations of well-defined functionallity (ever got locked to a specfic API by a RTOS vendor?).
· Source code instrumentation for WCET-analysis
· Adaption of source code to multiple embedded targets (especially differing native platform APIs) based upon an abstract machine model
· Application specific debug support (e.g. control-flow or data-flow tracing)
· Verification of domain- and application-specific constraints (e.g. MISRA's rules set for C based programs in automotive applicaitons)
Advantages of the Metaprogramming Approach:
· Source code modification is done based upon syntax. In consequence invalid modifications can be detected at the moment they are executed.
· Decision for code modifications can be made upon user parameters and information derived from the source code
· Crosscutting reconfigurations (i.e. reconfigurations concerning multiple functions or modules) of source code are possible.
What's New in This Release:
· Support for Win32 hosts was added.
· Support for initializer lists was added.
· Some C99 issues were fixed.
· Several more enhancements were made.
· A whole bunch of bugs were fixed.