Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: c2efe891e5fa9b7c2b8447b6eca447506d0c0ac3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 * Copyright (c) 2013 QNX Software Systems and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 */
package org.eclipse.cdt.qt.core.index;

import java.util.Collection;

/**
 * Qt provides macros for marking member functions as special.  The moc compiler
 * recognizes these annotations and generates extra code to implement the special
 * behaviour.
 *
 * This interface is used to represent these methods in the Qt index.  It is used
 * for member functions that have been marked as signals, slots, and invokables.
 */
public interface IQMethod extends IQElement, IQObject.IMember {

	/**
	 * The kind of Qt annotation that has been applied to this member function.
	 * Signals and slots are implicitly invokable, if a single member function
	 * has been tagged with both signal/slot and invokable, the kind will be
	 * Signal or Slot.
	 */
	public static enum Kind {
		Unspecified,
		Invokable,
		Signal,
		Slot;
	}

	/**
	 * The kind of Qt annotation that has been applied to this member function.  Signals and
	 * slots are implicitly invokable, if a single member function has been tagged with both
	 * signal and invokable, the kind will be Signal (and likewise for Slot).
	 */
	public Kind getKind();

	/**
	 * Returns the function name of the method.
	 */
	public String getName();

	/**
	 * Returns the normalized C++ function signatures of the receiver method.  There is
	 * more than one signature only when at least one parameter has a default value.
	 * E.g., for
	 * #signal1 in:
	 * <pre>
	 * class T : public QObject
	 * {
	 * Q_OBJECT
	 * Q_SIGNAL void signal1( int = 5 );
	 * };
	 * </pre>
	 * This would return "{ signal1(int), signal1() }".
	 */
	public Collection<String> getSignatures();

	/**
	 * Return the revision if this method was tagged with the Q_REVISION macro and null
	 * otherwise.  The return type is Long in order to accommodate unsigned C++ 32-bit
	 * values.
	 */
	public Long getRevision();
}

Back to the top