home *** CD-ROM | disk | FTP | other *** search
/ Solo Programadores 22 / SOLO_22.iso / packages / win32ada / data.z / win32-wsnetbs.adb < prev    next >
Encoding:
Text File  |  1995-12-01  |  2.6 KB  |  61 lines

  1. -- $Source: /home/harp/1/proto/monoBANK/winnt/win32-wsnetbs.adb,v $ 
  2. -- $Revision: 1.2 $ $Date: 95/02/07 15:46:49 $ $Author: mg $ 
  3. -------------------------------------------------------------------------------
  4. --
  5. -- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS FURNISHED "AS IS" WITHOUT 
  6. -- WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
  7. -- TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR 
  8. -- PURPOSE.  The user assumes the entire risk as to the accuracy and the 
  9. -- use of this file.
  10. --
  11. -- Copyright (c) Intermetrics, Inc. 1995
  12. -- Royalty-free, unlimited, worldwide, non-exclusive use, modification, 
  13. -- reproduction and further distribution of this file is permitted.
  14. --
  15. -------------------------------------------------------------------------------
  16.  
  17.  
  18. with Ada.Unchecked_Conversion;
  19.  
  20. package body Win32.wsnetbs is
  21.  
  22.     use type Interfaces.C.Size_T;
  23.  
  24.     procedure SET_NETBIOS_SOCKADDR(snb     : PSOCKADDR_NB;
  25.                                    the_type: Win32.Winsock.u_short;
  26.                                    name    : Win32.PCHAR;
  27.                                    port    : Win32.CHAR)  is    -- wsnetbs.h:44
  28.  
  29.         function To_PChar is new Ada.Unchecked_Conversion(
  30.                                     integer, Win32.PCHAR);
  31.         function To_Int is new Ada.Unchecked_Conversion(
  32.                                     Win32.PCHAR, integer); 
  33.         function To_char is new Ada.Unchecked_Conversion(
  34.                                     Win32.CHAR, character);
  35.  
  36.         i : Integer;
  37.         --name_next: Win32.PCHAR;
  38.     begin
  39.         snb.all.snb_family := Win32.Winsock.AF_NETBIOS;                   
  40.         snb.all.snb_type := the_type;                                
  41.         for idx in 0..NETBIOS_NAME_LENGTH - 1 loop
  42.             snb.all.snb_name(idx) := ' ';                           
  43.         end loop;
  44.         i := 0;
  45.         --name_next := To_PCHAR(To_Int(name) + i);
  46.         --while (To_char(name_next.all) /= Ascii.nul and 
  47.         --      i < NETBIOS_NAME_LENGTH-1) loop
  48.         --    snb.all.snb_name(i) := name_next.all;
  49.         while ((Interfaces.C.Strings.Value(Win32.To_Chars_Ptr(name))(i) 
  50.             /= Ascii.nul) and (i < NETBIOS_NAME_LENGTH-1)) loop
  51.             snb.all.snb_name(i) := Win32.Char(Interfaces.C.Strings.Value(
  52.                                       Win32.To_Chars_Ptr(name))(i));
  53.             i := i + 1;
  54.             --name_next := To_PCHAR(To_Int(name) + i);
  55.         end loop;
  56.         snb.all.snb_name(NETBIOS_NAME_LENGTH-1) := port;                    
  57.     end SET_NETBIOS_SOCKADDR;
  58.     pragma inline(SET_NETBIOS_SOCKADDR);
  59.  
  60. end Win32.Wsnetbs;
  61.