Aktuell unterstützte C Sprachkonstrukte

  • Compilation Unit
  • Define
  • Operation
  • Variable
  • Typedef
  • Enum Typedef
  • Struct Typedef
  • Bit Struct Typedef
  • Union Typedef
  • Operation Pointer Typedef
  • Assignment
  • While
  • Do While
  • For
  • Procedure Call
  • Pointer Procedure Call
  • If
  • Switch
  • Return
  • Compound Statement
  • Suffix Statement
  • Prefix Statement
  • Variable Expression
  • Binary Expression
  • Unary Expression
  • Function Call
  • Pointer Function Call
  • Function Pointer
  • Type Cast
  • Prefix Expression
  • Suffix Expression
  • Conditional Expression
  • Define Expression
  • Size Of Expression

Generierter Beispiel Code

demo.h

#ifndef DEMO_H
#define DEMO_H


/**************************************************************************************************************************************************************
 *      Includes
 *************************************************************************************************************************************************************/
#include "demo_types.h"


/**************************************************************************************************************************************************************
 *      Type declarations
 *************************************************************************************************************************************************************/
typedef enum demo_EventKind_tag demo_EventKind;

enum demo_EventKind_tag
{
    demo_EventKind_INVALID,
    demo_EventKind_TACK
};


/**************************************************************************************************************************************************************
 *      Function declarations
 *************************************************************************************************************************************************************/

/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
extern void Demo_initialize(void);


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
extern void Demo_executeWithEvent( const demo_EventKind event );


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
extern demoTypes_StateKind Demo_getState(void);


#endif // DEMO_H

demo.c

/**************************************************************************************************************************************************************
 *      Includes
 *************************************************************************************************************************************************************/
#include "demo.h"


/**************************************************************************************************************************************************************
 *      Type declarations
 *************************************************************************************************************************************************************/
typedef struct Demo_compoundEvent_tag Demo_compoundEvent;

struct Demo_compoundEvent_tag
{
    demo_EventKind event;
};



/**************************************************************************************************************************************************************
 *      Internal function declarations
 *************************************************************************************************************************************************************/


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
static void _execute( const Demo_compoundEvent compoundEvent );


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
static void _setState( const demoTypes_StateKind newState );


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
static void _triggerPing( const Demo_compoundEvent compoundEvent );



/**************************************************************************************************************************************************************
 *      Internal function implementations
 *************************************************************************************************************************************************************/


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
static void _execute( const Demo_compoundEvent compoundEvent )
{
    switch ( _currentState )
    {
        case demoTypes_StateKind_NOT_INITIALIZED:
            _raiseFatalError();
            break;
        
        
        case demoTypes_StateKind_IN_TRANSITION:
            break;
        
        
        case demoTypes_StateKind_PING:
            _triggerPing( compoundEvent );
            break;
        
        
        case demoTypes_StateKind_PONG:
            _triggerPong( compoundEvent );
            break;
        
        
        default:
            _raiseFatalError();
            break;
    }
}


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
static void _setState( const demoTypes_StateKind newState )
{
    if ( newState != demoTypes_StateKind_IN_TRANSITION )
    {
        {
            demoTypes_StateKind oldState = _recentState;
        
        
            _currentState = newState;
            
            if ( newState != oldState )
            {
                _onStateChanged( oldState,
                                 newState );
            }
            else
            {
                // nothing to do here
            }
        }
    }
    else
    {
        _recentState = _currentState;
        _currentState = newState;
    }
}


/*!************************************************************************************************************************************************************
 *
 *************************************************************************************************************************************************************/
static void _triggerPing( const Demo_compoundEvent compoundEvent )
{
    if ( compoundEvent.event == demo_EventKind_TACK )
    {
        _exitPing();
        
        _enterPong();
    }
    else
    {
        // other events are ignored at the moment
    }
}