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
}
}