00001
00002
00003 #ifndef long_msg_h
00004 #define long_msg_h
00005
00006 #include "entry_frame.h"
00007
00008
00009
00010
00011
00012
00013 class Long_msg : public Sys_ipc_frame
00014 {
00015 public:
00016 Mword msg_word (unsigned index) const;
00017 Mword msg_word (Mword *msg, unsigned index) const;
00018 void set_msg_word (unsigned index, Mword value);
00019 void set_msg_word (Mword *msg, unsigned index, Mword value);
00020 };
00021
00022
00023
00024
00025
00026
00027 #include "space.h"
00028
00029
00030
00031
00032
00033
00034
00035
00036 inline Mword
00037 Long_msg::msg_word(unsigned index) const
00038 {
00039 return Sys_ipc_frame::msg_word (index);
00040 }
00041
00042
00043
00044 inline void
00045 Long_msg::set_msg_word(unsigned index, Mword value)
00046 {
00047 Sys_ipc_frame::set_msg_word (index, value);
00048 }
00049
00050
00051
00052 inline Mword
00053 Long_msg::msg_word(Mword *msg, unsigned index) const
00054 {
00055 if (index < num_snd_reg_words())
00056 return Sys_ipc_frame::msg_word (index);
00057
00058 return current_space()->peek_user (msg + index + 3);
00059 }
00060
00061
00062
00063 inline void
00064 Long_msg::set_msg_word(Mword *msg, unsigned index, Mword value)
00065 {
00066 if (index < num_rcv_reg_words())
00067 Sys_ipc_frame::set_msg_word (index, value);
00068
00069 current_space()->poke_user (msg + index + 3, value);
00070 }
00071
00072 #endif // long_msg_h