Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Gnome/gdk/macos/   (Gnome Linux Desktop Version 4.23.2©)  Datei vom 30.5.2026 mit Größe 19 kB image not shown  

Quelle  GdkMacosBaseView.c

  Sprache: C
 

/* GdkMacosBaseView.c
 *
 * Copyright 2005-2007 Imendio AB
 * Copyright 2011 Hiroyuki Yamamoto
 * Copyright 2020 Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 *
 * SPDX-License-Identifier: LGPL-2.1-or-later
 */


#include "config.h"

#import "GdkMacosBaseView.h"
#import "GdkMacosWindow.h"

#include "gdkmacosdisplay-private.h"
#include "gdkmacossurface-private.h"

#include "gdkdebugprivate.h"

@implementation GdkMacosBaseView

-(id)initWithFrame:(NSRect)frameRect
{
  if ((self = [super initWithFrame: frameRect]))
    {
      NSRect rect = NSMakeRect (0000);
      NSTrackingAreaOptions options;

      markedRange = NSMakeRange (NSNotFound, 0);
      selectedRange = NSMakeRange (00);
      [self setValue: @(YES) forKey: @"postsFrameChangedNotifications"];

      options = (NSTrackingMouseEnteredAndExited |
                 NSTrackingMouseMoved |
                 NSTrackingActiveAlways);
      trackingArea = [[NSTrackingArea alloc] initWithRect:rect
                                                  options:options
                                                    owner:(id)self
                                                 userInfo:nil];
      [self addTrackingArea:trackingArea];
    }

  return self;
}

-(void)setInputArea:(const cairo_rectangle_int_t *)area
{
  NSRect rect = NSMakeRect (area->x, area->y, area->width, area->height);
  NSTrackingAreaOptions options;

  [self removeTrackingArea:trackingArea];

  options = (NSTrackingMouseEnteredAndExited |
             NSTrackingMouseMoved |
             NSTrackingActiveAlways);
  trackingArea = [[NSTrackingArea alloc] initWithRect:rect
                                              options:options
                                                owner:(id)self
                                             userInfo:nil];
  [self addTrackingArea:trackingArea];
}

-(void)setOpaqueRegion:(cairo_region_t *)region
{
  /* Handled in Subclass */
}

-(BOOL)acceptsFirstMouse
{
  return YES;
}

-(BOOL)mouseDownCanMoveWindow
{
  return NO;
}

-(BOOL)acceptsFirstResponder
{
  GDK_DEBUG (EVENTS, "acceptsFirstResponder");
  return YES;
}

-(BOOL)becomeFirstResponder
{
  GDK_DEBUG (EVENTS, "becomeFirstResponder");
  return YES;
}

-(BOOL)resignFirstResponder
{
  GDK_DEBUG (EVENTS, "resignFirstResponder");
  return YES;
}

-(void)setNeedsInvalidateShadow: (BOOL)invalidate
{
  needsInvalidateShadow = invalidate;
}

-(NSTrackingArea *)trackingArea
{
  return trackingArea;
}

-(GdkMacosSurface *)gdkSurface
{
  return [(GdkMacosWindow *)[self window] gdkSurface];
}

-(GdkMacosDisplay *)gdkDisplay
{
  GdkMacosSurface *surface = [self gdkSurface];
  GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (surface));

  return GDK_MACOS_DISPLAY (display);
}

-(void)keyDown:(NSEvent *)theEvent
{
  /* NOTE: When user press Cmd+A, interpretKeyEvents: will call noop:
   * method. When user press and hold A to show the accented char window,
   * it consumed repeating key down events for key 'A' do NOT call
   * any other method. We use this behavior to determine if this key
   * down event is filtered by interpretKeyEvents.
   */

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_FILTERED));

  GDK_DEBUG (EVENTS, "keyDown");
  [self interpretKeyEvents: [NSArray arrayWithObject: theEvent]];
}

-(void)flagsChanged: (NSEvent *)theEvent
{
}

-(NSUInteger)characterIndexForPoint:(NSPoint)aPoint
{
  GDK_DEBUG (EVENTS, "characterIndexForPoint");
  return 0;
}

-(NSRect)firstRectForCharacterRange:(NSRange)aRange actualRange: (NSRangePointer)actualRange
{
  GdkRectangle *rect;

  GDK_DEBUG (EVENTS, "firstRectForCharacterRange");

  if ((rect = g_object_get_data (G_OBJECT ([self gdkSurface]), GIC_CURSOR_RECT)))
    {
      GdkMacosDisplay *display = [self gdkDisplay];
      int ns_x, ns_y;

      _gdk_macos_display_to_display_coords (display,
                                            rect->x, rect->y + rect->height,
                                            &ns_x, &ns_y);

      return NSMakeRect (ns_x, ns_y, rect->width, rect->height);
    }

  return NSMakeRect (0000);
}

-(NSArray *)validAttributesForMarkedText
{
  GDK_DEBUG (EVENTS, "validAttributesForMarkedText");
  return [NSArray arrayWithObjects: NSUnderlineStyleAttributeName, nil];
}

-(NSAttributedString *)attributedSubstringForProposedRange: (NSRange)aRange actualRange: (NSRangePointer)actualRange
{
  GDK_DEBUG (EVENTS, "attributedSubstringForProposedRange");
  return nil;
}

-(BOOL)hasMarkedText
{
  GDK_DEBUG (EVENTS, "hasMarkedText");
  return markedRange.location != NSNotFound && markedRange.length != 0;
}

-(NSRange)markedRange
{
  GDK_DEBUG (EVENTS, "markedRange");
  return markedRange;
}

-(NSRange)selectedRange
{
  GDK_DEBUG (EVENTS, "selectedRange");
  return selectedRange;
}

-(void)unmarkText
{
  GDK_DEBUG (EVENTS, "unmarkText");

  selectedRange = NSMakeRange (00);
  markedRange = NSMakeRange (NSNotFound, 0);

  g_object_set_data_full (G_OBJECT ([self gdkSurface]), TIC_MARKED_TEXT, NULL, g_free);
}

-(void)setMarkedText:(id)aString selectedRange: (NSRange)newSelection replacementRange: (NSRange)replacementRange
{
  const char *str;

  GDK_DEBUG (EVENTS, "setMarkedText");

  if (replacementRange.location == NSNotFound)
    {
      markedRange = NSMakeRange (newSelection.location, [aString length]);
      selectedRange = NSMakeRange (newSelection.location, newSelection.length);
    }
  else
    {
      markedRange = NSMakeRange (replacementRange.location, [aString length]);
      selectedRange = NSMakeRange (replacementRange.location + newSelection.location, newSelection.length);
    }

  if ([aString isKindOfClass: [NSAttributedString class]])
    str = [[aString string] UTF8String];
  else
    str = [aString UTF8String];

  g_object_set_data_full (G_OBJECT ([self gdkSurface]), TIC_MARKED_TEXT, g_strdup (str), g_free);
  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     TIC_SELECTED_POS,
                     GUINT_TO_POINTER (selectedRange.location));
  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     TIC_SELECTED_LEN,
                     GUINT_TO_POINTER (selectedRange.length));

  GDK_DEBUG (EVENTS, "setMarkedText: set %s (%p, nsview %p): %s",
                     TIC_MARKED_TEXT, [self gdkSurface], self,
                     str ? str : "(empty)");

  /* handle text input changes by mouse events */
  if (!GPOINTER_TO_UINT (g_object_get_data (G_OBJECT ([self gdkSurface]), TIC_IN_KEY_DOWN)))
    _gdk_macos_surface_synthesize_null_key ([self gdkSurface]);
}

-(void)doCommandBySelector:(SEL)aSelector
{
  GDK_DEBUG (EVENTS, "doCommandBySelector");

  if ([self respondsToSelector: aSelector])
    [self performSelector: aSelector];
}

-(void)insertText:(id)aString replacementRange: (NSRange)replacementRange
{
  const char *str;
  NSString *string;

  GDK_DEBUG (EVENTS, "insertText");

  if ([self hasMarkedText])
    [self unmarkText];

  if ([aString isKindOfClass: [NSAttributedString class]])
    string = [aString string];
  else
    string = aString;

  NSCharacterSet *ctrlChars = [NSCharacterSet controlCharacterSet];
  NSCharacterSet *wsnlChars = [NSCharacterSet whitespaceAndNewlineCharacterSet];
  if ([string rangeOfCharacterFromSet:ctrlChars].length &&
      [string rangeOfCharacterFromSet:wsnlChars].length == 0)
    {
      /* discard invalid text input with Chinese input methods */
      str = "";
      [self unmarkText];
      [[NSTextInputContext currentInputContext] discardMarkedText];
    }
  else
   {
      str = [string UTF8String];
   }

  g_object_set_data_full (G_OBJECT ([self gdkSurface]), TIC_INSERT_TEXT, g_strdup (str), g_free);
  GDK_DEBUG (EVENTS, "insertText: set %s (%p, nsview %p): %s",
                     TIC_INSERT_TEXT, [self gdkSurface], self,
                     str ? str : "(empty)");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_FILTERED));

  /* handle text input changes by mouse events */
  if (!GPOINTER_TO_UINT (g_object_get_data (G_OBJECT ([self gdkSurface]), TIC_IN_KEY_DOWN)))
    _gdk_macos_surface_synthesize_null_key ([self gdkSurface]);
}

-(void)deleteBackward:(id)sender
{
  GDK_DEBUG (EVENTS, "deleteBackward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)deleteForward:(id)sender
{
  GDK_DEBUG (EVENTS, "deleteForward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)deleteToBeginningOfLine:(id)sender
{
  GDK_DEBUG (EVENTS, "deleteToBeginningOfLine");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)deleteToEndOfLine:(id)sender
{
  GDK_DEBUG (EVENTS, "deleteToEndOfLine");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)deleteWordBackward:(id)sender
{
  GDK_DEBUG (EVENTS, "deleteWordBackward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)deleteWordForward:(id)sender
{
  GDK_DEBUG (EVENTS, "deleteWordForward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)insertBacktab:(id)sender
{
  GDK_DEBUG (EVENTS, "insertBacktab");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)insertNewline:(id)sender
{
  GDK_DEBUG (EVENTS, "insertNewline");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)insertTab:(id)sender
{
  GDK_DEBUG (EVENTS, "insertTab");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveBackward:(id)sender
{
  GDK_DEBUG (EVENTS, "moveBackward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveBackwardAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveBackwardAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveDown:(id)sender
{
  GDK_DEBUG (EVENTS, "moveDown");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveDownAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveDownAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveForward:(id)sender
{
  GDK_DEBUG (EVENTS, "moveForward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveForwardAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveForwardAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveLeft:(id)sender
{
  GDK_DEBUG (EVENTS, "moveLeft");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveLeftAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveLeftAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveRight:(id)sender
{
  GDK_DEBUG (EVENTS, "moveRight");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveRightAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveRightAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToBeginningOfDocument:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToBeginningOfDocument");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToBeginningOfDocumentAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToBeginningOfDocumentAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToBeginningOfLine:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToBeginningOfLine");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToBeginningOfLineAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToBeginningOfLineAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToEndOfDocument:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToEndOfDocument");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToEndOfDocumentAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToEndOfDocumentAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToEndOfLine:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToEndOfLine");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveToEndOfLineAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveToEndOfLineAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveUp:(id)sender
{
  GDK_DEBUG (EVENTS, "moveUp");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveUpAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveUpAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordBackward:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordBackward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordBackwardAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordBackwardAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordForward:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordForward");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordForwardAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordForwardAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordLeft:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordLeft");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordLeftAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordLeftAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordRight:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordRight");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)moveWordRightAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "moveWordRightAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)pageDown:(id)sender
{
  GDK_DEBUG (EVENTS, "pageDown");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)pageDownAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "pageDownAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)pageUp:(id)sender
{
  GDK_DEBUG (EVENTS, "pageUp");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)pageUpAndModifySelection:(id)sender
{
  GDK_DEBUG (EVENTS, "pageUpAndModifySelection");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)selectAll:(id)sender
{
  GDK_DEBUG (EVENTS, "selectAll");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)selectLine:(id)sender
{
  GDK_DEBUG (EVENTS, "selectLine");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)selectWord:(id)sender
{
  GDK_DEBUG (EVENTS, "selectWord");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

-(void)noop: (id)sender
{
  GDK_DEBUG (EVENTS, "noop");

  g_object_set_data (G_OBJECT ([self gdkSurface]),
                     GIC_FILTER_KEY,
                     GUINT_TO_POINTER (GIC_FILTER_PASSTHRU));
}

@end

Messung V0.5 in Prozent
C=98 H=96 G=96

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-07-02) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.