InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
RequestContext.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Jonathan W. Brown
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //========================================================================================
23 
24 #ifndef __REQUESTCONTEXT__
25 #define __REQUESTCONTEXT__
26 
27 #include "FormatID.h"
28 #include "K2SmartPtr.h"
29 #include "k2VectorStreaming.h"
30 #include "PMLocaleId.h" //see also FeatureSets.h and PMLocaleIds.h
31 
32 class IScriptEngine ;
33 class IScriptManager ;
34 
35 namespace ScriptInfo
36 {
37 
39 typedef ClassID ScriptClient ;
45 typedef FormatID ScriptVersion ;
47 typedef K2Vector<ScriptVersion> ScriptVersionList ;
49 extern const ScriptVersion kMinimumScriptVersion ;
51 extern const ScriptVersion kMaximumScriptVersion ;
53 extern const ScriptVersion kCS1ScriptVersion ;
55 extern const ScriptVersion kCS2ScriptVersion ;
57 extern const ScriptVersion kCS3ScriptVersion ;
59 extern const ScriptVersion kCS4ScriptVersion ;
61 extern const ScriptVersion kCS5ScriptVersion ;
63 extern const ScriptVersion kCS5_5ScriptVersion ;
65 extern const ScriptVersion kCS6ScriptVersion ;
67 extern const ScriptVersion kCCScriptVersion ;
69 extern const ScriptVersion kCC10ScriptVersion ;
71 extern const ScriptVersion kCC10_1ScriptVersion ;
73 extern const ScriptVersion kCC10_2ScriptVersion ;
75 extern const ScriptVersion kCC11ScriptVersion ;
77 extern const ScriptVersion kCC11_2ScriptVersion;
79 extern const ScriptVersion kCC11_3ScriptVersion;
81 extern const ScriptVersion kCC11_4ScriptVersion;
83 extern const ScriptVersion kCC12ScriptVersion;
85 extern const ScriptVersion kCC12_1ScriptVersion;
87 extern const ScriptVersion kCC13ScriptVersion;
89 extern const ScriptVersion kCC13_1ScriptVersion;
91 extern const ScriptVersion kCC14ScriptVersion;
93 extern const ScriptVersion kCC15ScriptVersion;
95 extern const ScriptVersion kCC15_1ScriptVersion;
97 extern const ScriptVersion kCC16ScriptVersion;
99 extern const ScriptVersion kCC16_1ScriptVersion;
101 extern const ScriptVersion kCC16_2ScriptVersion;
103 extern const ScriptVersion kCC17ScriptVersion;
105 extern const ScriptVersion kCC18ScriptVersion;
107  extern const ScriptVersion kCC18_5ScriptVersion;
109 extern const ScriptVersion kCC19ScriptVersion;
111 extern const ScriptVersion kCC19_3ScriptVersion;
113 extern const ScriptVersion kCC19_4ScriptVersion;
115 extern const ScriptVersion kCC19_5ScriptVersion;
117 extern const ScriptVersion kCC20ScriptVersion;
119 extern const ScriptVersion kCC20_2ScriptVersion;
121 extern const ScriptVersion kCC20_3ScriptVersion;
123 extern const ScriptVersion kCC20_4ScriptVersion;
124 
125 
126 #ifdef ID_DEPRECATED //deprecated in CS5; remove in CS6
127 #define kDragontailScriptVersion kCS1ScriptVersion
128 #define kFiredrakeScriptVersion kCS2ScriptVersion
129 #define kCobaltScriptVersion kCS3ScriptVersion
130 #define kBasilScriptVersion kCS4ScriptVersion
131 #endif
132 
133 //CONVERSION UTILITIES
134 
136 extern PMString ToString( const ScriptVersion& version ) ;
138 extern ScriptVersion ToVersion( PMString s, PMString::ConversionError* pError = nil ) ;
140 extern PMReal ToReal( const ScriptVersion& version ) ;
142 extern ScriptVersion ToVersion( PMReal r ) ;
143 
144 
149 {
150  public:
151  typedef object_type data_type ;
152 
153  RequestContext() {}
154  RequestContext( const IScriptManager* client, const ScriptVersion& version, const PMLocaleId& locale ) ;
155  RequestContext( const RequestContext& other ) { *this = other ; }
156  ~RequestContext() {}
157 
159  const PMLocaleId& GetLocale() const { return fLocale ; }
161  const ScriptVersion& GetVersion() const { return fVersion ; }
163  const ScriptClient& GetClient() const { return fClient ; }
164 
167 
169  RequestContext& operator=( const RequestContext& ) ;
171  bool16 operator==( const RequestContext& other ) const { return ( fLocale == other.fLocale && fVersion == other.fVersion && fClient == other.fClient ) ; }
173  bool16 operator!=( const RequestContext& other ) const { return ( fLocale != other.fLocale || fVersion != other.fVersion || fClient != other.fClient ) ; }
174 
176  void ReadWrite( IPMStream* s ) ;
177 
178  private:
179  PMLocaleId fLocale ; //defined in PMLocaleId.h
180  ScriptVersion fVersion ; //min version is 0.0; max version is kMaxInt32.kMaxInt32 (0x7FFFFFFF)
181  ScriptClient fClient ; //ClassID of the client's script manager boss
182 
183 #ifdef ID_ENABLE_DEBUGGING
184  public:
186  ConstCString WhoAmI() const ;
187  mutable scoped_array<char> fWhoAmI ;
188 #endif
189 } ;
190 
192 typedef K2Vector<RequestContext> RequestContextList ;
193 DEFINEK2READWRITE( RequestContext )
194 
195 
202 {
203  public:
204  typedef object_type data_type ;
205 
206  EngineContext() : fEngine( nil ) {}
207  EngineContext( const IScriptManager* client, const ScriptVersion& version, const PMLocaleId& locale, const IScriptEngine* engine = nil ) ;
208  EngineContext( const EngineContext& other ) : fEngine( nil ) { *this = other ; }
209  ~EngineContext() ;
210 
212  IScriptEngine* QueryScriptEngine() const ;
213 
215  EngineContext& operator=( const EngineContext& ) ;
217  bool16 operator==( const EngineContext& other ) const ;
219  bool16 operator!=( const EngineContext& other ) const ;
220 
221  private:
222  const IScriptEngine* fEngine ;
223 
224 #ifdef ID_ENABLE_DEBUGGING
225  public:
227  ConstCString WhoAmI() const ;
228 #endif
229 } ;
230 
231 } // End namespace ScriptInfo
232 
233 #endif //__REQUESTCONTEXT__