summaryrefslogtreecommitdiff
path: root/cpp/include
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2004-05-10 02:15:57 +0000
committerMichi Henning <michi@zeroc.com>2004-05-10 02:15:57 +0000
commita6a7f49b10372b9e4adf2ac2431b361c5638d156 (patch)
tree1b4e44d9ba7a0209a9faa35b35ce29bb8d4d0e4e /cpp/include
parentFixed VC6 build (diff)
downloadice-a6a7f49b10372b9e4adf2ac2431b361c5638d156.tar.bz2
ice-a6a7f49b10372b9e4adf2ac2431b361c5638d156.tar.xz
ice-a6a7f49b10372b9e4adf2ac2431b361c5638d156.zip
Merged changes from michi_pre_e3 branch
Diffstat (limited to 'cpp/include')
-rw-r--r--cpp/include/Ice/BasicStream.h20
-rw-r--r--cpp/include/Ice/Object.h4
-rw-r--r--cpp/include/IceUtil/GCShared.h18
-rw-r--r--cpp/include/Slice/Parser.h18
4 files changed, 48 insertions, 12 deletions
diff --git a/cpp/include/Ice/BasicStream.h b/cpp/include/Ice/BasicStream.h
index 32ccf3f5537..bb9f66d8bcb 100644
--- a/cpp/include/Ice/BasicStream.h
+++ b/cpp/include/Ice/BasicStream.h
@@ -70,8 +70,19 @@ public:
b.resize(sz);
}
+
void reserve(Container::size_type);
+ void startSeq(int, int);
+ void checkSeq();
+ void checkSeq(int);
+ void endElement()
+ {
+ assert(_seqDataStack);
+ --_seqDataStack->numElements;
+ }
+ void endSeq(int);
+
void startWriteEncaps();
void endWriteEncaps();
@@ -270,6 +281,15 @@ private:
const Container::size_type _messageSizeMax;
+ struct SeqData
+ {
+ SeqData(int, int);
+ int numElements;
+ int minSize;
+ SeqData* previous;
+ };
+ SeqData* _seqDataStack;
+
ObjectList* _objectList;
};
diff --git a/cpp/include/Ice/Object.h b/cpp/include/Ice/Object.h
index a1f53c85b95..a9ba7718540 100644
--- a/cpp/include/Ice/Object.h
+++ b/cpp/include/Ice/Object.h
@@ -85,8 +85,8 @@ public:
virtual void __write(::IceInternal::BasicStream*) const;
virtual void __read(::IceInternal::BasicStream*, bool);
- virtual void __gcReachable(::IceUtil::GCObjectMultiSet&) const;
- virtual void __gcClear();
+ virtual void __gcReachable(::IceUtil::GCObjectMultiSet&) const {}
+ virtual void __gcClear() {}
};
class ICE_API Blobject : virtual public Object
diff --git a/cpp/include/IceUtil/GCShared.h b/cpp/include/IceUtil/GCShared.h
index 54151640dd9..cfa9a1803e3 100644
--- a/cpp/include/IceUtil/GCShared.h
+++ b/cpp/include/IceUtil/GCShared.h
@@ -16,6 +16,7 @@
#define ICE_UTIL_GC_SHARED_H
#include <IceUtil/Config.h>
+#include <IceUtil/GCRecMutex.h>
#include <set>
namespace IceUtil
@@ -25,7 +26,7 @@ class GC;
class GCShared;
typedef std::set<GCShared*> GCObjectSet;
-extern ICE_UTIL_API GCObjectSet gcObjects; // Set of pointers to all existing classes.
+extern ICE_UTIL_API GCObjectSet gcObjects; // Set of pointers to all existing classes with class data members.
typedef std::multiset<GCShared*> GCObjectMultiSet;
@@ -33,26 +34,23 @@ class ICE_UTIL_API GCShared : public noncopyable
{
public:
- GCShared();
- virtual ~GCShared();
- void __incRef();
- void __decRef();
+ GCShared() : _ref(0), _noDelete(false) {}
+ virtual ~GCShared() {}
+ virtual void __incRef(); // First derived class with class data members overrides this.
+ virtual void __decRef(); // Ditto.
int __getRef() const;
void __setNoDelete(bool);
- void __decRefUnsafe();
+ void __decRefUnsafe() { --_ref; }
virtual void __gcReachable(GCObjectMultiSet&) const = 0;
virtual void __gcClear() = 0;
protected:
static void __addObject(GCObjectMultiSet&, GCShared*);
-
-private:
-
int _ref;
bool _noDelete;
- friend class IceUtil::GC;
+ friend class IceUtil::GC; // Allows IceUtil::GC to read value of _ref.
};
}
diff --git a/cpp/include/Slice/Parser.h b/cpp/include/Slice/Parser.h
index 8fba7f73350..16debcedcca 100644
--- a/cpp/include/Slice/Parser.h
+++ b/cpp/include/Slice/Parser.h
@@ -263,6 +263,8 @@ public:
virtual bool isLocal() const = 0;
virtual std::string typeId() const = 0;
virtual bool usesClasses() const = 0;
+ virtual size_t minWireSize() const = 0;
+ virtual bool isVariableLength() const = 0;
protected:
@@ -295,6 +297,8 @@ public:
virtual bool isLocal() const;
virtual std::string typeId() const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
Kind kind() const;
std::string kindAsString() const;
@@ -455,6 +459,7 @@ public:
virtual bool isLocal() const;
virtual std::string typeId() const;
+ virtual bool isVariableLength() const = 0;
ConstructedList dependencies();
virtual void recDependencies(std::set<ConstructedPtr>&) = 0; // Internal operation, don't use directly.
@@ -479,6 +484,8 @@ public:
virtual ContainedType containedType() const;
virtual bool uses(const ContainedPtr&) const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
virtual void visit(ParserVisitor*);
virtual std::string kindOf() const;
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
@@ -575,6 +582,7 @@ public:
DataMemberList allDataMembers() const;
DataMemberList classDataMembers() const;
DataMemberList allClassDataMembers() const;
+ bool canBeCyclic() const;
bool isAbstract() const;
bool isInterface() const;
bool isA(const std::string&) const;
@@ -610,6 +618,8 @@ public:
virtual bool isLocal() const;
virtual std::string typeId() const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
ClassDeclPtr _class() const;
@@ -667,6 +677,8 @@ public:
virtual ContainedType containedType() const;
virtual bool uses(const ContainedPtr&) const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
virtual std::string kindOf() const;
virtual void visit(ParserVisitor*);
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
@@ -689,6 +701,8 @@ public:
virtual ContainedType containedType() const;
virtual bool uses(const ContainedPtr&) const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
virtual std::string kindOf() const;
virtual void visit(ParserVisitor*);
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
@@ -714,6 +728,8 @@ public:
virtual ContainedType containedType() const;
virtual bool uses(const ContainedPtr&) const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
virtual std::string kindOf() const;
virtual void visit(ParserVisitor*);
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
@@ -743,6 +759,8 @@ public:
virtual ContainedType containedType() const;
virtual bool uses(const ContainedPtr&) const;
virtual bool usesClasses() const;
+ virtual size_t minWireSize() const;
+ virtual bool isVariableLength() const;
virtual std::string kindOf() const;
virtual void visit(ParserVisitor*);
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.