add ability to send commands directly in C code, annotate which functions may return null
This commit is contained in:
		
							parent
							
								
									53f05efb3d
								
							
						
					
					
						commit
						acc35b6727
					
				
					 13 changed files with 138 additions and 29 deletions
				
			
		| 
						 | 
				
			
			@ -26,7 +26,7 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///
 | 
			
		||||
        ///  - `size`: size in bits.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  returns: `SPBitVec` with all bits set to false.
 | 
			
		||||
        ///  returns: `SPBitVec` with all bits set to false. Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Panics
 | 
			
		||||
        ///
 | 
			
		||||
| 
						 | 
				
			
			@ -195,7 +195,7 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        ///  Creates a new `SPBrightnessGrid` with the specified dimensions.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  returns: `SPBrightnessGrid` initialized to 0.
 | 
			
		||||
        ///  returns: `SPBrightnessGrid` initialized to 0. Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
| 
						 | 
				
			
			@ -597,6 +597,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///      Because Rust expects UTF-8 strings, it might be necessary to only send ASCII for now.
 | 
			
		||||
        ///  </div>
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
| 
						 | 
				
			
			@ -613,7 +615,9 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///  Allocates a new `Command::BitmapLinearWin` instance.
 | 
			
		||||
        ///  The passed `SPPixelGrid` gets consumed.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Sets a window of pixels to the specified values
 | 
			
		||||
        ///  Sets a window of pixels to the specified values.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
| 
						 | 
				
			
			@ -682,9 +686,27 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///  - `SPPacket` points to a valid instance of `SPPacket`
 | 
			
		||||
        ///  - `SPPacket` is not used concurrently or after this call
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [DllImport(__DllName, EntryPoint = "sp_connection_send", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
 | 
			
		||||
        [DllImport(__DllName, EntryPoint = "sp_connection_send_packet", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
 | 
			
		||||
        [return: MarshalAs(UnmanagedType.U1)]
 | 
			
		||||
        public static extern bool sp_connection_send(Connection* connection, Packet* packet);
 | 
			
		||||
        public static extern bool sp_connection_send_packet(Connection* connection, Packet* packet);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///  Sends a `SPCommand` to the display using the `SPConnection`.
 | 
			
		||||
        ///  The passed `SPCommand` gets consumed.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  returns: true in case of success
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
        ///
 | 
			
		||||
        ///  - `connection` points to a valid instance of `SPConnection`
 | 
			
		||||
        ///  - `command` points to a valid instance of `SPPacket`
 | 
			
		||||
        ///  - `command` is not used concurrently or after this call
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [DllImport(__DllName, EntryPoint = "sp_connection_send_command", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
 | 
			
		||||
        [return: MarshalAs(UnmanagedType.U1)]
 | 
			
		||||
        public static extern bool sp_connection_send_command(Connection* connection, Command* command);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///  Closes and deallocates a `SPConnection`.
 | 
			
		||||
| 
						 | 
				
			
			@ -717,6 +739,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        ///  Loads a `SPCp437Grid` with the specified dimensions from the provided data.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Panics
 | 
			
		||||
        ///
 | 
			
		||||
        ///  When the provided `data_length` is not sufficient for the `height` and `width`
 | 
			
		||||
| 
						 | 
				
			
			@ -736,6 +760,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        ///  Clones a `SPCp437Grid`.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
| 
						 | 
				
			
			@ -862,6 +888,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        ///  Gets an unsafe reference to the data of the `SPCp437Grid` instance.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  ## Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
| 
						 | 
				
			
			@ -877,6 +905,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///  Turns a `SPCommand` into a `SPPacket`.
 | 
			
		||||
        ///  The `SPCommand` gets consumed.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
| 
						 | 
				
			
			@ -909,6 +939,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        ///  Clones a `SPPacket`.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
| 
						 | 
				
			
			@ -942,7 +974,7 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///  - `width`: size in pixels in x-direction
 | 
			
		||||
        ///  - `height`: size in pixels in y-direction
 | 
			
		||||
        ///
 | 
			
		||||
        ///  returns: `SPPixelGrid` initialized to all pixels off
 | 
			
		||||
        ///  returns: `SPPixelGrid` initialized to all pixels off. Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Panics
 | 
			
		||||
        ///
 | 
			
		||||
| 
						 | 
				
			
			@ -966,7 +998,7 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        ///  - `width`: size in pixels in x-direction
 | 
			
		||||
        ///  - `height`: size in pixels in y-direction
 | 
			
		||||
        ///
 | 
			
		||||
        ///  returns: `SPPixelGrid` that contains a copy of the provided data
 | 
			
		||||
        ///  returns: `SPPixelGrid` that contains a copy of the provided data. Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Panics
 | 
			
		||||
        ///
 | 
			
		||||
| 
						 | 
				
			
			@ -987,6 +1019,8 @@ namespace ServicePoint.BindGen
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        ///  Clones a `SPPixelGrid`.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  Will never return NULL.
 | 
			
		||||
        ///
 | 
			
		||||
        ///  # Safety
 | 
			
		||||
        ///
 | 
			
		||||
        ///  The caller has to make sure that:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue