Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Side by Side Diff: xfa/fxfa/fm2js/xfa_simpleexpression.cpp

Issue 2534143003: Use unique_ptr in CFXA_FM expressions (Closed)
Patch Set: Comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/fm2js/xfa_simpleexpression.h ('k') | xfa/fxfa/fm2js/xfa_simpleexpression_unittest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/fm2js/xfa_simpleexpression.h" 7 #include "xfa/fxfa/fm2js/xfa_simpleexpression.h"
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 } else if (tempStr == FX_WSTRC(L"$layout")) { 202 } else if (tempStr == FX_WSTRC(L"$layout")) {
203 tempStr = FX_WSTRC(L"xfa.layout"); 203 tempStr = FX_WSTRC(L"xfa.layout");
204 } else if (tempStr == FX_WSTRC(L"$template")) { 204 } else if (tempStr == FX_WSTRC(L"$template")) {
205 tempStr = FX_WSTRC(L"xfa.template"); 205 tempStr = FX_WSTRC(L"xfa.template");
206 } else if (tempStr[0] == L'!') { 206 } else if (tempStr[0] == L'!') {
207 tempStr = EXCLAMATION_IN_IDENTIFIER + tempStr.Mid(1); 207 tempStr = EXCLAMATION_IN_IDENTIFIER + tempStr.Mid(1);
208 } 208 }
209 javascript << tempStr; 209 javascript << tempStr;
210 } 210 }
211 211
212 CXFA_FMUnaryExpression::CXFA_FMUnaryExpression(uint32_t line, 212 CXFA_FMUnaryExpression::CXFA_FMUnaryExpression(
213 XFA_FM_TOKEN op, 213 uint32_t line,
214 CXFA_FMSimpleExpression* pExp) 214 XFA_FM_TOKEN op,
215 : CXFA_FMSimpleExpression(line, op), m_pExp(pExp) {} 215 std::unique_ptr<CXFA_FMSimpleExpression> pExp)
216 : CXFA_FMSimpleExpression(line, op), m_pExp(std::move(pExp)) {}
216 217
217 CXFA_FMUnaryExpression::~CXFA_FMUnaryExpression() {} 218 CXFA_FMUnaryExpression::~CXFA_FMUnaryExpression() {}
218 219
219 void CXFA_FMUnaryExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} 220 void CXFA_FMUnaryExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
220 221
221 CXFA_FMBinExpression::CXFA_FMBinExpression(uint32_t line, 222 CXFA_FMBinExpression::CXFA_FMBinExpression(
222 XFA_FM_TOKEN op, 223 uint32_t line,
223 CXFA_FMSimpleExpression* pExp1, 224 XFA_FM_TOKEN op,
224 CXFA_FMSimpleExpression* pExp2) 225 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
225 : CXFA_FMSimpleExpression(line, op), m_pExp1(pExp1), m_pExp2(pExp2) {} 226 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
227 : CXFA_FMSimpleExpression(line, op),
228 m_pExp1(std::move(pExp1)),
229 m_pExp2(std::move(pExp2)) {}
226 230
227 CXFA_FMBinExpression::~CXFA_FMBinExpression() {} 231 CXFA_FMBinExpression::~CXFA_FMBinExpression() {}
228 232
229 void CXFA_FMBinExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} 233 void CXFA_FMBinExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
230 234
231 CXFA_FMAssignExpression::CXFA_FMAssignExpression(uint32_t line, 235 CXFA_FMAssignExpression::CXFA_FMAssignExpression(
232 XFA_FM_TOKEN op, 236 uint32_t line,
233 CXFA_FMSimpleExpression* pExp1, 237 XFA_FM_TOKEN op,
234 CXFA_FMSimpleExpression* pExp2) 238 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
235 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 239 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
240 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
236 241
237 void CXFA_FMAssignExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 242 void CXFA_FMAssignExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
238 javascript << FX_WSTRC(L"if ("); 243 javascript << FX_WSTRC(L"if (");
239 javascript << gs_lpStrExpFuncName[ISFMOBJECT]; 244 javascript << gs_lpStrExpFuncName[ISFMOBJECT];
240 javascript << FX_WSTRC(L"("); 245 javascript << FX_WSTRC(L"(");
241 m_pExp1->ToJavaScript(javascript); 246 m_pExp1->ToJavaScript(javascript);
242 javascript << FX_WSTRC(L"))\n{\n"); 247 javascript << FX_WSTRC(L"))\n{\n");
243 javascript << gs_lpStrExpFuncName[ASSIGN]; 248 javascript << gs_lpStrExpFuncName[ASSIGN];
244 javascript << FX_WSTRC(L"("); 249 javascript << FX_WSTRC(L"(");
245 m_pExp1->ToJavaScript(javascript); 250 m_pExp1->ToJavaScript(javascript);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 m_pExp1->ToJavaScript(javascript); 295 m_pExp1->ToJavaScript(javascript);
291 javascript << FX_WSTRC(L", "); 296 javascript << FX_WSTRC(L", ");
292 m_pExp2->ToJavaScript(javascript); 297 m_pExp2->ToJavaScript(javascript);
293 javascript << FX_WSTRC(L");\n}\n"); 298 javascript << FX_WSTRC(L");\n}\n");
294 } 299 }
295 } 300 }
296 301
297 CXFA_FMLogicalOrExpression::CXFA_FMLogicalOrExpression( 302 CXFA_FMLogicalOrExpression::CXFA_FMLogicalOrExpression(
298 uint32_t line, 303 uint32_t line,
299 XFA_FM_TOKEN op, 304 XFA_FM_TOKEN op,
300 CXFA_FMSimpleExpression* pExp1, 305 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
301 CXFA_FMSimpleExpression* pExp2) 306 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
302 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 307 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
303 308
304 void CXFA_FMLogicalOrExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 309 void CXFA_FMLogicalOrExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
305 javascript << gs_lpStrExpFuncName[LOGICALOR]; 310 javascript << gs_lpStrExpFuncName[LOGICALOR];
306 javascript << FX_WSTRC(L"("); 311 javascript << FX_WSTRC(L"(");
307 m_pExp1->ToJavaScript(javascript); 312 m_pExp1->ToJavaScript(javascript);
308 javascript << FX_WSTRC(L", "); 313 javascript << FX_WSTRC(L", ");
309 m_pExp2->ToJavaScript(javascript); 314 m_pExp2->ToJavaScript(javascript);
310 javascript << FX_WSTRC(L")"); 315 javascript << FX_WSTRC(L")");
311 } 316 }
312 317
313 CXFA_FMLogicalAndExpression::CXFA_FMLogicalAndExpression( 318 CXFA_FMLogicalAndExpression::CXFA_FMLogicalAndExpression(
314 uint32_t line, 319 uint32_t line,
315 XFA_FM_TOKEN op, 320 XFA_FM_TOKEN op,
316 CXFA_FMSimpleExpression* pExp1, 321 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
317 CXFA_FMSimpleExpression* pExp2) 322 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
318 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 323 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
319 324
320 void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 325 void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
321 javascript << gs_lpStrExpFuncName[LOGICALAND]; 326 javascript << gs_lpStrExpFuncName[LOGICALAND];
322 javascript << FX_WSTRC(L"("); 327 javascript << FX_WSTRC(L"(");
323 m_pExp1->ToJavaScript(javascript); 328 m_pExp1->ToJavaScript(javascript);
324 javascript << FX_WSTRC(L", "); 329 javascript << FX_WSTRC(L", ");
325 m_pExp2->ToJavaScript(javascript); 330 m_pExp2->ToJavaScript(javascript);
326 javascript << FX_WSTRC(L")"); 331 javascript << FX_WSTRC(L")");
327 } 332 }
328 333
329 CXFA_FMEqualityExpression::CXFA_FMEqualityExpression( 334 CXFA_FMEqualityExpression::CXFA_FMEqualityExpression(
330 uint32_t line, 335 uint32_t line,
331 XFA_FM_TOKEN op, 336 XFA_FM_TOKEN op,
332 CXFA_FMSimpleExpression* pExp1, 337 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
333 CXFA_FMSimpleExpression* pExp2) 338 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
334 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 339 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
335 340
336 void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 341 void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
337 switch (m_op) { 342 switch (m_op) {
338 case TOKeq: 343 case TOKeq:
339 case TOKkseq: 344 case TOKkseq:
340 javascript << gs_lpStrExpFuncName[EQUALITY]; 345 javascript << gs_lpStrExpFuncName[EQUALITY];
341 break; 346 break;
342 case TOKne: 347 case TOKne:
343 case TOKksne: 348 case TOKksne:
344 javascript << gs_lpStrExpFuncName[NOTEQUALITY]; 349 javascript << gs_lpStrExpFuncName[NOTEQUALITY];
345 break; 350 break;
346 default: 351 default:
347 ASSERT(false); 352 ASSERT(false);
348 break; 353 break;
349 } 354 }
350 javascript << FX_WSTRC(L"("); 355 javascript << FX_WSTRC(L"(");
351 m_pExp1->ToJavaScript(javascript); 356 m_pExp1->ToJavaScript(javascript);
352 javascript << FX_WSTRC(L", "); 357 javascript << FX_WSTRC(L", ");
353 m_pExp2->ToJavaScript(javascript); 358 m_pExp2->ToJavaScript(javascript);
354 javascript << FX_WSTRC(L")"); 359 javascript << FX_WSTRC(L")");
355 } 360 }
356 361
357 CXFA_FMRelationalExpression::CXFA_FMRelationalExpression( 362 CXFA_FMRelationalExpression::CXFA_FMRelationalExpression(
358 uint32_t line, 363 uint32_t line,
359 XFA_FM_TOKEN op, 364 XFA_FM_TOKEN op,
360 CXFA_FMSimpleExpression* pExp1, 365 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
361 CXFA_FMSimpleExpression* pExp2) 366 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
362 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 367 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
363 368
364 void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 369 void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
365 switch (m_op) { 370 switch (m_op) {
366 case TOKlt: 371 case TOKlt:
367 case TOKkslt: 372 case TOKkslt:
368 javascript << gs_lpStrExpFuncName[LESS]; 373 javascript << gs_lpStrExpFuncName[LESS];
369 break; 374 break;
370 case TOKgt: 375 case TOKgt:
371 case TOKksgt: 376 case TOKksgt:
372 javascript << gs_lpStrExpFuncName[GREATER]; 377 javascript << gs_lpStrExpFuncName[GREATER];
(...skipping 13 matching lines...) Expand all
386 javascript << FX_WSTRC(L"("); 391 javascript << FX_WSTRC(L"(");
387 m_pExp1->ToJavaScript(javascript); 392 m_pExp1->ToJavaScript(javascript);
388 javascript << FX_WSTRC(L", "); 393 javascript << FX_WSTRC(L", ");
389 m_pExp2->ToJavaScript(javascript); 394 m_pExp2->ToJavaScript(javascript);
390 javascript << FX_WSTRC(L")"); 395 javascript << FX_WSTRC(L")");
391 } 396 }
392 397
393 CXFA_FMAdditiveExpression::CXFA_FMAdditiveExpression( 398 CXFA_FMAdditiveExpression::CXFA_FMAdditiveExpression(
394 uint32_t line, 399 uint32_t line,
395 XFA_FM_TOKEN op, 400 XFA_FM_TOKEN op,
396 CXFA_FMSimpleExpression* pExp1, 401 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
397 CXFA_FMSimpleExpression* pExp2) 402 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
398 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 403 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
399 404
400 void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 405 void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
401 switch (m_op) { 406 switch (m_op) {
402 case TOKplus: 407 case TOKplus:
403 javascript << gs_lpStrExpFuncName[PLUS]; 408 javascript << gs_lpStrExpFuncName[PLUS];
404 break; 409 break;
405 case TOKminus: 410 case TOKminus:
406 javascript << gs_lpStrExpFuncName[MINUS]; 411 javascript << gs_lpStrExpFuncName[MINUS];
407 break; 412 break;
408 default: 413 default:
409 ASSERT(false); 414 ASSERT(false);
410 break; 415 break;
411 } 416 }
412 javascript << FX_WSTRC(L"("); 417 javascript << FX_WSTRC(L"(");
413 m_pExp1->ToJavaScript(javascript); 418 m_pExp1->ToJavaScript(javascript);
414 javascript << FX_WSTRC(L", "); 419 javascript << FX_WSTRC(L", ");
415 m_pExp2->ToJavaScript(javascript); 420 m_pExp2->ToJavaScript(javascript);
416 javascript << FX_WSTRC(L")"); 421 javascript << FX_WSTRC(L")");
417 } 422 }
418 423
419 CXFA_FMMultiplicativeExpression::CXFA_FMMultiplicativeExpression( 424 CXFA_FMMultiplicativeExpression::CXFA_FMMultiplicativeExpression(
420 uint32_t line, 425 uint32_t line,
421 XFA_FM_TOKEN op, 426 XFA_FM_TOKEN op,
422 CXFA_FMSimpleExpression* pExp1, 427 std::unique_ptr<CXFA_FMSimpleExpression> pExp1,
423 CXFA_FMSimpleExpression* pExp2) 428 std::unique_ptr<CXFA_FMSimpleExpression> pExp2)
424 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} 429 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {}
425 430
426 void CXFA_FMMultiplicativeExpression::ToJavaScript( 431 void CXFA_FMMultiplicativeExpression::ToJavaScript(
427 CFX_WideTextBuf& javascript) { 432 CFX_WideTextBuf& javascript) {
428 switch (m_op) { 433 switch (m_op) {
429 case TOKmul: 434 case TOKmul:
430 javascript << gs_lpStrExpFuncName[MULTIPLE]; 435 javascript << gs_lpStrExpFuncName[MULTIPLE];
431 break; 436 break;
432 case TOKdiv: 437 case TOKdiv:
433 javascript << gs_lpStrExpFuncName[DIVIDE]; 438 javascript << gs_lpStrExpFuncName[DIVIDE];
434 break; 439 break;
435 default: 440 default:
436 ASSERT(false); 441 ASSERT(false);
437 break; 442 break;
438 } 443 }
439 javascript << FX_WSTRC(L"("); 444 javascript << FX_WSTRC(L"(");
440 m_pExp1->ToJavaScript(javascript); 445 m_pExp1->ToJavaScript(javascript);
441 javascript << FX_WSTRC(L", "); 446 javascript << FX_WSTRC(L", ");
442 m_pExp2->ToJavaScript(javascript); 447 m_pExp2->ToJavaScript(javascript);
443 javascript << FX_WSTRC(L")"); 448 javascript << FX_WSTRC(L")");
444 } 449 }
445 450
446 CXFA_FMPosExpression::CXFA_FMPosExpression(uint32_t line, 451 CXFA_FMPosExpression::CXFA_FMPosExpression(
447 CXFA_FMSimpleExpression* pExp) 452 uint32_t line,
448 : CXFA_FMUnaryExpression(line, TOKplus, pExp) {} 453 std::unique_ptr<CXFA_FMSimpleExpression> pExp)
454 : CXFA_FMUnaryExpression(line, TOKplus, std::move(pExp)) {}
449 455
450 void CXFA_FMPosExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 456 void CXFA_FMPosExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
451 javascript << gs_lpStrExpFuncName[POSITIVE]; 457 javascript << gs_lpStrExpFuncName[POSITIVE];
452 javascript << FX_WSTRC(L"("); 458 javascript << FX_WSTRC(L"(");
453 m_pExp->ToJavaScript(javascript); 459 m_pExp->ToJavaScript(javascript);
454 javascript << FX_WSTRC(L")"); 460 javascript << FX_WSTRC(L")");
455 } 461 }
456 462
457 CXFA_FMNegExpression::CXFA_FMNegExpression(uint32_t line, 463 CXFA_FMNegExpression::CXFA_FMNegExpression(
458 CXFA_FMSimpleExpression* pExp) 464 uint32_t line,
459 : CXFA_FMUnaryExpression(line, TOKminus, pExp) {} 465 std::unique_ptr<CXFA_FMSimpleExpression> pExp)
466 : CXFA_FMUnaryExpression(line, TOKminus, std::move(pExp)) {}
460 467
461 void CXFA_FMNegExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 468 void CXFA_FMNegExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
462 javascript << gs_lpStrExpFuncName[NEGATIVE]; 469 javascript << gs_lpStrExpFuncName[NEGATIVE];
463 javascript << FX_WSTRC(L"("); 470 javascript << FX_WSTRC(L"(");
464 m_pExp->ToJavaScript(javascript); 471 m_pExp->ToJavaScript(javascript);
465 javascript << FX_WSTRC(L")"); 472 javascript << FX_WSTRC(L")");
466 } 473 }
467 474
468 CXFA_FMNotExpression::CXFA_FMNotExpression(uint32_t line, 475 CXFA_FMNotExpression::CXFA_FMNotExpression(
469 CXFA_FMSimpleExpression* pExp) 476 uint32_t line,
470 : CXFA_FMUnaryExpression(line, TOKksnot, pExp) {} 477 std::unique_ptr<CXFA_FMSimpleExpression> pExp)
478 : CXFA_FMUnaryExpression(line, TOKksnot, std::move(pExp)) {}
471 479
472 void CXFA_FMNotExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 480 void CXFA_FMNotExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
473 javascript << gs_lpStrExpFuncName[NOT]; 481 javascript << gs_lpStrExpFuncName[NOT];
474 javascript << FX_WSTRC(L"("); 482 javascript << FX_WSTRC(L"(");
475 m_pExp->ToJavaScript(javascript); 483 m_pExp->ToJavaScript(javascript);
476 javascript << FX_WSTRC(L")"); 484 javascript << FX_WSTRC(L")");
477 } 485 }
478 486
479 CXFA_FMCallExpression::CXFA_FMCallExpression( 487 CXFA_FMCallExpression::CXFA_FMCallExpression(
480 uint32_t line, 488 uint32_t line,
481 CXFA_FMSimpleExpression* pExp, 489 std::unique_ptr<CXFA_FMSimpleExpression> pExp,
482 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, 490 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments,
483 bool bIsSomMethod) 491 bool bIsSomMethod)
484 : CXFA_FMUnaryExpression(line, TOKcall, pExp), 492 : CXFA_FMUnaryExpression(line, TOKcall, std::move(pExp)),
485 m_bIsSomMethod(bIsSomMethod), 493 m_bIsSomMethod(bIsSomMethod),
486 m_Arguments(std::move(pArguments)) {} 494 m_Arguments(std::move(pArguments)) {}
487 495
488 CXFA_FMCallExpression::~CXFA_FMCallExpression() {} 496 CXFA_FMCallExpression::~CXFA_FMCallExpression() {}
489 497
490 bool CXFA_FMCallExpression::IsBuildInFunc(CFX_WideTextBuf* funcName) { 498 bool CXFA_FMCallExpression::IsBuildInFunc(CFX_WideTextBuf* funcName) {
491 uint32_t uHash = FX_HashCode_GetW(funcName->AsStringC(), true); 499 uint32_t uHash = FX_HashCode_GetW(funcName->AsStringC(), true);
492 const XFA_FMBuildInFunc* pEnd = g_BuildInFuncs + FX_ArraySize(g_BuildInFuncs); 500 const XFA_FMBuildInFunc* pEnd = g_BuildInFuncs + FX_ArraySize(g_BuildInFuncs);
493 const XFA_FMBuildInFunc* pFunc = 501 const XFA_FMBuildInFunc* pFunc =
494 std::lower_bound(g_BuildInFuncs, pEnd, uHash, 502 std::lower_bound(g_BuildInFuncs, pEnd, uHash,
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 } 612 }
605 javascript << L")"; 613 javascript << L")";
606 if (isEvalFunc) { 614 if (isEvalFunc) {
607 javascript << L")"; 615 javascript << L")";
608 } 616 }
609 } 617 }
610 } 618 }
611 619
612 CXFA_FMDotAccessorExpression::CXFA_FMDotAccessorExpression( 620 CXFA_FMDotAccessorExpression::CXFA_FMDotAccessorExpression(
613 uint32_t line, 621 uint32_t line,
614 CXFA_FMSimpleExpression* pAccessor, 622 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor,
615 XFA_FM_TOKEN op, 623 XFA_FM_TOKEN op,
616 CFX_WideStringC wsIdentifier, 624 CFX_WideStringC wsIdentifier,
617 CXFA_FMSimpleExpression* pIndexExp) 625 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp)
618 : CXFA_FMBinExpression(line, op, pAccessor, pIndexExp), 626 : CXFA_FMBinExpression(line,
627 op,
628 std::move(pAccessor),
629 std::move(pIndexExp)),
619 m_wsIdentifier(wsIdentifier) {} 630 m_wsIdentifier(wsIdentifier) {}
620 631
621 CXFA_FMDotAccessorExpression::~CXFA_FMDotAccessorExpression() {} 632 CXFA_FMDotAccessorExpression::~CXFA_FMDotAccessorExpression() {}
622 633
623 void CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 634 void CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
624 javascript << gs_lpStrExpFuncName[DOT]; 635 javascript << gs_lpStrExpFuncName[DOT];
625 javascript << FX_WSTRC(L"("); 636 javascript << FX_WSTRC(L"(");
626 if (m_pExp1) { 637 if (m_pExp1) {
627 m_pExp1->ToJavaScript(javascript); 638 m_pExp1->ToJavaScript(javascript);
628 } else { 639 } else {
(...skipping 18 matching lines...) Expand all
647 javascript << m_wsIdentifier; 658 javascript << m_wsIdentifier;
648 javascript << FX_WSTRC(L"\", "); 659 javascript << FX_WSTRC(L"\", ");
649 } 660 }
650 m_pExp2->ToJavaScript(javascript); 661 m_pExp2->ToJavaScript(javascript);
651 javascript << FX_WSTRC(L")"); 662 javascript << FX_WSTRC(L")");
652 } 663 }
653 664
654 CXFA_FMIndexExpression::CXFA_FMIndexExpression( 665 CXFA_FMIndexExpression::CXFA_FMIndexExpression(
655 uint32_t line, 666 uint32_t line,
656 XFA_FM_AccessorIndex accessorIndex, 667 XFA_FM_AccessorIndex accessorIndex,
657 CXFA_FMSimpleExpression* pIndexExp, 668 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp,
658 bool bIsStarIndex) 669 bool bIsStarIndex)
659 : CXFA_FMUnaryExpression(line, TOKlbracket, pIndexExp), 670 : CXFA_FMUnaryExpression(line, TOKlbracket, std::move(pIndexExp)),
660 m_accessorIndex(accessorIndex), 671 m_accessorIndex(accessorIndex),
661 m_bIsStarIndex(bIsStarIndex) {} 672 m_bIsStarIndex(bIsStarIndex) {}
662 673
663 void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 674 void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
664 switch (m_accessorIndex) { 675 switch (m_accessorIndex) {
665 case ACCESSOR_NO_INDEX: 676 case ACCESSOR_NO_INDEX:
666 javascript << FX_WSTRC(L"0"); 677 javascript << FX_WSTRC(L"0");
667 break; 678 break;
668 case ACCESSOR_NO_RELATIVEINDEX: 679 case ACCESSOR_NO_RELATIVEINDEX:
669 javascript << FX_WSTRC(L"1"); 680 javascript << FX_WSTRC(L"1");
(...skipping 12 matching lines...) Expand all
682 if (m_pExp) { 693 if (m_pExp) {
683 m_pExp->ToJavaScript(javascript); 694 m_pExp->ToJavaScript(javascript);
684 } else { 695 } else {
685 javascript << FX_WSTRC(L"0"); 696 javascript << FX_WSTRC(L"0");
686 } 697 }
687 } 698 }
688 } 699 }
689 700
690 CXFA_FMDotDotAccessorExpression::CXFA_FMDotDotAccessorExpression( 701 CXFA_FMDotDotAccessorExpression::CXFA_FMDotDotAccessorExpression(
691 uint32_t line, 702 uint32_t line,
692 CXFA_FMSimpleExpression* pAccessor, 703 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor,
693 XFA_FM_TOKEN op, 704 XFA_FM_TOKEN op,
694 CFX_WideStringC wsIdentifier, 705 CFX_WideStringC wsIdentifier,
695 CXFA_FMSimpleExpression* pIndexExp) 706 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp)
696 : CXFA_FMBinExpression(line, op, pAccessor, pIndexExp), 707 : CXFA_FMBinExpression(line,
708 op,
709 std::move(pAccessor),
710 std::move(pIndexExp)),
697 m_wsIdentifier(wsIdentifier) {} 711 m_wsIdentifier(wsIdentifier) {}
698 712
699 CXFA_FMDotDotAccessorExpression::~CXFA_FMDotDotAccessorExpression() {} 713 CXFA_FMDotDotAccessorExpression::~CXFA_FMDotDotAccessorExpression() {}
700 714
701 void CXFA_FMDotDotAccessorExpression::ToJavaScript( 715 void CXFA_FMDotDotAccessorExpression::ToJavaScript(
702 CFX_WideTextBuf& javascript) { 716 CFX_WideTextBuf& javascript) {
703 javascript << gs_lpStrExpFuncName[DOTDOT]; 717 javascript << gs_lpStrExpFuncName[DOTDOT];
704 javascript << FX_WSTRC(L"("); 718 javascript << FX_WSTRC(L"(");
705 m_pExp1->ToJavaScript(javascript); 719 m_pExp1->ToJavaScript(javascript);
706 javascript << FX_WSTRC(L", "); 720 javascript << FX_WSTRC(L", ");
707 javascript << FX_WSTRC(L"\""); 721 javascript << FX_WSTRC(L"\"");
708 if (m_pExp1 && m_pExp1->GetOperatorToken() == TOKidentifier) { 722 if (m_pExp1 && m_pExp1->GetOperatorToken() == TOKidentifier) {
709 m_pExp1->ToJavaScript(javascript); 723 m_pExp1->ToJavaScript(javascript);
710 } 724 }
711 javascript << FX_WSTRC(L"\", "); 725 javascript << FX_WSTRC(L"\", ");
712 javascript << FX_WSTRC(L"\""); 726 javascript << FX_WSTRC(L"\"");
713 javascript << m_wsIdentifier; 727 javascript << m_wsIdentifier;
714 javascript << FX_WSTRC(L"\", "); 728 javascript << FX_WSTRC(L"\", ");
715 m_pExp2->ToJavaScript(javascript); 729 m_pExp2->ToJavaScript(javascript);
716 javascript << FX_WSTRC(L")"); 730 javascript << FX_WSTRC(L")");
717 } 731 }
718 732
719 CXFA_FMMethodCallExpression::CXFA_FMMethodCallExpression( 733 CXFA_FMMethodCallExpression::CXFA_FMMethodCallExpression(
720 uint32_t line, 734 uint32_t line,
721 CXFA_FMSimpleExpression* pAccessorExp1, 735 std::unique_ptr<CXFA_FMSimpleExpression> pAccessorExp1,
722 CXFA_FMSimpleExpression* pCallExp) 736 std::unique_ptr<CXFA_FMSimpleExpression> pCallExp)
723 : CXFA_FMBinExpression(line, TOKdot, pAccessorExp1, pCallExp) {} 737 : CXFA_FMBinExpression(line,
738 TOKdot,
739 std::move(pAccessorExp1),
740 std::move(pCallExp)) {}
724 741
725 void CXFA_FMMethodCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 742 void CXFA_FMMethodCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
726 javascript << FX_WSTRC(L"(\nfunction ()\n{\n"); 743 javascript << FX_WSTRC(L"(\nfunction ()\n{\n");
727 javascript << FX_WSTRC(L"var method_return_value = null;\n"); 744 javascript << FX_WSTRC(L"var method_return_value = null;\n");
728 javascript << FX_WSTRC(L"var accessor_object = "); 745 javascript << FX_WSTRC(L"var accessor_object = ");
729 m_pExp1->ToJavaScript(javascript); 746 m_pExp1->ToJavaScript(javascript);
730 javascript << FX_WSTRC(L";\n"); 747 javascript << FX_WSTRC(L";\n");
731 javascript << FX_WSTRC(L"if ("); 748 javascript << FX_WSTRC(L"if (");
732 javascript << gs_lpStrExpFuncName[ISFMARRAY]; 749 javascript << gs_lpStrExpFuncName[ISFMARRAY];
733 javascript << FX_WSTRC(L"(accessor_object))\n{\n"); 750 javascript << FX_WSTRC(L"(accessor_object))\n{\n");
734 javascript << FX_WSTRC( 751 javascript << FX_WSTRC(
735 L"for(var index = accessor_object.length - 1; index > 1; index--)\n{\n"); 752 L"for(var index = accessor_object.length - 1; index > 1; index--)\n{\n");
736 javascript << FX_WSTRC(L"method_return_value = accessor_object[index]."); 753 javascript << FX_WSTRC(L"method_return_value = accessor_object[index].");
737 m_pExp2->ToJavaScript(javascript); 754 m_pExp2->ToJavaScript(javascript);
738 javascript << FX_WSTRC(L";\n}\n}\n"); 755 javascript << FX_WSTRC(L";\n}\n}\n");
739 javascript << FX_WSTRC(L"else\n{\nmethod_return_value = accessor_object."); 756 javascript << FX_WSTRC(L"else\n{\nmethod_return_value = accessor_object.");
740 m_pExp2->ToJavaScript(javascript); 757 m_pExp2->ToJavaScript(javascript);
741 javascript << FX_WSTRC(L";\n}\n"); 758 javascript << FX_WSTRC(L";\n}\n");
742 javascript << FX_WSTRC(L"return method_return_value;\n"); 759 javascript << FX_WSTRC(L"return method_return_value;\n");
743 javascript << FX_WSTRC(L"}\n).call(this)"); 760 javascript << FX_WSTRC(L"}\n).call(this)");
744 } 761 }
OLDNEW
« no previous file with comments | « xfa/fxfa/fm2js/xfa_simpleexpression.h ('k') | xfa/fxfa/fm2js/xfa_simpleexpression_unittest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698