File: typeof_wrap.h

package info (click to toggle)
freecell-solver 5.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,256 kB
  • sloc: ansic: 28,700; perl: 10,050; xml: 5,600; python: 1,339; sh: 533; cpp: 275; makefile: 20; javascript: 8
file content (21 lines) | stat: -rw-r--r-- 971 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * This file is part of Freecell Solver. It is subject to the license terms in
 * the COPYING.txt file found in the top-level directory of this distribution
 * and at http://fc-solve.shlomifish.org/docs/distro/COPYING.html . No part of
 * Freecell Solver, including this file, may be copied, modified, propagated,
 * or distributed except according to the terms contained in the COPYING file.
 *
 * Copyright (c) 2012 Shlomi Fish
 */
// typeof_wrap.h - convenient wrappers for GCC's typeof
#pragma once

// These emulate the C++ auto keyword.
#define const_AUTO(myvar, expr) const typeof(expr) myvar = (expr)
#define var_AUTO(myvar, expr) typeof(expr) myvar = (expr)
#define var_PTR(myvar, expr) typeof((expr)[0]) *myvar = (expr)
#define const_PTR(myvar, expr) typeof((expr)[0]) *const myvar = (expr)

// Common macros for object slots.
#define const_SLOT(myslot, obj) const_AUTO(myslot, (obj)->myslot)
#define var_S_SLOT(myslot, obj) const_AUTO(myslot, (obj).myslot)