| 42 | } |
| 43 | |
| 44 | CodeData::CodeData(int code, const QString& value, int lineNum) |
| 45 | : lineNum(lineNum) |
| 46 | , m_code(code) |
| 47 | , strVal(value) |
| 48 | { |
| 49 | bool ok = true; |
| 50 | Type type; |
| 51 | if (0 <= code && code <= 9) // Строка (с появлением расширенных имен символов в AutoCAD 2000 предел в 255 символов был увеличен |
| 52 | // до 2049 однобайтовых символов без учета символа абзаца в конце строки). |
| 53 | // Подробные сведения см. в разделе «Хранение строковых значений». |
| 54 | type = String; |
| 55 | else if (10 <= code && code <= 39) // Значение 3D-точки двойной точности |
| 56 | type = Double; |
| 57 | else if (40 <= code && code <= 59) // Значение с плавающей запятой двойной точности |
| 58 | type = Double; |
| 59 | else if (60 <= code && code <= 79) // 16-разрядное целое значение |
| 60 | type = Integer16; |
| 61 | else if (90 <= code && code <= 99) // 32-разрядное целое значение |
| 62 | type = Integer32; |
| 63 | else if (100 == code) // Строка (максимум 255 символов, меньше для строк в формате Юникод). Подробные сведения см. в разделе «Хранение строковых значений» |
| 64 | type = String; |
| 65 | else if (102 == code) // Строка (максимум 255 символов, меньше для строк в формате Юникод). Подробные сведения см. в разделе «Хранение строковых значений» |
| 66 | type = String; |
| 67 | else if (105 == code) // Строка, представляющая шестнадцатеричное значение дескриптора |
| 68 | type = String; |
| 69 | else if (110 <= code && code <= 119) // Значение с плавающей запятой двойной точности |
| 70 | type = Double; |
| 71 | else if (120 <= code && code <= 129) // Значение с плавающей запятой двойной точности |
| 72 | type = Double; |
| 73 | else if (130 <= code && code <= 139) // Значение с плавающей запятой двойной точности |
| 74 | type = Double; |
| 75 | else if (140 <= code && code <= 149) // Скалярное значение с плавающей запятой двойной точности |
| 76 | type = Double; |
| 77 | else if (160 <= code && code <= 169) // 64-разрядное целое значение |
| 78 | type = Integer64; |
| 79 | else if (170 <= code && code <= 179) // 16-разрядное целое значение |
| 80 | type = Integer16; |
| 81 | else if (210 <= code && code <= 239) // Значение с плавающей запятой двойной точности |
| 82 | type = Double; |
| 83 | else if (270 <= code && code <= 279) // 16-разрядное целое значение |
| 84 | type = Integer16; |
| 85 | else if (280 <= code && code <= 289) // 16-разрядное целое значение |
| 86 | type = Integer16; |
| 87 | else if (290 <= code && code <= 299) // Логическое значение флага |
| 88 | type = String; |
| 89 | else if (300 <= code && code <= 309) // Произвольная текстовая строка. Подробные сведения см. в разделе «Хранение строковых значений» |
| 90 | type = String; |
| 91 | else if (310 <= code && code <= 319) // Строка, представляющая шестнадцатеричное значение двоичного уровня |
| 92 | type = String; |
| 93 | else if (320 <= code && code <= 329) // Строка, представляющая шестнадцатеричное значение дескриптора |
| 94 | type = String; |
| 95 | else if (330 <= code && code <= 369) // Строка, представляющая шестнадцатеричное значение идентификаторов объектов |
| 96 | type = String; |
| 97 | else if (370 <= code && code <= 379) // 16-разрядное целое значение |
| 98 | type = Integer16; |
| 99 | else if (380 <= code && code <= 389) // 16-разрядное целое значение |
| 100 | type = Integer16; |
| 101 | else if (390 <= code && code <= 399) // Строка, представляющая шестнадцатеричное значение дескриптора |