File indexing completed on 2026-09-19 09:29:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _Storage_Schema_HeaderFile
0018 #define _Storage_Schema_HeaderFile
0019
0020 #include <Storage_BaseDriver.hxx>
0021 #include <Storage_InternalData.hxx>
0022 #include <TCollection_AsciiString.hxx>
0023 #include <Storage_TypedCallBack.hxx>
0024 #include <NCollection_DataMap.hxx>
0025 #include <NCollection_Sequence.hxx>
0026 #include <NCollection_HSequence.hxx>
0027
0028 class Storage_CallBack;
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 class Storage_Schema : public Standard_Transient
0054 {
0055
0056 public:
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069 Standard_EXPORT Storage_Schema();
0070
0071
0072 Standard_EXPORT void SetVersion(const TCollection_AsciiString& aVersion);
0073
0074
0075 Standard_EXPORT TCollection_AsciiString Version() const;
0076
0077
0078 Standard_EXPORT void SetName(const TCollection_AsciiString& aSchemaName);
0079
0080
0081 Standard_EXPORT TCollection_AsciiString Name() const;
0082
0083
0084
0085
0086
0087
0088
0089 Standard_EXPORT void Write(const occ::handle<Storage_BaseDriver>& s,
0090 const occ::handle<Storage_Data>& aData) const;
0091
0092
0093 Standard_EXPORT static TCollection_AsciiString ICreationDate();
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106 Standard_EXPORT static bool CheckTypeMigration(const TCollection_AsciiString& theTypeName,
0107 TCollection_AsciiString& theNewName);
0108
0109
0110 Standard_EXPORT void AddReadUnknownTypeCallBack(const TCollection_AsciiString& aTypeName,
0111 const occ::handle<Storage_CallBack>& aCallBack);
0112
0113
0114 Standard_EXPORT void RemoveReadUnknownTypeCallBack(const TCollection_AsciiString& aTypeName);
0115
0116
0117
0118 Standard_EXPORT occ::handle<NCollection_HSequence<TCollection_AsciiString>>
0119 InstalledCallBackList() const;
0120
0121
0122 Standard_EXPORT void ClearCallBackList();
0123
0124
0125
0126
0127 Standard_EXPORT void UseDefaultCallBack();
0128
0129
0130 Standard_EXPORT void DontUseDefaultCallBack();
0131
0132
0133 Standard_EXPORT bool IsUsingDefaultCallBack() const;
0134
0135
0136
0137
0138 Standard_EXPORT void SetDefaultCallBack(const occ::handle<Storage_CallBack>& f);
0139
0140
0141
0142 Standard_EXPORT void ResetDefaultCallBack();
0143
0144
0145
0146 Standard_EXPORT occ::handle<Storage_CallBack> DefaultCallBack() const;
0147
0148 void WritePersistentObjectHeader(const occ::handle<Standard_Persistent>& sp,
0149 const occ::handle<Storage_BaseDriver>& theDriver)
0150 {
0151 theDriver->WritePersistentObjectHeader(sp->_refnum, sp->_typenum);
0152 }
0153
0154 void WritePersistentReference(const occ::handle<Standard_Persistent>& sp,
0155 const occ::handle<Storage_BaseDriver>& theDriver)
0156 {
0157 theDriver->PutReference(sp.IsNull() ? 0 : sp->_refnum);
0158 }
0159
0160 Standard_EXPORT bool AddPersistent(const occ::handle<Standard_Persistent>& sp,
0161 const char* const tName) const;
0162
0163 Standard_EXPORT bool PersistentToAdd(const occ::handle<Standard_Persistent>& sp) const;
0164
0165 DEFINE_STANDARD_RTTIEXT(Storage_Schema, Standard_Transient)
0166
0167 protected:
0168 bool HasTypeBinding(const TCollection_AsciiString& aTypeName) const
0169 {
0170 return Storage_Schema::ICurrentData()->InternalData()->myTypeBinding.IsBound(aTypeName);
0171 }
0172
0173 Standard_EXPORT void BindType(const TCollection_AsciiString& aTypeName,
0174 const occ::handle<Storage_CallBack>& aCallBack) const;
0175
0176 Standard_EXPORT occ::handle<Storage_CallBack> TypeBinding(
0177 const TCollection_AsciiString& aTypeName) const;
0178
0179 private:
0180 Standard_EXPORT void Clear() const;
0181
0182 Standard_EXPORT static void ISetCurrentData(const occ::handle<Storage_Data>& dData);
0183
0184 Standard_EXPORT static occ::handle<Storage_Data>& ICurrentData();
0185
0186 NCollection_DataMap<TCollection_AsciiString, occ::handle<Storage_TypedCallBack>> myCallBack;
0187 bool myCallBackState;
0188 occ::handle<Storage_CallBack> myDefaultCallBack;
0189 TCollection_AsciiString myName;
0190 TCollection_AsciiString myVersion;
0191 };
0192
0193 #endif