diff --git a/src/shared/cplusplus/Symbols.cpp b/src/shared/cplusplus/Symbols.cpp
index df059c9776bdf8de663184d01cf45ff9d46724a0..8f2400976d97522b28035ad9f95eda49e5a67ab1 100644
--- a/src/shared/cplusplus/Symbols.cpp
+++ b/src/shared/cplusplus/Symbols.cpp
@@ -697,6 +697,36 @@ ObjCClass::ObjCClass(TranslationUnit *translationUnit, unsigned sourceLocation,
 ObjCClass::~ObjCClass()
 {}
 
+bool ObjCClass::isInterface() const
+{ return _isInterface; }
+
+void ObjCClass::setInterface(bool isInterface)
+{ _isInterface = isInterface; }
+
+bool ObjCClass::isCategory() const
+{ return _categoryName != 0; }
+
+const Name *ObjCClass::categoryName() const
+{ return _categoryName; }
+
+void ObjCClass::setCategoryName(const Name *categoryName)
+{ _categoryName = categoryName; }
+
+ObjCBaseClass *ObjCClass::baseClass() const
+{ return _baseClass; }
+
+void ObjCClass::setBaseClass(ObjCBaseClass *baseClass)
+{ _baseClass = baseClass; }
+
+unsigned ObjCClass::protocolCount() const
+{ return _protocols.size(); }
+
+ObjCBaseProtocol *ObjCClass::protocolAt(unsigned index) const
+{ return _protocols.at(index); }
+
+void ObjCClass::addProtocol(ObjCBaseProtocol *protocol)
+{ _protocols.push_back(protocol); }
+
 FullySpecifiedType ObjCClass::type() const
 { return FullySpecifiedType(const_cast<ObjCClass *>(this)); }
 
@@ -747,6 +777,15 @@ ObjCProtocol::ObjCProtocol(TranslationUnit *translationUnit, unsigned sourceLoca
 ObjCProtocol::~ObjCProtocol()
 {}
 
+unsigned ObjCProtocol::protocolCount() const
+{ return _protocols.size(); }
+
+ObjCBaseProtocol *ObjCProtocol::protocolAt(unsigned index) const
+{ return _protocols.at(index); }
+
+void ObjCProtocol::addProtocol(ObjCBaseProtocol *protocol)
+{ _protocols.push_back(protocol); }
+
 FullySpecifiedType ObjCProtocol::type() const
 { return FullySpecifiedType(const_cast<ObjCProtocol *>(this)); }
 
@@ -973,6 +1012,33 @@ ObjCPropertyDeclaration::ObjCPropertyDeclaration(TranslationUnit *translationUni
 ObjCPropertyDeclaration::~ObjCPropertyDeclaration()
 {}
 
+bool ObjCPropertyDeclaration::hasAttribute(int attribute) const
+{ return _propertyAttributes & attribute; }
+
+void ObjCPropertyDeclaration::setAttributes(int attributes)
+{ _propertyAttributes = attributes; }
+
+bool ObjCPropertyDeclaration::hasGetter() const
+{ return hasAttribute(Getter); }
+
+bool ObjCPropertyDeclaration::hasSetter() const
+{ return hasAttribute(Setter); }
+
+const Name *ObjCPropertyDeclaration::getterName() const
+{ return _getterName; }
+
+void ObjCPropertyDeclaration::setGetterName(const Name *getterName)
+{ _getterName = getterName; }
+
+const Name *ObjCPropertyDeclaration::setterName() const
+{ return _setterName; }
+
+void ObjCPropertyDeclaration::setSetterName(const Name *setterName)
+{ _setterName = setterName; }
+
+void ObjCPropertyDeclaration::setType(const FullySpecifiedType &type)
+{ _type = type; }
+
 FullySpecifiedType ObjCPropertyDeclaration::type() const
 { return _type; }
 
diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h
index 039e3542e5c6ac3945115ff247a287e5121f18eb..2ea24c539a8906ca9386bedf4450e2d2c634a78a 100644
--- a/src/shared/cplusplus/Symbols.h
+++ b/src/shared/cplusplus/Symbols.h
@@ -581,8 +581,6 @@ protected:
     virtual void visitSymbol0(SymbolVisitor *visitor);
     virtual void accept0(TypeVisitor *visitor);
     virtual bool matchType0(const Type *otherType, TypeMatcher *matcher) const;
-
-private:
 };
 
 class CPLUSPLUS_EXPORT ObjCProtocol: public ScopedSymbol, public Type
@@ -591,14 +589,9 @@ public:
     ObjCProtocol(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name);
     virtual ~ObjCProtocol();
 
-    unsigned protocolCount() const
-    { return _protocols.size(); }
-
-    ObjCBaseProtocol *protocolAt(unsigned index) const
-    { return _protocols.at(index); }
-
-    void addProtocol(ObjCBaseProtocol *protocol)
-    { _protocols.push_back(protocol); }
+    unsigned protocolCount() const;
+    ObjCBaseProtocol *protocolAt(unsigned index) const;
+    void addProtocol(ObjCBaseProtocol *protocol);
 
     // Symbol's interface
     virtual FullySpecifiedType type() const;
@@ -663,26 +656,19 @@ public:
     ObjCClass(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name);
     virtual ~ObjCClass();
 
-    bool isInterface() const { return _isInterface; }
-    void setInterface(bool isInterface) { _isInterface = isInterface; }
-
-    bool isCategory() const { return _categoryName != 0; }
-    const Name *categoryName() const { return _categoryName; }
-    void setCategoryName(const Name *categoryName) { _categoryName = categoryName; }
+    bool isInterface() const;
+    void setInterface(bool isInterface);
 
-    ObjCBaseClass *baseClass() const
-    { return _baseClass; }
-    void setBaseClass(ObjCBaseClass *baseClass)
-    { _baseClass = baseClass; }
+    bool isCategory() const;
+    const Name *categoryName() const;
+    void setCategoryName(const Name *categoryName);
 
-    unsigned protocolCount() const
-    { return _protocols.size(); }
+    ObjCBaseClass *baseClass() const;
+    void setBaseClass(ObjCBaseClass *baseClass);
 
-    ObjCBaseProtocol *protocolAt(unsigned index) const
-    { return _protocols.at(index); }
-
-    void addProtocol(ObjCBaseProtocol *protocol)
-    { _protocols.push_back(protocol); }
+    unsigned protocolCount() const;
+    ObjCBaseProtocol *protocolAt(unsigned index) const;
+    void addProtocol(ObjCBaseProtocol *protocol);
 
     // Symbol's interface
     virtual FullySpecifiedType type() const;
@@ -795,32 +781,20 @@ public:
                             const Name *name);
     virtual ~ObjCPropertyDeclaration();
 
-    bool hasAttribute(int attribute) const
-    { return _propertyAttributes & attribute; }
-
-    void setAttributes(int attributes)
-    { _propertyAttributes = attributes; }
-
-    bool hasGetter() const
-    { return hasAttribute(Getter); }
+    bool hasAttribute(int attribute) const;
+    void setAttributes(int attributes);
 
-    bool hasSetter() const
-    { return hasAttribute(Setter); }
+    bool hasGetter() const;
+    bool hasSetter() const;
 
-    const Name *getterName() const
-    { return _getterName; }
+    const Name *getterName() const;
 
-    void setGetterName(const Name *getterName)
-    { _getterName = getterName; }
+    void setGetterName(const Name *getterName);
 
-    const Name *setterName() const
-    { return _setterName; }
+    const Name *setterName() const;
+    void setSetterName(const Name *setterName);
 
-    void setSetterName(const Name *setterName)
-    { _setterName = setterName; }
-
-    void setType(const FullySpecifiedType &type)
-    { _type = type; }
+    void setType(const FullySpecifiedType &type);
 
     // Symbol's interface
     virtual FullySpecifiedType type() const;