os-cmpi-xen

annotate src/Xen_SettingDataParser.y @ 121:4868ace2726b

Add initial consistence checks in test suite for Xen_MemoryPool, Xen_ProcessorPool and Xen_VirtualSystemManagementService.

Signed-off-by: Luke Szymanski <Lukasz.Szymanski@Unisys.com>
author Jim Fehlig <jfehlig@novell.com>
date Fri Jun 08 10:22:05 2007 -0600 (2007-06-08)
parents 4ae953dc7f33
children
rev   line source
jfehlig@9 1 /* DEFINITIONS SECTION */
jfehlig@9 2 /* Everything between %{ ... %} is copied verbatim to the start of the parser generated C code. */
jfehlig@9 3
jfehlig@9 4 %{
jfehlig@9 5 #include <stdlib.h>
jfehlig@9 6
jfehlig@9 7 #include "cmpiutil.h"
jfehlig@9 8 #include "cmpimacs.h" /* Contains CMSetProperty() */
jfehlig@9 9
jfehlig@9 10 #define RC_OK 0
jfehlig@9 11 #define RC_EOF EOF
jfehlig@9 12
jfehlig@9 13 /* DEFINE ANY GLOBAL VARS HERE */
jfehlig@9 14 static CMPIBroker * _BROKER;
jfehlig@9 15 static CMPIInstance ** _INSTANCE; /* The current instance that is being read into */
jfehlig@9 16 %}
jfehlig@9 17
jfehlig@9 18 /* List all possible CIM property types that can be returned by the lexer */
jfehlig@9 19 %union {
jfehlig@9 20 /* Note - we override the CIM definition of string to make this data type
jfehlig@9 21 easier to handle in the lexer/parser. Instead implemented as simple text string. */
jfehlig@9 22 char * string;
jfehlig@9 23 CMPIBoolean boolean;
jfehlig@9 24 CMPISint64 sint64;
jfehlig@9 25 }
jfehlig@9 26
jfehlig@9 27 /* DEFINE SIMPLE (UNTYPED) LEXICAL TOKENS */
jfehlig@9 28 %token INSTANCE OF ENDOFFILE
jfehlig@9 29
jfehlig@9 30 /* DEFINE LEXICAL TOKENS THAT RETURN A VALUE AND THEIR RETURN TYPE (OBTAINED FROM THE %union ABOVE) */
jfehlig@9 31 %token <string> CLASSNAME
jfehlig@9 32 %token <string> PROPERTYNAME
jfehlig@9 33 %token <string> STRING
jfehlig@9 34 %token <boolean> BOOLEAN
jfehlig@9 35 %token <sint64> INTEGER
jfehlig@9 36
jfehlig@9 37 /* END OF DEFINITIONS SECTION */
jfehlig@9 38 %%
jfehlig@9 39
jfehlig@9 40 /* RULES SECTION */
jfehlig@9 41 /* DESCRIBE THE SYNTAX OF EACH INSTANCE ENTRY IN THE SOURCE FILE */
jfehlig@9 42
jfehlig@9 43 instance: /* empty */
jfehlig@9 44 | INSTANCE OF CLASSNAME '{'
jfehlig@9 45 {
jfehlig@9 46 fprintf(stderr,"classname = %s\n",$3);
jfehlig@9 47 *_INSTANCE = _CMNewInstance(_BROKER, "root/cimv2", $3, NULL);
jfehlig@9 48 free($3);
jfehlig@9 49 }
jfehlig@9 50 properties '}' ';'
jfehlig@9 51 {
jfehlig@9 52 /* Return after reading in each instance */
jfehlig@9 53 return RC_OK;
jfehlig@9 54 }
jfehlig@9 55
jfehlig@9 56 | ENDOFFILE { return RC_EOF; }
jfehlig@9 57 ;
jfehlig@9 58
jfehlig@9 59 properties: /* empty */
jfehlig@9 60 | ENDOFFILE
jfehlig@9 61 | property
jfehlig@9 62 | property properties
jfehlig@9 63 ;
jfehlig@9 64
jfehlig@9 65 property: PROPERTYNAME '=' STRING ';'
jfehlig@9 66 {
jfehlig@9 67 fprintf(stderr,"propertyname = %s\n",$1);
jfehlig@9 68 fprintf(stderr,"\ttype = CMPI_chars\n");
jfehlig@9 69 fprintf(stderr,"\tvalue = %s\n",$3);
jfehlig@9 70 CMSetProperty( *_INSTANCE, $1, $3, CMPI_chars );
jfehlig@9 71 free($1); free($3);
jfehlig@9 72 }
jfehlig@9 73
jfehlig@9 74 | PROPERTYNAME '=' INTEGER ';'
jfehlig@9 75 {
jfehlig@9 76 fprintf(stderr,"propertyname = %s\n",$1);
jfehlig@9 77 fprintf(stderr,"\ttype = CMPI_sint64\n");
jfehlig@9 78 fprintf(stderr,"\tvalue = %lld\n",$3);
jfehlig@9 79 unsigned long long value = $3;
jfehlig@87 80 CMSetProperty( *_INSTANCE, $1, &(value), CMPI_uint64 );
jfehlig@9 81 free($1);
jfehlig@9 82 }
jfehlig@9 83
jfehlig@9 84 | PROPERTYNAME '=' BOOLEAN ';'
jfehlig@9 85 {
jfehlig@9 86 fprintf(stderr,"propertyname = %s\n",$1);
jfehlig@9 87 fprintf(stderr,"\ttype = CMPI_boolean\n");
jfehlig@9 88 fprintf(stderr,"\tvalue = %d\n",$3);
jfehlig@9 89 CMSetProperty( *_INSTANCE, $1, &($3), CMPI_boolean );
jfehlig@9 90 free($1);
jfehlig@9 91 }
jfehlig@9 92 ;
jfehlig@9 93
jfehlig@9 94 /* END OF RULES SECTION */
jfehlig@9 95 %%
jfehlig@9 96
jfehlig@9 97 /* USER SUBROUTINE SECTION */
jfehlig@9 98
jfehlig@9 99 int Xen_SettingDatayyparseinstance( CMPIBroker * broker, CMPIInstance ** instance )
jfehlig@9 100 {
jfehlig@9 101 _BROKER = broker;
jfehlig@9 102 _INSTANCE = instance;
jfehlig@9 103
jfehlig@9 104 /* Parse the next instance */
jfehlig@9 105 return(Xen_SettingDatayyparse());
jfehlig@9 106 }
jfehlig@9 107