---
description: C++ function call indentation for OpenSTA
globs: ["**/*.cc", "**/*.hh", "**/*.h"]
alwaysApply: false
---

# C++ Function Call Indentation

## Short Calls — Single Line

When arguments fit within the column limit (90 chars), keep them on one line:

```cpp
// ✅ GOOD
adjusted_data_arrival = delaySum(required, data_shift_to_enable_clk, this);

// ❌ BAD
adjusted_data_arrival = delaySum(required,
                 data_shift_to_enable_clk,
                 this);
```

## Nested Function Calls — Align Under Inner Call

When breaking nested calls across lines:
- Indent continuation lines of the inner call under its first argument (align with content after `innerFunc(`).
- Place remaining outer arguments on the same line as the inner call's closing `)`, indented under the outer function.

```cpp
// ✅ GOOD
required = delayDiff(delaySum(max_delay,
                              search_->clkPathArrival(disable_path),
                              this),
                     margin, this);

// ❌ BAD
required = delayDiff(
             delaySum(max_delay,
                      search_->clkPathArrival(disable_path),
                      this),
             margin,
             this);
```
