24 #ifndef __SCRIPTINFODEFS__ 25 #define __SCRIPTINFODEFS__ 29 #include "RequestContext.h" 30 #include "ScriptingID.h" 44 enum ScriptElementType
51 kObjectElement = 0x02,
53 kMethodElement = 0x04,
55 kMethodParameterElement = 0x08,
57 kPropertyElement = 0x10,
61 kEnumValueElement = 0x40,
63 kTypeDefElement = 0x80,
65 kEventElement = 0x100,
80 kReturnCompleteFailureOnly
86 enum TypeFormattingInfo
91 kIncludeRangeData = 1,
93 kIncludeDefaultValue = 2,
98 kGetEnumTypeByName = 0x10000000,
100 kDontTranslateKeyStringDefaultType = 0x20000000,
106 enum SetPropertiesOrderPolicy
156 fCapitalization( c ), fSpacing( s ), fPrefix( prefix ), fSuffix( suffix ) {}
168 bool16 operator==(
const FormatNamePolicy& other )
const {
return ( fCapitalization == other.fCapitalization &&
169 fSpacing == other.fSpacing &&
170 fPrefix == other.fPrefix &&
171 fSuffix == other.fSuffix ) ; }
183 class TypeDefScriptElement ;
184 class SuiteScriptElement ;
185 class ObjectScriptElement ;
186 class MethodScriptElement ;
187 class PropertyScriptElement ;
188 class EnumScriptElement ;
189 class EventScriptElement ;
205 typedef std::pair<uint32, uint32> ScriptMethodUniqueID;
207 typedef std::vector<ScriptMethodUniqueID> ScriptMethodUniqueIDList;
219 ScriptElementIterator(
const SI*
const* inBegin,
const SI*
const* inEnd ) : fCurrent( inBegin ), fEnd( inEnd ) {}
227 operator const SI*()
const {
return *fCurrent ; }
232 const SI*
const*
current()
const {
return fCurrent ; }
234 const SI*
const*
end()
const {
return fEnd ; }
237 const SI*
const* fCurrent ;
238 const SI*
const* fEnd ;
248 typedef ScriptElementIterator<TypeDefScriptElement> TypeDefElementIterator ;
250 typedef ScriptElementIterator<SuiteScriptElement> SuiteElementIterator ;
252 typedef ScriptElementIterator<ObjectScriptElement> ObjectElementIterator ;
254 typedef ScriptElementIterator<MethodScriptElement> MethodElementIterator ;
256 typedef ScriptElementIterator<PropertyScriptElement> PropertyElementIterator ;
258 typedef ScriptElementIterator<EnumScriptElement> EnumElementIterator ;
260 typedef ScriptElementIterator<EventScriptElement> EventElementIterator ;
274 fLocale( locale ), fFirstVersion( firstVersion ), fLastVersion( lastVersion ), fClient( client ) {}
292 bool16 operator==(
const ElementContext& other )
const {
return ( fLocale == other.fLocale &&
293 fFirstVersion == other.fFirstVersion &&
294 fLastVersion == other.fLastVersion &&
295 fClient == other.fClient ) ; }
301 ScriptVersion fFirstVersion ;
302 ScriptVersion fLastVersion ;
303 ScriptClient fClient ;
305 #ifdef ID_ENABLE_DEBUGGING 308 ConstCString WhoAmI()
const ;
325 bool16 surrogate, uint8 inheritance ) :
326 fContext( context ), fProvider( provider ), fPluginID( pluginID ), fSurrogate( surrogate ), fInheritance( inheritance ) {}
341 #ifdef ID_ENABLE_DEBUGGING 343 virtual ConstCString WhoAmI()
const = 0 ;
367 const PluginID& pluginID, bool16 surrogate, uint8 inheritance ) :
368 ProviderPacket( context, provider, pluginID, surrogate, inheritance ), fParent( parent ) {}
373 #ifdef ID_ENABLE_DEBUGGING 375 virtual ConstCString WhoAmI()
const ;
388 const PluginID& pluginID, bool16 surrogate, uint8 inheritance ) :
389 ProviderPacket( context, provider, pluginID, surrogate, inheritance ), fChild( child ) {}
394 #ifdef ID_ENABLE_DEBUGGING 396 virtual ConstCString WhoAmI()
const ;
410 ProviderPacket( context, provider, pluginID, kFalse, 0 ), fMethod( method ) {}
415 #ifdef ID_ENABLE_DEBUGGING 417 virtual ConstCString WhoAmI()
const ;
431 ProviderPacket( context, provider, pluginID, kFalse, inheritance ), fMethod( method ), fParent( parent ) {}
438 #ifdef ID_ENABLE_DEBUGGING 440 virtual ConstCString WhoAmI()
const ;
454 const PluginID& pluginID, bool16 readonly ) :
455 ProviderPacket( context, provider, pluginID, kFalse, 0 ), fProperty( property ), fReadOnly( readonly ) {}
464 #ifdef ID_ENABLE_DEBUGGING 466 virtual ConstCString WhoAmI()
const ;
481 ProviderPacket( context, provider, pluginID, kFalse, 0 ), fEvent( event ) {}
486 #ifdef ID_ENABLE_DEBUGGING 488 virtual ConstCString WhoAmI()
const ;
508 class AccessParents ;
509 class AccessChildren ;
510 class AccessMethods ;
511 class AccessCollectionMethods ;
512 class AccessProperties ;
520 template <
class SI,
class PP,
class Access>
524 typedef PP packet_type ;
525 typedef Access access_type ;
530 fIterateBaseObjects( iterateBaseObjects ),
552 operator const PP*()
const {
return fCurrent ; }
557 const PP*
current()
const {
return fCurrent ; }
559 const PP*
end()
const {
return fEnd ; }
567 fCurrent = fSI->GetElements( (Access*) nil ).begin() ;
568 fEnd = fSI->GetElements( (Access*) nil ).end() ;
569 IterateUntilValid() ;
574 void IterateUntilValid()
577 while ( fCurrent != fEnd && SkipPacket() )
581 if ( fCurrent != fEnd )
582 fAlreadySeen.push_back( fCurrent ) ;
585 if ( fCurrent != fEnd && fCurrent->GetProvider() == kInvalidClass )
588 IterateUntilValid() ;
592 if ( fIterateBaseObjects && fCurrent == fEnd )
595 fSI = fSI->FindBaseObject() ;
602 bool16 SkipPacket()
const 604 if ( fFilter.SkipPacket( fCurrent ) )
607 for (
const PP*
const* iter = fAlreadySeen.begin() ; iter != fAlreadySeen.end() ; ++iter )
609 if ( fFilter.Matches( *iter, fCurrent ) )
617 bool16 fIterateBaseObjects ;
626 ProviderPacketIterator& operator=(
const ProviderPacketIterator& ) ;
627 bool16 operator==(
const ProviderPacketIterator& )
const ;
631 typedef ProviderPacketIterator<ObjectScriptElement, ParentProviderPacket, AccessParents> ParentProviderIterator ;
633 typedef ProviderPacketIterator<ObjectScriptElement, ChildProviderPacket, AccessChildren> ChildProviderIterator ;
635 typedef ProviderPacketIterator<ObjectScriptElement, MethodProviderPacket, AccessMethods> MethodProviderIterator ;
637 typedef ProviderPacketIterator<ObjectScriptElement, CollectionMethodProviderPacket, AccessCollectionMethods> CollectionMethodProviderIterator ;
639 typedef ProviderPacketIterator<ObjectScriptElement, PropertyProviderPacket, AccessProperties> PropertyProviderIterator ;
641 typedef ProviderPacketIterator<ObjectScriptElement, EventProviderPacket, AccessEvents> EventProviderIterator ;
645 typedef bool16 (*PacketComp)(
const ChildProviderPacket left,
const ChildProviderPacket right);
649 #endif //__SCRIPTINFODEFS__