diff --git a/core/org.eclipse.cdt.core.tests/.project b/core/org.eclipse.cdt.core.tests/.project index a11a02c7c86..7a9fcbfb69c 100644 --- a/core/org.eclipse.cdt.core.tests/.project +++ b/core/org.eclipse.cdt.core.tests/.project @@ -36,5 +36,7 @@ org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 0c2ba0c267b..397512048fc 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,6 +1,14 @@ 2003-06-17 Brent Nicolle Added Interface tests of IStructure.java. +2003-06-17 Victor Mozgin + Added DeclaratorsTests.java (invocation in AllCoreTests). + Added DeclaratorsTests.cpp to org.eclipse.cdt.core.model.tests.resources. + +2003-06-16 Victor Mozgin + Added testOldKRFunctionDeclarations() to DOMTests. + Added testKRFunctionDeclarations() to TranslationUnitTests. + 2003-06-16 Vladimir Hirsl Added /build, /parser, /failures and /suite directories to the library. Copied resources from /model/org.eclipse.cdt.core.model.tests.resources @@ -8,10 +16,6 @@ Added class AISResultPrinter to format test results. Class AutomatedIntegrationSuite now implements IPlatformRunnable. -2003-06-17 Victor Mozgin - Added DeclaratorsTests.java (invocation in AllCoreTests). - Added DeclaratorsTests.cpp to org.eclipse.cdt.core.model.tests.resources. - 2003-06-14 Victor Mozgin Moved testBugSingleton192() from LokiFailures to DOMTests. Added testPointersToMembers() and testPointersToMemberFunctions() to DOMTests. diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java index 6d536c6355c..90379db43a6 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllCoreTests.java @@ -14,12 +14,12 @@ import junit.framework.TestSuite; * AllTests.java * This is the main entry point for running this suite of JUnit tests * for all tests within the package "org.eclipse.cdt.core.model" - * + * * @author Judy N. Green * @since Jul 19, 2002 */ public class AllCoreTests { - + public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } @@ -27,7 +27,7 @@ public class AllCoreTests { public static Test suite() { TestSuite suite = new TestSuite(AllCoreTests.class.getName()); - // Just add more test cases here as you create them for + // Just add more test cases here as you create them for // each class being tested suite.addTest(AllLanguageInterfaceTests.suite()); suite.addTest(CModelTests.suite()); @@ -35,9 +35,10 @@ public class AllCoreTests { suite.addTest(FlagTests.suite()); suite.addTest(ArchiveTests.suite()); suite.addTest(TranslationUnitTests.suite()); - + suite.addTest(DeclaratorsTests.suite()); + return suite; - + } } // End of AllCoreTests.java diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java index e7e5274bdf3..23684e8e0ba 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/AllLanguageInterfaceTests.java @@ -28,6 +28,7 @@ public class AllLanguageInterfaceTests { suite.addTest(IIncludeTests.suite()); suite.addTest(IMacroTests.suite()); suite.addTest(IStructureTests.suite()); + suite.addTest(ITemplateTests.suite()); return suite; } diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java index c9e69e96092..32f54eb9ff8 100644 --- a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/CModelElementsTests.java @@ -304,6 +304,12 @@ public class CModelElementsTests extends TestCase { assertEquals(var3.getElementName(), new String("vuShort")); assertEquals(var3.getTypeName(), new String("unsigned short ")); checkLineNumbers((CElement)var3, 75, 75); + + // MyPackage ---> function pointer: orig_malloc_hook + IVariable vDecl2 = (IVariable) nsVars.get(3); + assertEquals(vDecl2.getElementName(), new String("orig_malloc_hook")); + assertEquals(vDecl2.getTypeName(), new String ("void*(*)(const char*, int, size_t)")); + checkLineNumbers((CElement)vDecl2, 81, 81); } private void checkVariableDeclarations(IParent namespace){ @@ -313,12 +319,6 @@ public class CModelElementsTests extends TestCase { assertEquals(vDecl1.getElementName(), new String("evar")); assertEquals(vDecl1.getTypeName(), new String("int")); checkLineNumbers((CElement)vDecl1, 79, 79); - -// // MyPackage ---> function pointer: orig_malloc_hook -// IVariableDeclaration vDecl2 = (IVariableDeclaration) nsVarDecls.get(1); -// assertEquals(vDecl2.getElementName(), new String("orig_malloc_hook")); -// assertEquals(vDecl2.getTypeName(), new String ("void*(*)(const char*, int, size_t)")); -// checkLineNumbers((CElement)vDecl2, 81, 81); } private void checkFunctions(IParent namespace){ diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/DeclaratorsTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/DeclaratorsTests.java new file mode 100644 index 00000000000..a7c7082d634 --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/DeclaratorsTests.java @@ -0,0 +1,212 @@ +/* + * Created on Jun 9, 2003 + * by bnicolle + */ +package org.eclipse.cdt.core.model.tests; + +import org.eclipse.cdt.core.model.CModelException; +import org.eclipse.cdt.core.model.ICElement; +import org.eclipse.cdt.core.model.IFunction; +import org.eclipse.cdt.core.model.IFunctionDeclaration; +import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.core.model.ITypeDef; +import org.eclipse.cdt.core.model.IVariable; + + +import junit.framework.*; + + +/** + * @author bnicolle + * + */ +public class DeclaratorsTests extends IntegratedCModelTest { + /** + * @param name + */ + public DeclaratorsTests(String name) { + super(name); + } + + /** + * @see org.eclipse.cdt.internal.core.model.IntegratedCModelTest + */ + public String getSourcefileSubdir() { + return "resources/cmodel/"; + } + + /** + * @see org.eclipse.cdt.internal.core.model.IntegratedCModelTest + */ + public String getSourcefileResource() { + return "DeclaratorsTests.cpp"; + } + + /** + * @returns a test suite named after this class + * containing all its public members named "test*" + */ + public static Test suite() { + TestSuite suite= new TestSuite(DeclaratorsTests.class); + return suite; + } + + + public void testDeclarators_0001() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0001"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_FUNCTION_DECLARATION); + IFunctionDeclaration decl = (IFunctionDeclaration)element; + assertEquals(decl.getSignature(), "decl_0001(char)"); + assertEquals(decl.getReturnType(), "void"); + } + + public void testDeclarators_0002() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0002"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_FUNCTION_DECLARATION); + IFunctionDeclaration decl = (IFunctionDeclaration)element; + assertEquals(decl.getSignature(), "decl_0002(char)"); + assertEquals(decl.getReturnType(), "void"); + } + + public void testDeclarators_0003() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0003"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_FUNCTION_DECLARATION); + IFunctionDeclaration decl = (IFunctionDeclaration)element; + assertEquals(decl.getSignature(), "decl_0003(char)"); + assertEquals(decl.getReturnType(), "void"); + } + + public void testDeclarators_0004() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0004"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_FUNCTION_DECLARATION); + IFunctionDeclaration decl = (IFunctionDeclaration)element; + assertEquals(decl.getSignature(), "decl_0004(char)"); + assertEquals(decl.getReturnType(), "void*"); + } + + public void testDeclarators_0005() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0005"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_VARIABLE); + IVariable decl = (IVariable)element; + assertEquals(decl.getTypeName(), "void(*)(char)"); + } + + public void testDeclarators_0006() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0006"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_VARIABLE); + IVariable decl = (IVariable)element; + assertEquals(decl.getTypeName(), "void(*)(char)"); + } + + public void testDeclarators_0007() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0007"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_VARIABLE); + IVariable decl = (IVariable)element; + assertEquals(decl.getTypeName(), "void(*)(char)"); + } + + public void testDeclarators_0011() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0011"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void()(char)"); + } + + public void testDeclarators_0012() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0012"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void()(char)"); + } + + public void testDeclarators_0013() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0013"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void()(char)"); + } + + public void testDeclarators_0014() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0014"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void*()(char)"); + } + + public void testDeclarators_0015() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0015"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void(*)(char)"); + } + + public void testDeclarators_0016() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0016"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void(*)(char)"); + } + + public void testDeclarators_0017() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0017"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_TYPEDEF); + ITypeDef decl = (ITypeDef)element; + assertEquals(decl.getTypeName(), "void(*)(char)"); + } + + public void testDeclarators_0023() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0023"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_FUNCTION); + IFunction decl = (IFunction)element; + assertEquals(decl.getSignature(), "decl_0023(int)"); + assertEquals(decl.getReturnType(), "void(*(*))(char)"); + } + + public void testDeclarators_0024() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0024"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_VARIABLE); + IVariable decl = (IVariable)element; + assertEquals(decl.getTypeName(), "void(*(*(*)(int))(float))(char)"); + } + + public void testDeclarators_0031() throws CModelException { + ITranslationUnit tu = getTU(); + ICElement element = tu.getElement("decl_0031"); + assertNotNull(element); + assertEquals(element.getElementType(), ICElement.C_VARIABLE); + IVariable decl = (IVariable)element; + assertEquals(decl.getTypeName(), "int(*)(char(*)(bool))"); + } +} diff --git a/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/ITemplateTests.java b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/ITemplateTests.java new file mode 100644 index 00000000000..aef7a2ece36 --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/model/org/eclipse/cdt/core/model/tests/ITemplateTests.java @@ -0,0 +1,247 @@ +/* + * Created on Jun 17, 2003 + * by bnicolle + */ +package org.eclipse.cdt.core.model.tests; + +import org.eclipse.cdt.core.model.*; +import junit.framework.*; +import java.util.ArrayList; + + + +/** + * Class for testing ITemplate interface + * @author bnicolle + * + */ +public class ITemplateTests extends IntegratedCModelTest { + /** + * @param name + */ + public ITemplateTests(String name) { + super(name); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.model.tests.IntegratedCModelTest#getSourcefileSubdir() + */ + public String getSourcefileSubdir() { + return "resources/cmodel/"; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.model.tests.IntegratedCModelTest#getSourcefileResource() + */ + public String getSourcefileResource() { + return "ITemplate.cpp"; + } + /** + * @returns a test suite named after this class + * containing all its public members named "test*" + */ + public static Test suite() { + TestSuite suite= new TestSuite( IStructureTests.class.getName() ); + + // Interface tests: + suite.addTest( new ITemplateTests("testGetChildrenOfTypeTemplate")); + suite.addTest( new ITemplateTests("testGetNumberOfTemplateParameters")); + suite.addTest( new ITemplateTests("testGetTemplateParameterTypes")); + suite.addTest( new ITemplateTests("testGetTemplateSignature")); + + // Language Specification tests: + // TBD. + + return suite; + } + + public ArrayList getTemplateMethods(ITranslationUnit tu) + { + IStructure myElem = null; + try { + myElem = (IStructure) tu.getElement("TemplateContainer"); + } + catch( CModelException c ) { + assertNotNull( c ); + } + assertNotNull(myElem); + return myElem.getChildrenOfType(ICElement.C_TEMPLATE_METHOD); + } + + public void testGetChildrenOfTypeTemplate() { + ITranslationUnit tu = getTU(); + { + ArrayList arrayElements = tu.getChildrenOfType(ICElement.C_TEMPLATE_STRUCT); + String[] myExpectedValues = { + "Map" + }; + assertEquals(myExpectedValues.length, arrayElements.size()); + for(int i=0; i::first", + "IsGreaterThan", "Foo::fum" + }; + assertEquals(myExpectedValues.length, arrayElements.size()); + for(int i=0; i::S_start_free" + }; + assertEquals(myExpectedValues.length, arrayElements.size()); + for(int i=0; i", + "nonVector", + "ArrayOverlay", + "fum(int) : void", + "scrum(void) : void", // TODO: deduce the rules of () versus (void), compare below. + "nonVector::first() : const T&", // TODO: where should be? + // TODO: shouldn't signature indicate const function as well? + "IsGreaterThan(X, X) : bool", + "Foo::fum(int) : void", + "default_alloc_template::S_start_free : char*", + }; + assertEquals(myExpectedValues.length, arrayElements.size()); + for(int i=0; i A::nested::operator int() {} "); } + public void testOldKRFunctionDeclarations() throws Exception + { + // Parse and get the translaton unit + Writer code = new StringWriter(); + code.write("bool myFunction( parm1, parm2, parm3 )\n"); + code.write("const char* parm1;\n"); + code.write("int (*parm2)(float);\n"); + code.write("{}"); + TranslationUnit translationUnit = parse(code.toString()); + + // Get the declaration + List declarations = translationUnit.getDeclarations(); + assertEquals(1, declarations.size()); + SimpleDeclaration simpleDeclaration = (SimpleDeclaration)declarations.get(0); + assertEquals( simpleDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_bool ); + List declarators = simpleDeclaration.getDeclarators(); + assertEquals( 1, declarators.size() ); + Declarator functionDeclarator = (Declarator)declarators.get( 0 ); + assertEquals( functionDeclarator.getName().toString(), "myFunction" ); + + ParameterDeclarationClause pdc = functionDeclarator.getParms(); + assertNotNull( pdc ); + List parameterDecls = pdc.getDeclarations(); + assertEquals( 3, parameterDecls.size() ); + ParameterDeclaration parm1 = (ParameterDeclaration)parameterDecls.get( 0 ); + assertNotNull( parm1.getDeclSpecifier().getName() ); + assertEquals( "parm1", parm1.getDeclSpecifier().getName().toString() ); + List parm1Decls = parm1.getDeclarators(); + assertEquals( 1, parm1Decls.size() ); + + ParameterDeclaration parm2 = (ParameterDeclaration)parameterDecls.get( 1 ); + assertNotNull( parm2.getDeclSpecifier().getName() ); + assertEquals( "parm2", parm2.getDeclSpecifier().getName().toString() ); + List parm2Decls = parm2.getDeclarators(); + assertEquals( 1, parm2Decls.size() ); + + ParameterDeclaration parm3 = (ParameterDeclaration)parameterDecls.get( 2 ); + assertNotNull( parm3.getDeclSpecifier().getName() ); + assertEquals( "parm3", parm3.getDeclSpecifier().getName().toString() ); + List parm3Decls = parm3.getDeclarators(); + assertEquals( 1, parm3Decls.size() ); + + OldKRParameterDeclarationClause clause = pdc.getOldKRParms(); + assertNotNull( clause ); + assertEquals( clause.getDeclarations().size(), 2 ); + SimpleDeclaration decl1 = (SimpleDeclaration)clause.getDeclarations().get(0); + assertEquals( decl1.getDeclarators().size(), 1 ); + assertTrue(decl1.getDeclSpecifier().isConst()); + assertFalse(decl1.getDeclSpecifier().isVolatile()); + assertEquals( decl1.getDeclSpecifier().getType(), DeclSpecifier.t_char); + Declarator declarator1 = (Declarator)decl1.getDeclarators().get( 0 ); + assertEquals( declarator1.getName().toString(), "parm1" ); + Expression initValue1 = declarator1.getExpression(); + List ptrOps1 = declarator1.getPointerOperators(); + assertNotNull( ptrOps1 ); + assertEquals( 1, ptrOps1.size() ); + PointerOperator po1 = (PointerOperator)ptrOps1.get(0); + assertNotNull( po1 ); + assertFalse( po1.isConst() ); + assertFalse( po1.isVolatile() ); + assertEquals( po1.getType(), PointerOperator.t_pointer ); + + SimpleDeclaration declaration = (SimpleDeclaration)clause.getDeclarations().get(1); + assertEquals( declaration.getDeclSpecifier().getType(), DeclSpecifier.t_int ); + assertEquals( declaration.getDeclarators().size(), 1); + assertNull( ((Declarator)declaration.getDeclarators().get(0)).getName() ); + assertNotNull( ((Declarator)declaration.getDeclarators().get(0)).getDeclarator() ); + assertEquals( ((Declarator)declaration.getDeclarators().get(0)).getDeclarator().getName().toString(), "parm2" ); + ParameterDeclarationClause clause2 = ((Declarator)declaration.getDeclarators().get(0)).getParms(); + assertEquals( clause2.getDeclarations().size(), 1 ); + assertEquals( ((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclarators().size(), 1 ); + assertNull( ((Declarator)((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclarators().get(0)).getName() ); + assertEquals( ((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclSpecifier().getType(), DeclSpecifier.t_float ); + } } diff --git a/core/org.eclipse.cdt.core.tests/resources/cfiles/TranslationUnits.c b/core/org.eclipse.cdt.core.tests/resources/cfiles/TranslationUnits.c index b4f8bf60115..61326d05753 100644 --- a/core/org.eclipse.cdt.core.tests/resources/cfiles/TranslationUnits.c +++ b/core/org.eclipse.cdt.core.tests/resources/cfiles/TranslationUnits.c @@ -66,3 +66,9 @@ void func3() { printf("This is not really here\n"); } + +bool KRFunction( parm1, parm2, parm3 ) +const char* parm1; +int (*parm2)(float); +{ +} diff --git a/core/org.eclipse.cdt.core.tests/resources/cmodel/DeclaratorsTests.cpp b/core/org.eclipse.cdt.core.tests/resources/cmodel/DeclaratorsTests.cpp new file mode 100644 index 00000000000..f0d2c7e98c7 --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/resources/cmodel/DeclaratorsTests.cpp @@ -0,0 +1,24 @@ +void decl_0001(char); +void (decl_0002)(char); +void ((decl_0003))(char); + +void *decl_0004(char); +void (*decl_0005)(char); +void (*(decl_0006))(char); +void ((*decl_0007))(char); + +typedef void decl_0011(char); +typedef void (decl_0012)(char); +typedef void ((decl_0013))(char); + +typedef void *decl_0014(char); +typedef void (*decl_0015)(char); +typedef void (*(decl_0016))(char); +typedef void ((*decl_0017))(char); + +typedef void decl_0021(char); +void (*decl_0022)(char); +void (*(*decl_0023(int a)))(char) { return &decl_0021; } +void (*(*(*((decl_0024)))(int))(float))(char); + +int (*decl_0031)(char(*yyy)(bool)); diff --git a/core/org.eclipse.cdt.core.tests/resources/cmodel/IStructureTemplate.cpp b/core/org.eclipse.cdt.core.tests/resources/cmodel/IStructureTemplate.cpp deleted file mode 100644 index fb283bc2847..00000000000 --- a/core/org.eclipse.cdt.core.tests/resources/cmodel/IStructureTemplate.cpp +++ /dev/null @@ -1,15 +0,0 @@ -int z; - -template class nonVector { - public: - int x; - int y; - - T* head; - vector() { head =new T(); } - int length() { return 1; } - T& first() { return *head; } - const T& first() const { return *head; } -}; - - diff --git a/core/org.eclipse.cdt.core.tests/resources/cmodel/ITemplate.cpp b/core/org.eclipse.cdt.core.tests/resources/cmodel/ITemplate.cpp new file mode 100644 index 00000000000..367a36c7011 --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/resources/cmodel/ITemplate.cpp @@ -0,0 +1,61 @@ +// TEMPLATE_STRUCT +template +struct Map +{ + Key* keys; + Value* values; + SortAlgorithm* sortAlgorithm; + Map(); +}; + +// TEMPLATE_CLASS +template class nonVector { + private: + T* head; + + public: + nonVector() { head =new T(); } + int length() { return 1; } + T& first() { return *head; } + const T& first() const; +}; + +// TEMPLATE_UNION +template +union ArrayOverlay { + public: + X x[size]; + Y y[size]; + + static int numArrays; +}; + + +// TEMPLATE_METHODS +class TemplateContainer { + // these are in an enclosing class + template void fum(int i); + template void scrum(void) {}; +}; + +// TEMPLATE_FUNCTION +template const T& nonVector::first() const +{ + return *head; +} + +template bool IsGreaterThan(X,X); + +template void Foo::fum(int i) {} + +// TEMPLATE_VARIABLES +template char* default_alloc_template::S_start_free = 0; + +// an instantiation, not a template: +complex cf(0,0); +//template > +//Dictionary* TheSpellCheckDictionary; + +int success; + +