gCAD3D 2.40
xa_ato.c File Reference

functions handling atomicObjects. More...

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>
#include "../ut/ut_geo.h"
#include "../ut/ut_gtypes.h"
#include "../ut/ut_txt.h"
#include "../ut/ut_txTab.h"
#include "../ut/ut_memTab.h"
#include "../ut/ut_BitTab.h"
#include "../db/ut_DB.h"
#include "../xa/xa_ed_mem.h"
#include "../xa/xa_mem.h"
#include "../xa/xa_ato.h"
#include "../xa/xa_sele.h"
#include "../gui/gui__.h"

Functions

int ATO_ato_srcLn_exp (ObjAto *ato, int *typ, double *val, char *srcLn)
 
int ATO_ato_expr_add (ObjAto *ato, int typ, double val, int lev)
 
int ATO_dump__ (ObjAto *ato, char *txt)
 
int ATO_malloc (ObjAto *ato, int sizTab)
 
int ATO_free (ObjAto *ato)
 
int ATO_del_rec (ObjAto *ato, int iDel)
 
void ATO_tmpSpc_get1 (ObjAto *ato1, int bNr)
 
int ATO_getSpc_siz (int sizTab)
 
void ATO_getSpc_tmp1 (ObjAto *ato, int sizTab)
 
int ATO_ato_typTab (ObjAto *ato, int aus_anz, int aus_typ[], double aus_tab[])
 
int ATO_ato_atoTab__ (int *aTyp, double *aVal, ObjAto *ato)
 
int ATO_ato_expr__ (ObjAto *ato, char *exp, int sLen)
 
int ATO_getSpc__ (ObjAto *ato1)
 
int ATO_sort1 (int oNr, int *oTyp, double *oVal)
 
int ATO_srcTxt (int *atoTyp, double *atoVal, char *cmd)
 
int ATO_swap (int aus_typ[], double aus_tab[], int i1, int i2)
 
int ATO_cpy_rec (ObjAto *ato, int iTo, int iFrom)
 
int ATO_clear_block (ObjAto *ato, int is, int bNr)
 
int ATO_clean__ (ObjAto *ato)
 
int ATO_pNr__ (int *iSta, ObjAto *ato)
 
int ATO_ato_eval_geom (ObjAto *ato, int iif)
 
int ATO_ato_eval__ (ObjAto *ato)
 
int ATO_eval_ope__ (ObjAto *ato)
 
int ATO_eval_fnc1__ (ObjAto *ato)
 
int ATO_ato_txo__ (ObjAto *ato, ObjTXTSRC *tso, char *sl)
 
int ATO_ato_srcLn__ (ObjAto *ato, char *srcLn)
 
int ATO_ato_obj_pt (ObjAto *ato, int outTyp, int iseg, int typ, void *o1, Point *ptx)
 
int ATO_parents__ (MemTab(ObjSRC)*mtPar, ObjAto *ato)
 

Variables

char * ObjCodTab []
 
double NcoValTab []
 

Detailed Description

functions handling atomicObjects.

=====================================================
List_functions_start:
ATO_ato_srcLn__ get atomicObjects from sourceLine; full evaluated.
ATO_ato_txo__ get atomic-objects from source-objects
ATO_ato_expr_add add ato to ato-table
ATO_swap swap 2 records
ATO_del_rec delete record
ATO_clear__ delete all records
ATO_clear_block delete block of records
ATO_clean__ make clean atomicObjects from ato (use ATO_clean_1)
ATO_clean_1 close all gaps (typ == Typ_NULL)
ATO_cpy_rec copy ATO-record iTo = iFrom, delete iFrom
ATO_sort1 sort types ascending
ATO_pNr__ get nr of parameters following record
ATO_parents__ get all parents of obj (index into ato)
// ATO_ato_srcLn_exp DO NOT USE get/add ato as typ/val from modelCode
// ATO_ato_atoTab__ DO NOT USE get single dbo from ato
// ATO_ato_expr__ DO NOT USE get struct from modelCode (text).
ATO_ato_typTab get atomicObjects from aus_typ/aus_tab (old version)
ATO_ato_eval__ evaluate atomic-objects (compute); reduce records.
ATO_ato_eval_geom evaluate geometrical functions
ATO_ato_obj_pt get parametric position of point on obj
ATO_srcTxt get atomicObj from Typ_Txt (after AP_typ_srcExpr)
ATO_malloc get memspace for atomicObjects
ATO_tmpSpc_get__ get memspace on stack or heap for active func only
ATO_tmpSpc_get_s get memspace for atomicObjects (string)
ATO_getSpc_tmp__ get temp - memspace for atomicObjects
ATO_getSpc__ get memSpc for atomicObjects (memspc53/54/55)
ATO_getSpc_siz compute necessary space for type/value-table
ATO_dump__ dump ato-table
List_functions_end:
=====================================================
for txo-funcs see APED
see also:
APT_obj_ato create struct from atomicObjs
obsolete:
// ATO_getSpc1 get memSpc for atomicObjects - simple

Function Documentation

int ATO_ato_srcLn_exp ( ObjAto ato,
int *  typ,
double *  val,
char *  srcLn 
)
int ATO_ato_expr_add ( ObjAto ato,
int  typ,
double  val,
int  lev 
)
* add ato to ato-table
* Example: ATO_ato_expr_add (&ato, Typ_PT, 20., 0);
*
int ATO_dump__ ( ObjAto ato,
char *  txt 
)
int ATO_malloc ( ObjAto ato,
int  sizTab 
)
int ATO_free ( ObjAto ato)
int ATO_del_rec ( ObjAto ato,
int  iDel 
)
void ATO_tmpSpc_get1 ( ObjAto ato1,
int  bNr 
)

ATO_tmpSpc_get get memspace on stack or heap for active func only if(!ato1->typ) ERROR if(ato1->spcTyp < 3) must free at end of calling func - ATO_tmpSpc_free

int ATO_getSpc_siz ( int  sizTab)

compute necessary space for ato.typ/val/ilev

void ATO_getSpc_tmp1 ( ObjAto ato,
int  sizTab 
)
* set ato.typ,val,ilev at memPos from ato.typ
* aux.Func for ATO_getSpc_tmp__
*
int ATO_ato_typTab ( ObjAto ato,
int  aus_anz,
int  aus_typ[],
double  aus_tab[] 
)
int ATO_ato_atoTab__ ( int *  aTyp,
double *  aVal,
ObjAto ato 
)
int ATO_ato_expr__ ( ObjAto ato,
char *  exp,
int  sLen 
)
int ATO_getSpc__ ( ObjAto ato1)
* ATO_getSpc get memSpc for atomicObjects
*
int ATO_sort1 ( int  oNr,
int *  oTyp,
double *  oVal 
)

sort types ascending

int ATO_srcTxt ( int *  atoTyp,
double *  atoVal,
char *  cmd 
)
int ATO_swap ( int  aus_typ[],
double  aus_tab[],
int  i1,
int  i2 
)

ATO_swap swap 2 records see also ATO_cpy_rec

int ATO_cpy_rec ( ObjAto ato,
int  iTo,
int  iFrom 
)
int ATO_clear_block ( ObjAto ato,
int  is,
int  bNr 
)
* ATO_clear_block delete block of records
* Input:
* is index of 1. record to delete
* bNr nr of records to delete
*
int ATO_clean__ ( ObjAto ato)
int ATO_pNr__ ( int *  iSta,
ObjAto ato 
)
int ATO_ato_eval_geom ( ObjAto ato,
int  iif 
)
* evaluate geometrical functions
* geom-func: P(2) L,C,D,R,S,U(121) ANG(137) X(134) Y,Z ..
* Input:
* iif startindex in ato
* Output:
* ato ?
* Retcod: 0 = no geom.func; 1 = function evaluated; -1 = error
* see APT_decode_func ../ci/NC_apt.c :16974
*
int ATO_ato_eval__ ( ObjAto ato)
* evaluate atomic-objects (compute); reduce records.
* math-func: SQRT(290) SIN...
* geom-func: P(2) L,C,D,R,S,U(121) ANG(137) X(134) Y,Z
* loop tru all levels(highest first), evaluate ..
* Record inaktiv setzen (Typ=Typ_NULL); ganz am Ende kompaktieren.
* Input, Output: ato.
*
int ATO_eval_ope__ ( ObjAto ato)
* evaluate math.operators (+-*/)
* 3 records Typ_Val/MathOperator/Typ_Val into 1 record Typ_Val.
* Retcode: nr of evaluations
*
int ATO_eval_fnc1__ ( ObjAto ato)
int ATO_ato_txo__ ( ObjAto ato,
ObjTXTSRC tso,
char *  sl 
)
* get atomic-objects from source-objects
* Input:
* tso
* sl srcTxt
* Output:
* ato
*
int ATO_ato_srcLn__ ( ObjAto ato,
char *  srcLn 
)
* get atomicObjects from sourceLine; full evaluated.
* (provides dynamic-DB-obj's for geometric expressions)
* must provide memspc before with ATO_getSpc__
* Input:
* srcLn eg "D(0 0 1)" // may not have objNames !
* ato free space for atomic-objs
* Output:
* ato eg ato->nr=1; ato->typ[0]=Typ_VC; ato->val[0]=-2.;
* RetCod 0=OK, -1=Err
* Example:
* ATO_getSpc__ (&ato);
* i1 = ATO_ato_srcLn__ (&ato, s1);
* ATO_dump__ (&ato, " after _ato_srcLn__");
*
int ATO_ato_obj_pt ( ObjAto ato,
int  outTyp,
int  iseg,
int  typ,
void *  o1,
Point ptx 
)
int ATO_parents__ ( MemTab(ObjSRC)*  mtPar,
ObjAto ato 
)

Variable Documentation

char* ObjCodTab[]
double NcoValTab[]