// ==========================================
// 1. BLOCK-DEFINITION 
// ==========================================
Blockly.defineBlocksWithJsonArray([{
  "type": "ard_math_even_odd",
  "message0": "%1 ist %2",
  "args0": [
    {
      "type": "input_value",
      "name": "VALUE"
    },
    {
      "type": "field_dropdown",
      "name": "PROPERTY",
      "options": [
        ["gerade", "EVEN"],
        ["ungerade", "ODD"]
      ]
    }
  ],
  "output": null,
  "colour": 230,
  "tooltip": "Prüft, ob eine Zahl gerade oder ungerade ist.",
  "helpUrl": ""
}]);

// ==========================================
// 2. GENERATOR-LOGIK 
// ==========================================
ArduinoGenerator.forBlock['ard_math_even_odd'] = function(block) {
  const value = ArduinoGenerator.valueToCode(block, 'VALUE', 0) || '0';
  const property = block.getFieldValue('PROPERTY');
  
  let code = '';
  
  // Direkte und schnellste C++ Abfrage über das niedrigste Bit
  if (property === 'EVEN') {
    code = `((${value} & 1) == 0)`;
  } else {
    code = `((${value} & 1) != 0)`;
  }
  
  return [code, 0]; 
};