1<?xml version="1.0"?> 2<concept name="SignedInteger" category="Utility"><!-- 3Based on concepts from the SGI Standard Template Library documentation: 4Copyright (c) 1996-1999 5Silicon Graphics Computer Systems, Inc. 6 7Copyright (c) 1994 8Hewlett-Packard Company 9--><!-- 10Copyright 2000-2001 University of Notre Dame du Lac. 11Copyright 2001-2002 Indiana University. 12Some concepts based on versions from the MTL draft manual and Boost Graph 13and Property Map documentation: 14Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 15--> 16 <param name="T" role="integral-type"/> 17 18 <models-sentence>Integer type <arg num="1"/> must be a model of <self/>.</models-sentence> 19 20 <refines const="no" concept="CopyConstructible"/> 21 <refines const="no" concept="Assignable"/> 22 <refines const="no" concept="DefaultConstructible"/> 23 <refines const="no" concept="EqualityComparable"/> 24 <refines const="no" concept="LessThanComparable"/> 25 26 <notation variables="x y z"> 27 <sample-value><type name="T"/></sample-value> 28 </notation> 29 <notation variables="a b"> 30 <sample-value><type name="int"/></sample-value> 31 </notation> 32 33 <!-- 34 <valid-type-expression name="int-ness"> 35 <documentation>Should this really be required?</documentation> 36 <type name="T"/> 37 <return-type> 38 <require-same-type> 39 <type name="int"/> 40 </require-same-type> 41 </return-type> 42 </valid-type-expression> 43 --> 44 45 <valid-expression name="Conversion from int"> 46 <construct template-parameters=""> 47 <type name="T"/> 48 <sample-value><type name="int"/></sample-value> 49 </construct> 50 <return-type><require-same-type testable="yes"> 51 <type name="T"/> 52 </require-same-type></return-type> 53 </valid-expression> 54 55 <valid-expression name="Preincrement"> 56 <preincrement> 57 <sample-value> 58 <reference-to><type name="T"/></reference-to> 59 </sample-value> 60 </preincrement> 61 <return-type> 62 <require-same-type testable="yes"> 63 <reference-to><type name="T"/></reference-to> 64 </require-same-type> 65 </return-type> 66 </valid-expression> 67 68 <valid-expression name="Predecrement"> 69 <predecrement> 70 <sample-value> 71 <reference-to><type name="T"/></reference-to> 72 </sample-value> 73 </predecrement> 74 <return-type> 75 <require-same-type testable="yes"> 76 <reference-to><type name="T"/></reference-to> 77 </require-same-type> 78 </return-type> 79 </valid-expression> 80 81 <valid-expression name="Postincrement"> 82 <postincrement> 83 <sample-value> 84 <reference-to><type name="T"/></reference-to> 85 </sample-value> 86 </postincrement> 87 <return-type> 88 <require-same-type testable="yes"> 89 <type name="T"/> 90 </require-same-type> 91 </return-type> 92 </valid-expression> 93 94 <valid-expression name="Postdecrement"> 95 <postdecrement> 96 <sample-value> 97 <reference-to><type name="T"/></reference-to> 98 </sample-value> 99 </postdecrement> 100 <return-type> 101 <require-same-type testable="yes"> 102 <type name="T"/> 103 </require-same-type> 104 </return-type> 105 </valid-expression> 106 107 <valid-expression name="Sum"> 108 <add> 109 <sample-value> 110 <type name="T"/> 111 </sample-value> 112 <sample-value> 113 <type name="T"/> 114 </sample-value> 115 </add> 116 <return-type> 117 <require-same-type testable="yes"> 118 <type name="T"/> 119 </require-same-type> 120 </return-type> 121 </valid-expression> 122 123 <valid-expression name="Sum with int"> 124 <add> 125 <sample-value> 126 <type name="T"/> 127 </sample-value> 128 <sample-value> 129 <type name="int"/> 130 </sample-value> 131 </add> 132 <return-type> 133 <require-same-type testable="yes"> 134 <type name="T"/> 135 </require-same-type> 136 </return-type> 137 </valid-expression> 138 139 <valid-expression name="Sum-assignment"> 140 <add-assign> 141 <sample-value> 142 <reference-to><type name="T"/></reference-to> 143 </sample-value> 144 <sample-value> 145 <type name="T"/> 146 </sample-value> 147 </add-assign> 148 <return-type> 149 <require-same-type testable="yes"> 150 <reference-to><type name="T"/></reference-to> 151 </require-same-type> 152 </return-type> 153 </valid-expression> 154 155 <valid-expression name="Sum-assignment with int"> 156 <add-assign> 157 <sample-value> 158 <reference-to><type name="T"/></reference-to> 159 </sample-value> 160 <sample-value> 161 <type name="int"/> 162 </sample-value> 163 </add-assign> 164 <return-type> 165 <require-same-type testable="yes"> 166 <reference-to><type name="T"/></reference-to> 167 </require-same-type> 168 </return-type> 169 </valid-expression> 170 171 <valid-expression name="Difference"> 172 <subtract> 173 <sample-value> 174 <type name="T"/> 175 </sample-value> 176 <sample-value> 177 <type name="T"/> 178 </sample-value> 179 </subtract> 180 <return-type> 181 <require-same-type testable="yes"> 182 <type name="T"/> 183 </require-same-type> 184 </return-type> 185 </valid-expression> 186 187 <valid-expression name="Difference with int"> 188 <subtract> 189 <sample-value> 190 <type name="T"/> 191 </sample-value> 192 <sample-value> 193 <type name="int"/> 194 </sample-value> 195 </subtract> 196 <return-type> 197 <require-same-type testable="yes"> 198 <type name="T"/> 199 </require-same-type> 200 </return-type> 201 </valid-expression> 202 203 <valid-expression name="Product"> 204 <multiply> 205 <sample-value> 206 <type name="T"/> 207 </sample-value> 208 <sample-value> 209 <type name="T"/> 210 </sample-value> 211 </multiply> 212 <return-type> 213 <require-same-type testable="yes"> 214 <type name="T"/> 215 </require-same-type> 216 </return-type> 217 </valid-expression> 218 219 <valid-expression name="Product with int"> 220 <multiply> 221 <sample-value> 222 <type name="T"/> 223 </sample-value> 224 <sample-value> 225 <type name="int"/> 226 </sample-value> 227 </multiply> 228 <return-type> 229 <require-same-type testable="yes"> 230 <type name="T"/> 231 </require-same-type> 232 </return-type> 233 </valid-expression> 234 235 <valid-expression name="Product-assignment with int"> 236 <multiply-assign> 237 <sample-value> 238 <reference-to><type name="T"/></reference-to> 239 </sample-value> 240 <sample-value> 241 <type name="int"/> 242 </sample-value> 243 </multiply-assign> 244 <return-type> 245 <require-same-type testable="yes"> 246 <reference-to><type name="T"/></reference-to> 247 </require-same-type> 248 </return-type> 249 </valid-expression> 250 251 <valid-expression name="Product with int on left"> 252 <multiply> 253 <sample-value> 254 <type name="int"/> 255 </sample-value> 256 <sample-value> 257 <type name="T"/> 258 </sample-value> 259 </multiply> 260 <return-type> 261 <require-same-type testable="yes"> 262 <type name="T"/> 263 </require-same-type> 264 </return-type> 265 </valid-expression> 266 267 <valid-expression name="Quotient"> 268 <divide> 269 <sample-value> 270 <type name="T"/> 271 </sample-value> 272 <sample-value> 273 <type name="T"/> 274 </sample-value> 275 </divide> 276 <return-type> 277 <require-same-type testable="yes"> 278 <type name="T"/> 279 </require-same-type> 280 </return-type> 281 </valid-expression> 282 283 <valid-expression name="Quotient with int"> 284 <divide> 285 <sample-value> 286 <type name="T"/> 287 </sample-value> 288 <sample-value> 289 <type name="int"/> 290 </sample-value> 291 </divide> 292 <return-type> 293 <require-same-type testable="yes"> 294 <type name="T"/> 295 </require-same-type> 296 </return-type> 297 </valid-expression> 298 299 <valid-expression name="Right-shift"> 300 <shift-right> 301 <sample-value> 302 <type name="T"/> 303 </sample-value> 304 <sample-value> 305 <type name="T"/> 306 </sample-value> 307 </shift-right> 308 <return-type> 309 <require-same-type testable="yes"> 310 <type name="T"/> 311 </require-same-type> 312 </return-type> 313 </valid-expression> 314 315 <valid-expression name="Right-shift with int"> 316 <shift-right> 317 <sample-value> 318 <type name="T"/> 319 </sample-value> 320 <sample-value> 321 <type name="int"/> 322 </sample-value> 323 </shift-right> 324 <return-type> 325 <require-same-type testable="yes"> 326 <type name="T"/> 327 </require-same-type> 328 </return-type> 329 </valid-expression> 330 331 <valid-expression name="Right-shift-assignment with int"> 332 <shift-right-assign> 333 <sample-value> 334 <reference-to><type name="T"/></reference-to> 335 </sample-value> 336 <sample-value> 337 <type name="int"/> 338 </sample-value> 339 </shift-right-assign> 340 <return-type> 341 <require-same-type testable="yes"> 342 <reference-to><type name="T"/></reference-to> 343 </require-same-type> 344 </return-type> 345 </valid-expression> 346 347 <valid-expression name="Less-than comparison"> 348 <less-than> 349 <sample-value> 350 <type name="T"/> 351 </sample-value> 352 <sample-value> 353 <type name="T"/> 354 </sample-value> 355 </less-than> 356 <return-type> 357 <convertible-to testable="yes"> 358 <type name="bool"/> 359 </convertible-to> 360 </return-type> 361 </valid-expression> 362 363 <valid-expression name="Less-than comparison with int"> 364 <less-than> 365 <sample-value> 366 <type name="T"/> 367 </sample-value> 368 <sample-value> 369 <type name="int"/> 370 </sample-value> 371 </less-than> 372 <return-type> 373 <convertible-to testable="yes"> 374 <type name="bool"/> 375 </convertible-to> 376 </return-type> 377 </valid-expression> 378 379 <valid-expression name="Less-than comparison with size_t"> 380 <less-than> 381 <sample-value> 382 <type name="T"/> 383 </sample-value> 384 <sample-value> 385 <type name="std::size_t"/> 386 </sample-value> 387 </less-than> 388 <return-type> 389 <convertible-to testable="yes"> 390 <type name="bool"/> 391 </convertible-to> 392 </return-type> 393 </valid-expression> 394 395 <valid-expression name="Greater-than comparison"> 396 <greater-than> 397 <sample-value> 398 <type name="T"/> 399 </sample-value> 400 <sample-value> 401 <type name="T"/> 402 </sample-value> 403 </greater-than> 404 <return-type> 405 <convertible-to testable="yes"> 406 <type name="bool"/> 407 </convertible-to> 408 </return-type> 409 </valid-expression> 410 411 <valid-expression name="Greater-than comparison with int"> 412 <greater-than> 413 <sample-value> 414 <type name="T"/> 415 </sample-value> 416 <sample-value> 417 <type name="int"/> 418 </sample-value> 419 </greater-than> 420 <return-type> 421 <convertible-to testable="yes"> 422 <type name="bool"/> 423 </convertible-to> 424 </return-type> 425 </valid-expression> 426 427 <valid-expression name="Less-than-or-equal comparison"> 428 <less-than-or-equal> 429 <sample-value> 430 <type name="T"/> 431 </sample-value> 432 <sample-value> 433 <type name="T"/> 434 </sample-value> 435 </less-than-or-equal> 436 <return-type> 437 <convertible-to testable="yes"> 438 <type name="bool"/> 439 </convertible-to> 440 </return-type> 441 </valid-expression> 442 443 <valid-expression name="Less-than-or-equal comparison with int"> 444 <less-than-or-equal> 445 <sample-value> 446 <type name="T"/> 447 </sample-value> 448 <sample-value> 449 <type name="int"/> 450 </sample-value> 451 </less-than-or-equal> 452 <return-type> 453 <convertible-to testable="yes"> 454 <type name="bool"/> 455 </convertible-to> 456 </return-type> 457 </valid-expression> 458 459 <valid-expression name="Greater-than-or-equal comparison"> 460 <greater-than-or-equal> 461 <sample-value> 462 <type name="T"/> 463 </sample-value> 464 <sample-value> 465 <type name="T"/> 466 </sample-value> 467 </greater-than-or-equal> 468 <return-type> 469 <convertible-to testable="yes"> 470 <type name="bool"/> 471 </convertible-to> 472 </return-type> 473 </valid-expression> 474 475 <valid-expression name="Greater-than-or-equal comparison with int"> 476 <greater-than-or-equal> 477 <sample-value> 478 <type name="T"/> 479 </sample-value> 480 <sample-value> 481 <type name="int"/> 482 </sample-value> 483 </greater-than-or-equal> 484 <return-type> 485 <convertible-to testable="yes"> 486 <type name="bool"/> 487 </convertible-to> 488 </return-type> 489 </valid-expression> 490 491 <valid-expression name="Greater-than-or-equal comparison with int on left"> 492 <greater-than-or-equal> 493 <sample-value> 494 <type name="int"/> 495 </sample-value> 496 <sample-value> 497 <type name="T"/> 498 </sample-value> 499 </greater-than-or-equal> 500 <return-type> 501 <convertible-to testable="yes"> 502 <type name="bool"/> 503 </convertible-to> 504 </return-type> 505 </valid-expression> 506 507 <valid-expression name="Equality comparison"> 508 <equal-to> 509 <sample-value> 510 <type name="T"/> 511 </sample-value> 512 <sample-value> 513 <type name="T"/> 514 </sample-value> 515 </equal-to> 516 <return-type> 517 <convertible-to testable="yes"> 518 <type name="bool"/> 519 </convertible-to> 520 </return-type> 521 </valid-expression> 522 523 <valid-expression name="Equality comparison with int"> 524 <equal-to> 525 <sample-value> 526 <type name="T"/> 527 </sample-value> 528 <sample-value> 529 <type name="int"/> 530 </sample-value> 531 </equal-to> 532 <return-type> 533 <convertible-to testable="yes"> 534 <type name="bool"/> 535 </convertible-to> 536 </return-type> 537 </valid-expression> 538 539 <valid-type-expression name="Conversion to int"> 540 <documentation/> 541 <type name="T"/> 542 <return-type> 543 <convertible-to testable="yes"> 544 <type name="int"/> 545 </convertible-to> 546 </return-type> 547 </valid-type-expression> 548 549</concept> 550