<HTML><HEAD><link type="text/css" href="../css/main_styles.css" rel="stylesheet"></HEAD>
<BODY><TITLE>%mqc_check_single_cat_layer</TITLE><H1>%mqc_check_single_cat_layer </H1><P CLASS="Paragraph">Classname: <B>%mqc_check_single_cat_layer </B></P><P CLASS="Paragraph">Inherits from: <B><A href=..\checkmate\xug_base_checker.html>%ug_base_checker </A></B></P><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"> </PRE><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">
<B>Description:</B>
    Validate that the specified category contains given ranges of layers.
Parameters:
   (String) category:            - Name of the category to be checked
                                   This is a mandatory parameter.
   (String) layer_range_string:  - String of the layer range description.
                                   This is a mandatory parameter.
                                   The layer range description string may contain
                                   multiple range descriptions separated by commas, e.g.
                                   "1,3-5,7,9"
                                   means layer 1, plus layers 3 to 5
                                   plus layer 7, and layer 9.
    (Boolean)  disabled?         - If it is true, the checker is disabled.
                                   Default is False.
    (Boolean)  save_log_in_part  - The flag indicates whether the checking results can
                                   be saved to the part file
                                   Default is True.
  (Integer) log_type:            - Indicate which logging type to use to report
                                   the violation
                                   1 - log error
                                   2 - log warning
                                   3 - log information
                                   The default value is 1 which is to log error.
  (String)  log_msg:             - User defined message to be added when the system
                                   reports the violation.
                                   The default is an empty string.
Results:
   PASS    -- If all of the layers in the given category are in the given ranges .
   FAILED  -- If any of the layers in specified category are outsice of layer ranges.
   The system will generate a warning if the given category does not exist.

<B>See Also:</B>
    %mqc_check_multi_cat_layer
============================================================================================
Create a new checker from this template by providing the mandatory parameters:
  1. (Must) change the class name and the category name
  2. (Must) specify the Category / Layer mapping rules:
      (String)    category:             "CATEGORY_TO_BE_CHECKED";
      (String)    layer_range_string:   "1-5,20-30";
  3. (Optional) change log type:
      (Integer)    log_type:   1;
=============================================================================================
</PRE><PRE><FONT COLOR= blue>DefClass: %mqc_check_single_cat_layer( %ug_base_checker ); 
</FONT></PRE><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Check-Mate attributes and parameters </PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )               %test_category: "Template.File Structure";
   ( String )               %displayed_name: "Check Single Category / Layer Mapping";
   
</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Boolean Parameter )    disabled?: false;
   ( Boolean Parameter )    save_log_in_part: true;
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Checker specific parameters and attributes</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )                category_label: "Category Name";

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( string parameter )      category: "";
   ( string parameter )      layer_range_string:   "";
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  parameter for log_option                                       </PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( string )                layer_range_string_label:   "Layer Range Specification";


</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Integer Parameter )    log_type: 1;
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  parameter for log_message     </PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List )                 log_type_option: { LOG_ERROR, LOG_WARNING, LOG_INFO };
   ( String )               log_type_label: "Log Option";

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String Parameter )     log_msg: "";
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Attribute for check rules:</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )               log_msg_label: "Log Message";


   ( Boolean )   is_valid_layer?: If ( layer_range_string: = "" | layer_range_string: = noValue )
                                Then  false
                                Else  ug_rexp_match( layer_range_string: , "[0-9][0-9,\-]{0,}" );
</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List ) rules_to_check:
   @{
       If ( -( category: = "" ) )  & ( -( category: = noValue ) ) & ( -( layer_range_string: = "" ) ) & ( -( layer_range_string: = noValue ) )
   
       Then  { { category:, layer_range_string: } }
   
       Else  {};
   };


</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Checking...</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Any Uncached ) do_check: 

                    If  ( -is_valid_layer?: )

                    Then  ug_mqc_log( LOG_WARNING, {}, "Invalid layer string." )

                    Else If ( Empty?( rules_to_check: ) )

                    Then  ug_mqc_empty_param_warning()

                    Else  Loop
                    {
                        For  $each_rule  In  rules_to_check:;
                        For  $category  Is  First( $each_rule );
                        For  $layer_str  Is  Second( $each_rule );

                        Do
                          If ( ug_mqc_checkRequiredCategory( { $category }, LOG_WARNING, "" ) = 0 )

                          Then
                              ug_mqc_checkCategoryLayer( $category, $layer_str, Nth( log_type:, log_type_option: ), log_msg: )

                          Else
                              donothing;
                    };

</SPAN></FONT></PRE></DIV></TABLE><p class=EndLine>&nbsp;</p><p class=blank>&nbsp;</p></BODY></HTML>