Pigweed
C/C++ API Reference
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
apply.h
1// Copyright 2024 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14
15// Macros for working with arguments to function-like macros.
16#pragma once
17
18#include "pw_preprocessor/arguments.h"
19#include "pw_preprocessor/internal/apply_macros.h"
20
35#define PW_APPLY(macro, separator, forwarded_arg, ...) \
36 _PW_APPLY(_PW_PASTE2(_PW_APL, PW_FUNCTION_ARG_COUNT(__VA_ARGS__)), \
37 macro, \
38 separator, \
39 forwarded_arg, \
40 PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
41
42#define _PW_APPLY(function, macro, separator, forwarded_arg, ...) \
43 function(macro, separator, forwarded_arg, __VA_ARGS__)