Skip to content

Commit

Permalink
Versión 0.0.1
Browse files Browse the repository at this point in the history
Funciones agregadas:

libes
  imprimir
  escribir
  poner

libnucleoex
  establecer_modo_seguro
  modo_seguro_estado
  modo_seguro_forzado
  ultimo_error
  generar_error
  version

libruta
  crear_dir
  crear_directorio
  remover_dir
  remover_directorio
  listar_dir
  listar_directorio
  existe
  es_dir
  es_directorio
  es_archivo
  • Loading branch information
FrankC64 committed Mar 30, 2023
0 parents commit 190c776
Show file tree
Hide file tree
Showing 14 changed files with 2,141 additions and 0 deletions.
49 changes: 49 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

# archivos de cmake
CMakeFiles/
build/
CMakeCache.txt
cmake_install.cmake
install_manifest.txt

# compilados
*.so
*.dll
Makefile

# Otros
temp/
temp.*
test.*
77 changes: 77 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
################################################################################
# Para mas información de este archivo visite la pagina de cmake:
# https://cmake.org/documentation/
################################################################################

#Establece la versión mínima requerida de cmake para un proyecto.
cmake_minimum_required(VERSION 3.0.2)

#Establece un nombre para el proyecto
project (latino-libnucleoex)

option(MODO_SEGURO_FORZADO "Usar modo seguro forzado" OFF)
option(MODO_SEGURO "Usar modo seguro" OFF)

if(MODO_SEGURO_FORZADO)
add_definitions(-DMODO_SEGURO_FORZADO)
elseif(MODO_SEGURO)
add_definitions(-DMODO_SEGURO)
endif()

if(WIN32)
# Arquitectura del build
set(TARGET_ARCH_REGEX "^.*-march[= ]([^ ]+).*$")
string(REGEX MATCH "${TARGET_ARCH_REGEX}" TARGET_ARCH_MATCH "" "" ${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS})
if(TARGET_ARCH_MATCH)
string(REGEX REPLACE "${TARGET_ARCH_REGEX}" "\\1" TARGET_ARCH ${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS})
else()
set(TARGET_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR})
endif()

# Establecer paths donde se instalo latino
set(LATINO_PATH "$ENV{LATINO_PATH}/bin" CACHE FILEPATH "Ruta de instalacion de latino.exe")
set(LATINO_LIBC "$ENV{LATINO_LIBC}" CACHE FILEPATH "Ruta de instalacion de latino.dll")
set(LATINO_INCLUDE "$ENV{LATINO_PATH}/include" CACHE FILEPATH "Ruta de instalacion de latino/include")

# Enlazar
include_directories(${LATINO_INCLUDE} "include")
link_directories(${LATINO_PATH})

message(STATUS "TARGET_ARCH: ${TARGET_ARCH}")
message(STATUS "LATINO_PATH: ${LATINO_PATH}")
message(STATUS "LATINO_INCLUDE: ${LATINO_INCLUDE}")
message(STATUS "LATINO_LIBC: ${LATINO_LIBC}")
else()
include_directories("include")
endif()

# msys
if(MSYS)
# Path en donde esta instalado latino
LINK_DIRECTORIES("/d/work/lenguaje-latino/latino/msys2")
endif()

set(SRC_FILES src/latino-libnucleoex.c src/latino-libtipos.c src/latino-libruta.c src/latino-libes.c)

#Agrega una biblioteca al proyecto utilizando los
if(MINGW)
#archivos de origen especificados.
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--allow-multiple-definition")
add_library(latino-libnucleoex SHARED ${SRC_FILES})
target_link_libraries(latino-libnucleoex ${LATINO_PATH}/latino.dll)
else()
#archivos de origen especificados.
add_library(latino-libnucleoex SHARED ${SRC_FILES})

#Vincula un objetivo a bibliotecas determinadas.
target_link_libraries(latino-libnucleoex latino)
endif()

#Especifica las reglas que se ejecutarán en el momento de la instalación.
# Especifica las reglas que se ejecutarán en el momento de la instalación.
if(WIN32)
install(TARGETS latino-libnucleoex DESTINATION ${LATINO_PATH})
else()
install(TARGETS latino-libnucleoex DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
endif()
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2023 FrankC64

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
165 changes: 165 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# latino-lib-nucleoex
latino-lib-nucleoex es una extensión para Latino, la cual integra más funciones para expandir las capacidades del lenguaje.

<a name="tabla"></a>
## Tabla de contenidos
* [Tabla de contenidos](#tabla)
* [Instalación](#instalacion)
* [Instalación (LAP)](#instalacion_lap)
* [Instalación manual](#instalacion_manual)
* [Compilación](#compilacion)
* [Windows](#windows)
* [MinGW](#mingw)
* [Visual Studio](#visual_studio)
* [Linux](#linux)
* [Wiki](#wiki)

<a name="instalacion"></a>
## Instalación
Antes de comenzar, debe saber que la instalación **SIN COMPILACIÓN** es exclusivamente para la versión **1.4.0** de Latino en **Windows**, por lo que si usted tiene una versión superior o inferior o se encuentra en un sistema que no sea Windows debe consultar el apartado de [compilación](#compilacion).

<a name="instalacion_lap"></a>
### Instalación (LAP)
El primer método de instalación es a través del administrador de paquetes **LAP**. Antes de continuar debe tener **Python** instalado.

**1-** Instalamos el administrador de paquetes con **pip**.
```Batch
pip install LAP-latino-client
```

**2-** Nos ubicamos en la carpeta donde está nuestro proyecto, en caso contrario la librería será instalada fuera del alcance de Latino.

**3-** Utilizamos **LAP** para instalar la librería.
```Batch
python -m LAP instalar latino-lib-nucleox
```

**4-** En la parte superior de su script de Latino ponga lo siguiente:
```Latino
incluir("libnucleoex")
```

Y ya está todo listo para utilizar la librería.

<a name="instalacion_manual"></a>
### Instalación manual
Aquí se muestra paso a paso la forma de instalar la librería en caso de no tener **Python** o no querer utilizar el administrador de paquetes **LAP**.

**1-** Haga click [aquí](https://github.com/FrankC64/latino-lib-nucleox/releases/latest/download/latino-lib-nucleox.zip) para descargar la última versión.

**2-** Vaya a la carpeta de instalación de Latino y en la subcaperta "bin" extraiga **latino-libnucleoex.dll**.

**3-** En la parte superior de su script de Latino ponga lo siguiente:
```Latino
incluir("libnucleoex")
```

Y ya está todo listo para utilizar la librería.

<a name="compilacion"></a>
## Compilación

<a name="windows"></a>
### Windows

**Requisitos:**
* Tener instalado [cmake](https://cmake.org/download/).
* Tener instalado [git](https://git-scm.com/download/win).
* Tener la siguiente variable de entorno:
```
LATINO_PATH=C:\ruta_de_instalacion_de_latino
```
En caso de no tenerla deberá agregarla en las variables de entorno de Windows.
<a name="mingw"></a>
**Compilación (MinGW):**<br>
Ejecutar lo siguiente en su consola/terminal:
```
git clone https://github.com/FrankC64/latino-lib-nucleoex.git
cd latino-lib-nucleoex
mkdir build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..\
mingw32-make install
```
<a name="visual_studio"></a>
**Compilación (Visual Studio):**<br>
Ejecutar lo siguiente en su consola/terminal:
```
git clone https://github.com/FrankC64/latino-lib-nucleoex.git
cd latino-lib-nucleoex
mkdir build
cd build
cmake -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release ..\
cmake --build . --target install --config Release
```
<a name="linux"></a>
### Linux
**Requisitos:**<br>
Antes de comenzar ejecute uno de los siguientes comandos en la terminal dependiendo de su sistema:
* Debian / Ubuntu
```Bash
sudo apt-get install cmake git
```
* Arch
```Bash
sudo pacman -S cmake git
```
* Fedora / CentOS
```Bash
sudo dnf -y install cmake git
```
**Compilación:**<br>
Ejecutar lo siguiente en la terminal:
```
git clone https://github.com/FrankC64/latino-lib-nucleoex.git
cd latino-lib-nucleoex
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ../
sudo make install
```
<a name="wiki"></a>
## Wiki
Click [aquí](https://github.com/FrankC64/latino-lib-nucleox/wiki) para conocer las funciones de la librería.
## Preguntas y respuestas
\- **¿Qué es el modo seguro?**<br>
Como actualmente no existe la forma de controlar errores y excepciones en Latino se implementó una funcionalidad para evitar que los errores producidos por la librería detenga el funcionamiento del código y el programador pueda tomar una decisión de qué hacer en caso de que se produzcan estos errores.
\- **¿Cómo compilo la librería para usar el modo seguro de forma predeterminada o forzada?**<br>
Al momento de utilizar el comando **cmake** ponga como instrucción lo siguiente:
```
-DMODO_SEGURO=1
```
en caso de que quiera que por defecto el modo seguro esté habilitado y
```
-DMODO_SEGURO_FORZADO=1
```
en caso de que desee que el modo seguro esté siempre habilitado y no se pueda modificar desde Latino.
\- **Estoy usando Linux y Latino no carga la librería.**<br>
Si esto le sucede deberá escribir el siguiente comando en su terminal:
```
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
```
Y el problema será solucionado. Si quiere una solución definitiva ejecute el siguiente comando:
```
echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.profile
```
Y reinicie su sistema para que se aplique el cambio correctamente.
13 changes: 13 additions & 0 deletions ejemplo.lat
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// incluye el modulo en latino
incluir("libnucleoex")

libes.imprimir("libnucleoex versión: " .. libnucleoex.version() .. "\n")

imprimir("Creamos test.")
libruta.crear_dir("test")

imprimir("test existe: " .. libruta.existe("test"))

imprimir("Eliminanos a test.")
libruta.remover_dir("test")
imprimir("test existe: " .. libruta.existe("test"))
Loading

0 comments on commit 190c776

Please sign in to comment.