ocssw  1.0
Classes | Defines | Typedefs | Enumerations | Functions
/disk01/web/ocssw/build/inc/meris/epr_bitmask.h File Reference

(r8084/r7671)

Go to the source code of this file.

Classes

struct  EPR_SBmTerm
struct  EPR_SBmEvalContext
struct  EPR_SBmFlagDataset
struct  EPR_SParseInfo

Defines

#define FLAG_MASK_NOT_COMPUTED   ((epr_uint) -1)

Typedefs

typedef enum EPR_BmOpCode EPR_EBmOpCode

Enumerations

enum  EPR_BmOpCode {
  BMT_UNKNOWN = 0, BMT_REF, BMT_AND, BMT_OR,
  BMT_NOT
}
enum  EPR_Tok { BME_UNKNOWN = 0, BME_EOS, BME_SPECIAL, BME_NAME }

Functions

EPR_SBmEvalContext * epr_create_bm_eval_context (EPR_SProductId *product_id, int offset_x, int offset_y, EPR_SRaster *raster)
void epr_free_bm_eval_context (EPR_SBmEvalContext *context)
int epr_read_bitmask_data (const EPR_SProductId *product_id, const char *bm_expr, int xo, int yo, int raster_width, int raster_height, int s_x, int s_y, void *raster_buffer)
epr_boolean epr_eval_bm_term (EPR_SBmEvalContext *context, EPR_SBmTerm *term, int x, int y)
EPR_SBmTerm * epr_parse_bm_expr_str (const char *bm_expr)
epr_boolean epr_is_bm_name_token (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_EOS_token (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_expr_error (EPR_SParseInfo *parse_info)
int epr_get_token_char (EPR_SParseInfo *parse_info)
char * epr_consume_token (EPR_SParseInfo *parse_info)
void epr_next_bm_expr_token (EPR_SParseInfo *parse_info)
void epr_push_back_bm_expr_token (EPR_SParseInfo *parse_info)
void epr_set_bm_expr_error (EPR_SParseInfo *parse_info, const char *message)
int epr_tokenize_bm_expr (const char *bm_expr, int *bm_expr_pos, char **token)
EPR_SBmTerm * epr_create_bm_term (EPR_EBmOpCode op_code)
EPR_SBmTerm * epr_create_bm_REF_term (char *ds_name, char *flag_name)
EPR_SBmTerm * epr_create_bm_NOT_term (EPR_SBmTerm *arg)
EPR_SBmTerm * epr_create_bm_OR_term (EPR_SBmTerm *arg1, EPR_SBmTerm *arg2)
EPR_SBmTerm * epr_create_bm_AND_term (EPR_SBmTerm *arg1, EPR_SBmTerm *arg2)
void epr_free_bm_term (EPR_SBmTerm *term)
char * epr_create_bm_expr (EPR_SBmTerm *term)
void epr_print_bm_term (EPR_SBmTerm *term)
void epr_write_bm_term (EPR_SBmTerm *term, FILE *ostream)
EPR_SPtrArray * epr_create_flag_coding (EPR_SProductId *product_id, const char *str)
EPR_SFlagDef * epr_create_flag_def ()
void epr_free_flag_def (EPR_SFlagDef *flag_def)
void epr_free_flag_coding (EPR_SPtrArray *flag_coding)
EPR_SBmTerm * epr_parse_bm_expr (EPR_SParseInfo *parse_info, epr_boolean term_required)
EPR_SBmTerm * epr_parse_bm_OR_expr (EPR_SParseInfo *parse_info, epr_boolean term_required)
EPR_SBmTerm * epr_parse_bm_AND_expr (EPR_SParseInfo *parse_info, epr_boolean term_required)
EPR_SBmTerm * epr_parse_bm_unary_expr (EPR_SParseInfo *parse_info, epr_boolean term_required)
EPR_SBmTerm * epr_parse_bm_primary_expr (EPR_SParseInfo *parse_info, epr_boolean term_required)
epr_boolean epr_is_bm_OR_keyword (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_AND_keyword (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_NOT_keyword (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_AND_operator (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_OR_operator (EPR_SParseInfo *parse_info)
epr_boolean epr_is_bm_NOT_operator (EPR_SParseInfo *parse_info)

Define Documentation

#define FLAG_MASK_NOT_COMPUTED   ((epr_uint) -1)

Definition at line 27 of file epr_bitmask.h.


Typedef Documentation

Definition at line 32 of file epr_bitmask.h.


Enumeration Type Documentation

Enumerator:
BMT_UNKNOWN 
BMT_REF 
BMT_AND 
BMT_OR 
BMT_NOT 

Definition at line 38 of file epr_bitmask.h.

enum EPR_Tok
Enumerator:
BME_UNKNOWN 
BME_EOS 
BME_SPECIAL 
BME_NAME 

Definition at line 47 of file epr_bitmask.h.


Function Documentation

char* epr_consume_token ( EPR_SParseInfo *  parse_info)

Releases the actual token given expression.

Parameters:
parse_infoparse_info structure
Returns:
token

Definition at line 587 of file epr_bitmask.c.

EPR_SBmTerm* epr_create_bm_AND_term ( EPR_SBmTerm *  arg1,
EPR_SBmTerm *  arg2 
)

Creates a new bitmask reference AND term instance.

Definition at line 726 of file epr_bitmask.c.

EPR_SBmEvalContext* epr_create_bm_eval_context ( EPR_SProductId *  product_id,
int  offset_x,
int  offset_y,
EPR_SRaster *  raster 
)

Creates bit-mask evaluation context for the given raster and offsets of start corner

Parameters:
product_idthe product ID
offset_xX-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search
offset_yY-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search
rasterthe bitmask_raster
Returns:
bit-mask evaluated context for success, and error code otherwise

Definition at line 39 of file epr_bitmask.c.

char* epr_create_bm_expr ( EPR_SBmTerm *  term)

Creates a new bitmask expression from the given bitmask term.

The expression returned is a valid in the sense that the epr_parse_bm_expr() applied to the returned string would return an equivalent term.

Parameters:
termthe term to be converted

Definition at line 880 of file epr_bitmask.c.

EPR_SBmTerm* epr_create_bm_NOT_term ( EPR_SBmTerm *  arg)

Creates a new bitmask NOT term instance.

Definition at line 711 of file epr_bitmask.c.

EPR_SBmTerm* epr_create_bm_OR_term ( EPR_SBmTerm *  arg1,
EPR_SBmTerm *  arg2 
)

Creates a new bitmask OR term instance.

Definition at line 718 of file epr_bitmask.c.

EPR_SBmTerm* epr_create_bm_REF_term ( char *  ds_name,
char *  flag_name 
)

Creates a new bitmask reference term instance.

Definition at line 701 of file epr_bitmask.c.

EPR_SBmTerm* epr_create_bm_term ( EPR_EBmOpCode  op_code)

Creates a new bitmask term instance.

Definition at line 694 of file epr_bitmask.c.

EPR_SPtrArray* epr_create_flag_coding ( EPR_SProductId *  product_id,
const char *  str 
)

Creates the coding flag info

Parameters:
strthe local path to dddb
Returns:
the the pointer at the coding flag information.

Definition at line 333 of file epr_bitmask.c.

EPR_SFlagDef* epr_create_flag_def ( )

Creates the coding flag definition

Returns:
the the pointer at the coding flag definition information.

Definition at line 414 of file epr_bitmask.c.

epr_boolean epr_eval_bm_term ( EPR_SBmEvalContext *  context,
EPR_SBmTerm *  term,
int  x,
int  y 
)

Evaluates the given bitmask expression.

Parameters:
termthe bitmask term
xthe x co-ordinate in pixels
ythe y co-ordinate in pixels

Evaluates the given bitmask expression.

Parameters:
termthe bitmask term
xthe pixel's x co-ordinate
ythe pixel's y co-ordinate

Definition at line 174 of file epr_bitmask.c.

void epr_free_bm_eval_context ( EPR_SBmEvalContext *  context)

Release the memory allocated through a EPR_SBmEvalContext.

Parameters:
contextthe bit mask context, if NULL the function immediately returns zero.
Returns:
zero for success, an error code otherwise

Definition at line 62 of file epr_bitmask.c.

void epr_free_bm_term ( EPR_SBmTerm *  term)

Releases a new bitmask term instance.

Definition at line 844 of file epr_bitmask.c.

void epr_free_flag_coding ( EPR_SPtrArray *  flag_coding)

Releases the coding flag info

Definition at line 395 of file epr_bitmask.c.

void epr_free_flag_def ( EPR_SFlagDef *  flag_def)

Releases the coding flag definition

Definition at line 430 of file epr_bitmask.c.

int epr_get_token_char ( EPR_SParseInfo *  parse_info)

Gets the first character of token for the given expression or EOS.

Parameters:
parse_infoparse_info structure
Returns:
'(' , ')', '.' , '&' , '|' ,'!', or '\0' otherwise

Definition at line 580 of file epr_bitmask.c.

epr_boolean epr_is_bm_AND_keyword ( EPR_SParseInfo *  parse_info)

Definition at line 548 of file epr_bitmask.c.

epr_boolean epr_is_bm_AND_operator ( EPR_SParseInfo *  parse_info)

This group of functions is for recognizing the operator.

Parameters:
parse_infoparse_info structure
Returns:
TRUE or FALSE.

Definition at line 556 of file epr_bitmask.c.

epr_boolean epr_is_bm_EOS_token ( EPR_SParseInfo *  parse_info)

Tests the given expression for the end of string.

Parameters:
parse_infoparse_info structure
Returns:
TRUE if the EOS occurs, or FALSE otherwise

Definition at line 572 of file epr_bitmask.c.

epr_boolean epr_is_bm_expr_error ( EPR_SParseInfo *  parse_info)

Tests the given expression for errors.

Parameters:
parse_infoparse_info structure
Returns:
TRUE if no error occurs, or FALSE otherwise

Definition at line 576 of file epr_bitmask.c.

epr_boolean epr_is_bm_name_token ( EPR_SParseInfo *  parse_info)

Tests the given expression for operand name only (not operator).

Parameters:
parse_infoparse_info structure
Returns:
TRUE if the term is not NULL and an operand, or FALSE otherwise

Definition at line 568 of file epr_bitmask.c.

epr_boolean epr_is_bm_NOT_keyword ( EPR_SParseInfo *  parse_info)

Definition at line 552 of file epr_bitmask.c.

epr_boolean epr_is_bm_NOT_operator ( EPR_SParseInfo *  parse_info)

Definition at line 564 of file epr_bitmask.c.

epr_boolean epr_is_bm_OR_keyword ( EPR_SParseInfo *  parse_info)

This group of functions is for recognizing the keyword.

Parameters:
parse_infoparse_info structure
Returns:
TRUE or FALSE.

Definition at line 544 of file epr_bitmask.c.

epr_boolean epr_is_bm_OR_operator ( EPR_SParseInfo *  parse_info)

Definition at line 560 of file epr_bitmask.c.

void epr_next_bm_expr_token ( EPR_SParseInfo *  parse_info)

Selectss the next token given expression.

Parameters:
parse_infoparse_info structure

Definition at line 597 of file epr_bitmask.c.

EPR_SBmTerm* epr_parse_bm_AND_expr ( EPR_SParseInfo *  parse_info,
epr_boolean  term_required 
)

Definition at line 471 of file epr_bitmask.c.

EPR_SBmTerm* epr_parse_bm_expr ( EPR_SParseInfo *  parse_info,
epr_boolean  term_required 
)

This group of functions is for parsing the expression.

Parameters:
parse_infoparse_info structure
term_requiredthe boolean value expression.
Returns:
the bit mask term (see EPR_BmTerm).

Definition at line 445 of file epr_bitmask.c.

EPR_SBmTerm* epr_parse_bm_expr_str ( const char *  bm_expr)

Parses a bitmask expression string.

The bit-mask expressions recognized by this parser must have the following syntax:

<blockquote>

bit-mask-expression :=
    or-expression

or-expression :=
    and-expression
    or-expression or and-expression

and-expression :=
    not-expression
    and-expression and not-expression

not-expression :=
    primary-expression
    not not-expression

primary-expression :=
    flag-reference
    ( bit-mask-expression )

flag-reference :=
    dataset-name.flag-name </blockquote>

Where dataset-name and flag-name are names specific for a particular data product. Names are in general resolved case-insenitively. The parser also accepts an alternate notation for the boolean operators: <blockquote> The | character for the or operator,
the & character for the and operator and finally
the ! character for the not operator. </blockquote>

For example, the following parseBitmaskExpression request will perform without errors:

     BitmaskTerm term = BitmaskExpressionParser.parse("flags.LAND and not flags.DDV");
 

Another example for a valid expression in alternatate notation is:

     BitmaskTerm term = BitmaskExpressionParser.parse("flags.LAND | (flags.COASTLINE & !flags.CLOUD)");
 

The terms created in the examples above could successfully be evaluated in an evaluation context provided by an ENVISAT MERIS Level 2 data product.

Parameters:
bm_exprthe bitmask expression
Returns:
the bitmask term representing the given expression

Parses the bit-mask expression given as character string.

Parameters:
bm_exprthe bit-mask expression given as character string
Returns:
the bit-mask term tree representing the bit-mask expression
Exceptions:
BitmaskExpressionParseExceptionif the given code could not be epr_parse'd
IOExceptionif an I/O error occurs

Definition at line 307 of file epr_bitmask.c.

EPR_SBmTerm* epr_parse_bm_OR_expr ( EPR_SParseInfo *  parse_info,
epr_boolean  term_required 
)

Definition at line 451 of file epr_bitmask.c.

EPR_SBmTerm* epr_parse_bm_primary_expr ( EPR_SParseInfo *  parse_info,
epr_boolean  term_required 
)

Definition at line 508 of file epr_bitmask.c.

EPR_SBmTerm* epr_parse_bm_unary_expr ( EPR_SParseInfo *  parse_info,
epr_boolean  term_required 
)

Definition at line 492 of file epr_bitmask.c.

void epr_print_bm_term ( EPR_SBmTerm *  term)

Prints the given term as an expression to the console.

Definition at line 925 of file epr_bitmask.c.

void epr_push_back_bm_expr_token ( EPR_SParseInfo *  parse_info)

Definition at line 608 of file epr_bitmask.c.

int epr_read_bitmask_data ( const EPR_SProductId *  product_id,
const char *  bm_expr,
int  xo,
int  yo,
int  raster_width,
int  raster_height,
int  s_x,
int  s_y,
void *  raster_buffer 
)

Reads bit-mask pixels of the given product for the given bit-mask expression for the given region and and with the given sub-sampling.

<blockquote>

bit-mask-expression :=
    or-expression

or-expression :=
    and-expression
    or-expression or and-expression

and-expression :=
    not-expression
    and-expression and not-expression

not-expression :=
    primary-expression
    not not-expression

primary-expression :=
    flag-reference
    ( bit-mask-expression )

flag-reference :=
    dataset-name.flag-name </blockquote>

Where dataset-name and flag-name are names specific for a particular data product. Names are in general resolved case-insenitively. The parser also accepts an alternate notation for the boolean operators: <blockquote> The | character for the or operator,
the & character for the and operator and finally
the ! character for the not operator. </blockquote>

Parameters:
product_idthe product ID
bm_exprthe bit-mask expression
xoX-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search
yoY-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search
raster_widththe width in pixel co-ordinates of the raster to search
raster_heightthe height in pixel co-ordinates of raster to search
s_xX-step in pixel co-ordinates to get the next raster to search
s_yY-step in pixel co-ordinates to get the next raster to search
raster_buffer[BYTE] the memory buffer to save information was read
Returns:
zero for success, and error code otherwise
void epr_set_bm_expr_error ( EPR_SParseInfo *  parse_info,
const char *  message 
)

Definition at line 612 of file epr_bitmask.c.

int epr_tokenize_bm_expr ( const char *  bm_expr,
int *  bm_expr_pos,
char **  token 
)

Definition at line 635 of file epr_bitmask.c.

void epr_write_bm_term ( EPR_SBmTerm *  term,
FILE *  ostream 
)

Writes the given term as an expression to the given output stream.

Definition at line 933 of file epr_bitmask.c.