Ticket #6302: message.patch
File message.patch, 6.3 KB (added by , 13 years ago) |
---|
-
src/kits/app/Message.cpp
17 17 #include <TokenSpace.h> 18 18 #include <util/KMessage.h> 19 19 20 #include <Alignment.h> 20 21 #include <Application.h> 21 22 #include <AppMisc.h> 22 23 #include <BlockCache.h> … … 2382 2383 2383 2384 DEFINE_FUNCTIONS(BPoint, Point, B_POINT_TYPE); 2384 2385 DEFINE_FUNCTIONS(BRect, Rect, B_RECT_TYPE); 2386 DEFINE_FUNCTIONS(BSize, Size, B_SIZE_TYPE); 2385 2387 DEFINE_FUNCTIONS(int8, Int8, B_INT8_TYPE); 2386 2388 DEFINE_FUNCTIONS(uint8, UInt8, B_UINT8_TYPE); 2387 2389 DEFINE_FUNCTIONS(int16, Int16, B_INT16_TYPE); … … 2403 2405 return HasData(name, typeCode, index); \ 2404 2406 } 2405 2407 2408 DEFINE_HAS_FUNCTION(Alignment, B_ALIGNMENT_TYPE); 2406 2409 DEFINE_HAS_FUNCTION(String, B_STRING_TYPE); 2407 2410 DEFINE_HAS_FUNCTION(Pointer, B_POINTER_TYPE); 2408 2411 DEFINE_HAS_FUNCTION(Messenger, B_MESSENGER_TYPE); … … 2434 2437 #undef DEFINE_LAZY_FIND_FUNCTION 2435 2438 2436 2439 status_t 2440 BMessage::AddAlignment(const char* name, const BAlignment& alignment) 2441 { 2442 int32 data[2] = {alignment.horizontal, alignment.vertical}; 2443 return AddData(name, B_ALIGNMENT_TYPE, data, sizeof(data)); 2444 } 2445 2446 2447 status_t 2437 2448 BMessage::AddString(const char *name, const char *string) 2438 2449 { 2439 2450 return AddData(name, B_STRING_TYPE, string, string ? strlen(string) + 1 : 0, false); … … 2539 2550 2540 2551 2541 2552 status_t 2553 BMessage::FindAlignment(const char* name, BAlignment* alignment) const 2554 { 2555 return FindAlignment(name, 0, alignment); 2556 } 2557 2558 2559 status_t 2560 BMessage::FindAlignment(const char* name, int32 index, 2561 BAlignment* alignment) const 2562 { 2563 if (!alignment) 2564 return B_BAD_VALUE; 2565 2566 int32* data; 2567 ssize_t bytes; 2568 2569 status_t err = FindData(name, B_ALIGNMENT_TYPE, index, 2570 (const void**)&data, &bytes); 2571 2572 if (err == B_OK) { 2573 if (bytes != sizeof(int32[2])) 2574 return B_ERROR; 2575 2576 alignment->horizontal = (enum alignment)(*data); 2577 alignment->vertical = (vertical_alignment)*(data + 1); 2578 } 2579 2580 return err; 2581 } 2582 2583 2584 status_t 2542 2585 BMessage::FindString(const char *name, const char **string) const 2543 2586 { 2544 2587 return FindString(name, 0, string); … … 2719 2762 2720 2763 2721 2764 status_t 2765 BMessage::ReplaceAlignment(const char* name, const BAlignment& alignment) 2766 { 2767 int32 data[2] = {alignment.horizontal, alignment.vertical}; 2768 return ReplaceData(name, B_ALIGNMENT_TYPE, 0, data, sizeof(data)); 2769 } 2770 2771 2772 status_t 2773 BMessage::ReplaceAlignment(const char* name, int32 index, 2774 const BAlignment& alignment) 2775 { 2776 int32 data[2] = {alignment.horizontal, alignment.vertical}; 2777 return ReplaceData(name, B_ALIGNMENT_TYPE, index, data, sizeof(data)); 2778 } 2779 2780 2781 status_t 2722 2782 BMessage::ReplaceString(const char *name, const char *string) 2723 2783 { 2724 2784 if (string == NULL) -
headers/os/app/Message.h
18 18 #include <AppDefs.h> /* For convenience */ 19 19 #include <TypeConstants.h> /* For convenience */ 20 20 21 class BAlignment; 21 22 class BBlockCache; 22 23 class BMessenger; 23 24 class BHandler; … … 114 115 status_t PopSpecifier(); 115 116 116 117 // Adding data 118 status_t AddAlignment(const char* name, 119 const BAlignment& alignment); 117 120 status_t AddRect(const char *name, BRect aRect); 118 121 status_t AddPoint(const char *name, BPoint aPoint); 122 status_t AddSize(const char* name, BSize aSize); 119 123 status_t AddString(const char *name, const char *aString); 120 124 status_t AddString(const char *name, const BString &aString); 121 125 status_t AddInt8(const char *name, int8 value); … … 145 149 status_t MakeEmpty(); 146 150 147 151 // Finding data 152 status_t FindAlignment(const char* name, 153 BAlignment* alignment) const; 154 status_t FindAlignment(const char* name, int32 index, 155 BAlignment* alignment) const; 156 148 157 status_t FindRect(const char *name, BRect *rect) const; 149 158 status_t FindRect(const char *name, int32 index, BRect *rect) const; 150 159 status_t FindPoint(const char *name, BPoint *point) const; 151 160 status_t FindPoint(const char *name, int32 index, BPoint *point) const; 161 162 status_t FindSize(const char *name, BSize* size) const; 163 status_t FindSize(const char *name, 164 int32 index, BSize* size) const; 165 152 166 status_t FindString(const char *name, const char **string) const; 153 167 status_t FindString(const char *name, int32 index, const char **string) const; 154 168 status_t FindString(const char *name, BString *string) const; … … 191 205 const void **data, ssize_t *numBytes) const; 192 206 193 207 // Replacing data 208 status_t ReplaceAlignment(const char* name, 209 const BAlignment& alignment); 210 status_t ReplaceAlignment(const char* name, int32 index, 211 const BAlignment& alignment); 212 194 213 status_t ReplaceRect(const char *name, BRect aRect); 195 214 status_t ReplaceRect(const char *name, int32 index, BRect aRect); 215 196 216 status_t ReplacePoint(const char *name, BPoint aPoint); 197 217 status_t ReplacePoint(const char *name, int32 index, BPoint aPoint); 218 status_t ReplaceSize(const char* name, BSize aSize); 219 status_t ReplaceSize(const char* name, int32 index, BSize aSize); 220 198 221 status_t ReplaceString(const char *name, const char *aString); 199 222 status_t ReplaceString(const char *name, int32 index, const char *aString); 200 223 status_t ReplaceString(const char *name, const BString &aString); … … 245 268 void operator delete(void *pointer, size_t size); 246 269 247 270 // Private, reserved, or obsolete 271 bool HasAlignment(const char*, int32 n = 0) const; 248 272 bool HasRect(const char *, int32 n = 0) const; 249 273 bool HasPoint(const char *, int32 n = 0) const; 274 bool HasSize(const char*, int32 n = 0) const; 250 275 bool HasString(const char *, int32 n = 0) const; 251 276 bool HasInt8(const char *, int32 n = 0) const; 252 277 bool HasUInt8(const char *, int32 n = 0) const; -
headers/os/support/TypeConstants.h
14 14 15 15 enum { 16 16 B_AFFINE_TRANSFORM_TYPE = 'AMTX', 17 B_ALIGNMENT_TYPE = 'ALGN', 17 18 B_ANY_TYPE = 'ANYT', 18 19 B_ATOM_TYPE = 'ATOM', 19 20 B_ATOMREF_TYPE = 'ATMR', … … 47 48 B_REF_TYPE = 'RREF', 48 49 B_RGB_32_BIT_TYPE = 'RGBB', 49 50 B_RGB_COLOR_TYPE = 'RGBC', 51 B_SIZE_TYPE = 'SIZE', 50 52 B_SIZE_T_TYPE = 'SIZT', 51 53 B_SSIZE_T_TYPE = 'SSZT', 52 54 B_STRING_TYPE = 'CSTR',