Welcome to MacroExpressions

Home Products Services Download Contact us
<You are here>
Overview and more info about C-Slang, Unimal, Snob,
Consulting, products customization, custom development C-Slang, Unimal and Snob are available for evaluation Email, telephone and fax numbers

to MacroExpressions, home of

software tools
related services

All things embedded
 Embedded Star: Embedded Systems and Software Resources
Embedded Systems and Software Resources



What we do

MacroExpressions specializes in development of original software engineering tools and related services. From first-hand software development experience and practical needs came several useful tools which complement the common software development toolchains.

MacroExpressions products, Snob, Unimal, Maestra and C-SLang, supplement other tools by patching omissions identified in  optimization, reuse and maintainability of software projects.

Interesting products! [...] I think it could fulfill a need in certain areas!

Jack Ganssle

MacroExpressions products are complemented by MacroExpressions services. They include applications and/or customizing of the products.


CSR logo CSR
GE logo GE Enegy (Masoneilan Operations)
Microline logo Microline Technology Corporation
Haldex logo Haldex Brakes and Suspension Systems

Who should be MacroExpressions customers?

*C/C++ development teams which have to demonstrate unit test completion along with a proof of code/branch coverage could find MacroExpression's approach interesting. It provides a free framework with code instrumentation. It can be an alternative to those expensive tool suites.

*Embedded systems developers and project managers facing maintainability problems in "same-but-different" model-year or product line environment can put Unimal to good use.
*Engineers who design embedded devices and systems with testability in mind will benefit from using C-SLang.
*Embedded devices manufacturing and quality control personnel in particular will appreciate working with C-SLang-enabled devices.

*Companies distributing their code in source or library form often want to hide the intellectual property in it from prying eyes. Snob, the Simple Name OBfuscator, is a freely configurable tool replacing meaningful names in the code with meaningless look-alike names and thus making the code unreadable by humans.
*C-SLang and Unimal will help developers concerned with saving precious memory resources.
*Vendors and integrators of embedded development tools may find it advantageous to include Unimal and C-SLang as parts of their toolchains.
And anyone can benefit from reading the next section...

Products: first introduction

Maestra is a free reference implementation of C/C++ unit test environment. It depends only on your compiler to provide code instrumentation that may be used to prove code/branch coverage.

Snob is an inexpensive software tool for obfuscating meaningful names in your software project and for removing comments and thus for making it incomprehensible by humans. Companies use name obfuscation to protect intellectual property embodied in the distributable source code.

Snob is a name obfuscator which is independent of the project's programming language(s) and is simple yet as powerful as you care to configure it. In particular, it is capable of handling projects written in multiple programming languages, and it can preserve names or the whole files designated as Application Programmer's Interface.

Unimal is a unified (that is, independent of the target programming language) macro processor. It is designed to work wonders with static compile-time or, more precisely, build-time initialization. Unimal makes it possible:

  • To make more data become ROMable const data
  • To reduce RAM, ROM (data and code) footprint
  • To make the application launch faster

Moreover, Unimal is an embedded software configuration tool which equips programming languages with macro extensions greatly improving embedded project maintainability. It promotes project scalability and allows to automate, often to zero maintenance:

  • Data production, such as generating tabulated functions, lookup tables etc.
  • Compile-time parameter sharing across languages (e.g., making C array size visible to Assembler)
  • Data and access code adjustments in model year and/or product line environment

C-SLang is a tiny Assembler-like script language compiled into a virtual executable code by any ISO/ANSI C compiler: no other tools needed. Its mission is to enable comprehensive testability of ROMable embedded systems via downloadable test code modules and thus without ROM footprint penalties. This technique, sometimes called off-board diagnostics, is independent of the processor architecture if implemented with C-SLang, and allows to accumulate long lasting diagnostic code assets for all phases of embedded projects:

  • embedded design validation,
  • embedded manufacturing test, including ECU test and end-of-line testing, when all external components are attached,
  • investigative testing, diagnostics and analysis of field returns (failed units),

Moreover, C-SLang scripts can be linked in, which makes C-SLang useful for small tasks for which ROM is at premium and execution time is not:

  • on-board (built-in) diagnostics,
  • limited user interface
  • reactions to slow events
  • and more...
For more analysis, please, see the white paper, "Solving testability problems of resource-constrained embedded systems with interpreted languages", which is also available in pdf.

To wrap it up,

  • If you need to protect intellectual property in the distributable source or library code,
  • If you can benefit from advanced project configuration capabilities,
  • if your application requires sophisticated static initialization,
  • if your project requires extensive testing during manufacturing,
  • if you need to thoroughly verify that the software fits the hardware,
  • if you need to manage multiple similar projects

? then you may find yourself interested in MacroExpressions products.

What's new

Snob 1.1 is released. It now has an option to preserve the (empty) lines for removed multi-line comments. C sample configuration is updated to recognize pattern like L"abcd" and 1.f

MacroExpressions has celebrated five years of Unimal use in a safety-related build environment.

An error in a Maestra reference header (in instrumentation of the "for" keyword without variadic macros) has been corrected.

Snob was not able to work with Unix-style files with missing end-of-line character in the end. This has been corrected.

A major update to Maestra, a lightweght yet rigorous approach to unit testing, is posted. It provides better out-of-the-box C++ support and much better instrumentation output.